stackhpc.os-images
注意:
此仓库不再维护 - 角色已移至Ansible集合,现在➡️ https://github.com/stackhpc/ansible-collection-openstack
OpenStack 镜像
此角色使用 disk-image-builder 生成来宾实例镜像,并使用 os_image
模块将其上传到 OpenStack。
要求
目标主机应该能够访问 OpenStack API。
客户端凭据应在环境中设置,或使用 clouds.yaml
格式。
您必须使用已启用系统站点包的 virtualenv,因为此角色依赖于通过包管理器安装的 Python 包,例如:
virtualenv --system-site-packages ~/venvs/dib
角色变量
os_images_package_dependencies_extra
:要在构建主机上安装的附加软件包列表。
os_images_cache
:用于缓存构建成果的目录路径。默认为 ~/disk_images
。
注意
:如果已有镜像被缓存,即使在配置中进行了更改,也不会构建新镜像。请使用 force_rebuild
标志以应用新的配置更改。
os_images_auth_type
:OpenStack 认证端点和凭据。默认为 password
。
os_images_auth
:OpenStack 认证端点和凭据。例如,字典形式:
auth_url
:Keystone 认证端点 URL。默认为OS_AUTH_URL
。project
:OpenStack 租户/项目。默认为OS_TENANT_NAME
。username
:OpenStack 用户名。默认为OS_USERNAME
。password
:OpenStack 密码。默认为OS_PASSWORD
。
os_images_region
:定义上传镜像的区域。默认为 None。
os_images_cacert
是可选的 CA 证书捆绑路径。
os_images_interface
是从服务目录获取的端点 URL 类型。可以是 public
、admin
或 internal
之一。
os_images_list
是一个 YAML 字典列表,其中 elements
和 image_url
互斥,每个包含:
name
:在 OpenStack 中使用的镜像名称。elements
:要合并到镜像中的 diskimage-builder 元素列表。image_url
:互联网上镜像位置的 URL。checksum
:验证下载镜像的校验和。格式::<checksum|url>。 env
:(可选)为 diskimage-builder 参数定义的环境变量字典,形式为KEY: VALUE
。packages
:(可选)要在镜像中安装的软件包列表。size
:(可选)镜像文件系统的大小。properties
:(可选)在 glance 镜像上设置的属性字典。常见镜像属性可在这里找到。type
:(可选)镜像类型。DIB 的默认值为 qcow2。镜像格式可在这里找到。force_rebuild
:(可选)布尔标志,指示是否始终构建镜像(即使之前已构建过同名镜像)。如果os_images_upload
设置为True
,则 glance 上的镜像将被替换。默认为os_images_force_rebuild
(如果未设置)。is_public
:(可选)镜像是否应设置为对所有项目可见或保持私有。owner
:(可选)上传镜像的项目 ID。
os_images_common
:在每个列出的镜像中包含的一组元素。默认为 cloud-init enable-serial-console stable-interface-names
。
os_images_dib_pkg_name
:可选地自定义在安装 diskimage-builder 时传递给 ansible.builtin.pip 模块的名称参数。这可以用于从版本控制中安装 diskimage-builder。
os_images_dib_version
:可选地设置要安装的 diskimage-builder 版本。默认情况下,没有限制。
os_images_git_elements
:可选的从 GitHub 拉取的元素列表,部署到本地以合并到镜像中。提供包含以下参数的字典列表:
repo
:要克隆的 git 仓库的 URL(如果尚不存在)local
:本地路径,以进行 git 克隆version
:可选的 git 参考(分支、标签、哈希),用于克隆。默认为HEAD
elements_path
:仓库内元素的可选相对路径。
os_images_elements
:可选的用于特定站点的 DIB 元素路径列表。
os_images_upload
:是否将构建的镜像上传到 Glance。默认为 True
。
os_images_force_rebuild
:是否强制重新构建 DIB 镜像。如果 os_images_upload
设置为 True
,则 glance 上的镜像将被新构建的镜像替换。默认为 False
。
os_images_public
:上传的镜像是否为公开。默认为 True
- 注意这需要管理员权限。
os_images_venv
:用于安装上传镜像的 Python 依赖的 virtualenv 路径。
os_images_dib_venv
:用于安装 DIB 以构建镜像的 virtualenv 路径。
os_images_promote
:是否退役旧镜像并推广新镜像。默认为 False
。
os_images_build
:是否构建镜像。
os_images_name_suffix
:在镜像推广过程中会被移除的镜像后缀,例如:-rc、-dev、-test 等。此功能对于推广是必需的。默认值为空。
os_images_hide
:是否在 Glance 列表中隐藏镜像。隐藏镜像可作为镜像退役/推广过程中的一个选项。默认为 False
。
依赖项
示例剧本
以下剧本生成一个来宾镜像并将其上传到 OpenStack:
---
- name: 生成来宾镜像并上传
hosts: openstack
roles:
- role: stackhpc.os-images
os_images_auth:
auth_url: "{{ lookup('env','OS_AUTH_URL') }}"
username: "{{ lookup('env','OS_USERNAME') }}"
password: "{{ lookup('env','OS_PASSWORD') }}"
project_name: "{{ lookup('env','OS_TENANT_NAME') }}"
os_images_list:
- name: FedoraCore
elements:
- fedora
- selinux-permissive
- alaska-extras
env:
DIB_ALASKA_DELETE_REPO: "y"
DIB_ALASKA_PKGLIST: "pam-python pam-keystone"
- name: FedoraAtomic27
image_url: https://ftp.icm.edu.pl/pub/Linux/dist/fedora-alt/atomic/stable/Fedora-Atomic-27-20180326.1/CloudImages/x86_64/images/Fedora-Atomic-27-20180326.1.x86_64.qcow2
properties:
os_distro: fedora-atomic
type: qcow2
作者信息
- Stig Telfer (stig@stackhpc.com)
ansible-galaxy install stackhpc.os-images