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 参考(分支、标签、哈希),用于克隆。默认为HEADelements_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