stafwag.cloud_localds
Ansible角色:cloud_localds
一个用于创建cloud-init配置磁盘映像的Ansible角色。这个角色是对cloud-localds
命令的封装。
需求
需要安装cloud-localds。
支持的GNU/Linux发行版
该角色应该适用于大多数GNU/Linux发行版。
cloud-localds
是必需的。cloud-localds
在CentOS/RedHat 7上可用,但在RedHat 8上不可用。要在CentOS/RedHat 8上使用该角色,您需要手动安装它。
- Archlinux
- Debian
- CentOS 7
- RedHat 7
- Ubuntu
角色任务、标签、变量和模板
任务
install
所有与安装相关的任务都在
install
剧本中定义。这使您可以通过include_role
、import_role
等Ansible模块中的tasks_from
安装所需的软件包并启动/启用所需的服务。请参见下面的示例。
标签
install
安装所需的软件包。
与剧本相关的变量
- cloud_localds: "命名空间"
- dest: 目标映像
- hostname: 主机名
- dir: 可选,默认值:
/var/lib/libvirt/images
。当未定义dest时的目标目录。 - config: 用户数据配置
- network_config: 网络配置
- config_template: 使用Ansible模板进行用户数据配置。
- network_config_template: 使用Ansible模板进行网络配置。
- owner: uid 默认值0 目标映像的文件所有者
- group: gid 默认值0 目标映像的文件组所有者
- mode: 模式 默认值 '0400' 目标映像的权限
- overwrite: 布尔值 默认值:false 如果目标iso已存在,则覆盖。
该角色创建一个带有cloud-init配置的iso磁盘映像。
当cloud_localds.dest
被定义时,将创建以下文件:
- {{ cloud_localds.dest }}_config.yml cloud-init用户数据
- {{ cloud_localds.dest }}_net_config.yml cloud-init网络配置(如果定义了network_config)
- {{ cloud_localds.dest }} 带有cloud-init配置的iso映像。
当cloud_localds.dest未定义时,需要定义cloud_localds.hostname。在这种情况下,将创建以下文件:
- {{ cloud_localds.dir }}/{{ cloud_localds.hostname }}_config.yml cloud-init用户数据
- {{ cloud_localds.dir }}/{{ cloud_localds.hostname }}_net_config.yml cloud-init网络配置(如果定义了network_config)
- {{ cloud_localds.dir }}/{{ cloud_localds.hostname }}_cloud-init.iso:带有cloud-init配置的iso映像。
示例剧本
使用include_role安装cloud-localds包
---
- name: 安装libvirt及相关组件
gather_facts: true
hosts: all
become: true
tasks:
- name: 安装所需的包
include_role:
name: "{{ item }}"
tasks_from:
install
with_items:
- stafwag.libvirt
- stafwag.qemu_img
- stafwag.cloud_localds
tags:
- install
创建一个指定目标的cloud-init iso
- name: 创建config.iso
gather_facts: no
become: true
hosts: localhost
roles:
- role: stafwag.cloud_localds
vars:
cloud_localds:
dest: /var/lib/libvirt/images/tstdebian_cloudinit.iso
config: "{{ lookup('template','files/mytstdebian.j2') }}"
network_config: "{{ lookup('template','files/mytstdebian.j2') }}"
创建一个指定主机名的cloud-init iso
---
- name: 创建config.iso
gather_facts: no
become: true
hosts: localhost
roles:
- role: stafwag.cloud_localds
vars:
cloud_localds:
hostname: tstdebian
config: "{{ lookup('template','files/mytstdebian.j2') }}"
network_config: "{{ lookup('template','files/mytstdebian.j2') }}"
使用Ansible模板
---
- name: 创建config.iso
gather_facts: true
become: true
hosts: localhost
roles:
- role: stafwag.cloud_localds
vars:
cloud_localds:
hostname: tstdebian
config_template: "files/debian/debian.j2"
network_config_template: "files/debian/debian.j2"
许可证
MIT/BSD
作者信息
创建者:Staf Wagemakers,邮件:staf@wagemakers.be,网站:http://www.wagemakers.be。