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 类型。可以是 publicadmininternal 之一。

os_images_list 是一个 YAML 字典列表,其中 elementsimage_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

作者信息

关于项目

Role to generate guest instance images and upload to OpenStack

安装
ansible-galaxy install stackhpc.os-images
许可证
apache-2.0
下载
201.6k
拥有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.