11.2. 升级 Ansible Automation Platform

11.2.1. 拉取 ansible-on-clouds-ops 容器镜像

流程

  • 在云操作容器上拉取 Ansible 的 Docker 镜像,其标签与您要升级到的版本相同。

    注意

    在拉取 docker 镜像前,请确保使用 docker 登录到 registry.redhat.io。使用以下命令登录到 registry.redhat.io。

    $ docker login registry.redhat.io

    有关 registry 登录的更多信息,请参阅 Registry 身份验证

    注意

    Clouds 操作镜像标签上的 Ansible 必须与您要升级到的版本匹配。例如,如果您的基础部署版本为 2.3.20230221,请使用标签 2.4.20230630 拉取操作镜像,以升级到 2.4.20230630 版本。

    $ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630
    $ docker pull $IMAGE --platform=linux/amd64

11.2.2. 所需权限

您必须具有以下 GCP IAM 权限才能升级堆栈:

required-roles:
  - Service Account User
  - Compute Instance Admin (v1)
required-permissions:
  - compute.healthChecks.update
  - compute.healthChecks.use
  - compute.healthChecks.useReadOnly
  - compute.regionBackendServices.update
  - iap.tunnelInstances.accessViaIAP
  - runtimeconfig.variables.get
  - secretmanager.locations.get
  - secretmanager.locations.list
  - secretmanager.secrets.create
  - secretmanager.secrets.delete
  - secretmanager.secrets.get
  - secretmanager.secrets.list
  - secretmanager.secrets.update
  - secretmanager.versions.access
  - secretmanager.versions.add
  - secretmanager.versions.disable
  - secretmanager.versions.enable
  - secretmanager.versions.get
  - secretmanager.versions.list

11.2.3. 生成数据文件

本节中的命令会创建一个目录,并使用在升级过程中使用填充时的空数据模板填充。

流程

  1. 运行以下命令以生成所需的数据文件。

    # Create a folder to hold the configuration files
    $ mkdir command_generator_data
  2. 使用配置文件模板填充 command_generator_data 文件夹。

    注意

    在 Linux 上,命令生成器创建的任何文件或目录默认归 root:root 所有。要更改文件和目录的所有权,您可以在创建文件后运行 sudo chmod 命令。如需更多信息,请阅读 命令生成器 - 由 root 拥有的 Linux 文件

    $ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \
    command_generator_vars gcp_upgrade \
    --output-data-file /data/extra_vars.yml
  3. 运行这些命令后,会创建一个 command_generator_data/extra_vars.yml 模板文件。此模板文件类似于以下内容:

    gcp_upgrade:
      ansible_config_path:
      cloud_credentials_path:
      deployment_name:
      extra_vars:
        gcp_backup_taken:
        gcp_compute_region:
        gcp_compute_zone:

11.2.4. 更新数据文件

在触发升级前,您必须填充数据文件。每个参数都需要,除非将其标记为可选。如果该参数为可选,可以从数据文件中删除其键和值。

  • ansible_config_path (可选)仅在使用自定义 ansible_config 覆盖时使用。
  • cloud_credentials_path 是 GCP 凭证文件的路径。
  • DEPLOYMENT_NAME 是基础部署的名称。

    • 这是部署基础时使用的相同名称。
  • gcp_backup_taken 是最近在运行此升级前创建的手动备份当前部署的验证。此处使用 true 验证最近的备份是否已创建。
  • gcp_compute_region 是部署基础部署时提供的 GCP 区域。如果您在部署基础时未提供区域,请在此处使用默认区域 us-east1
  • gcp_compute_zone 是部署基础部署时提供的 GCP 区。如果您在部署基础时未提供区域,请在此处使用默认的 us-east1-b

填充数据文件后,它应类似于以下内容:

以下示例提供了以下值:

gcp_upgrade:
  ansible_config_path:
  cloud_credentials_path: ~/secrets/GCP-secrets.json
  deployment_name: AnsibleAutomationPlatform
  extra_vars:
    gcp_backup_taken: true
    gcp_compute_region: us-east1
    gcp_compute_zone: us-east1-b

11.2.5. 运行升级 playbook

注意

Ansible Automation Platform 升级到 2.4.20230630 更新其内部负载均衡器的协议。如果在安装后添加了额外的网络配置,它们可能需要更新以确保连接。如需更多信息,请参阅升级 备注

  1. 要运行升级,请运行命令生成器来生成 upgrade CLI 命令:

    $ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator --data-file /data/extra_vars.yml

    这会生成以下命令:

    -----------------------------------------------
    docker run --rm --env PLATFORM=GCP -v ~/secrets/GCP-secrets.json:/home/runner/.gcp/credentials:ro
    --env ANSIBLE_CONFIG=../gcp-ansible.cfg
    --env DEPLOYMENT_NAME=AnsibleAutomationPlatform
    --env GENERATE_INVENTORY=true  $IMAGE redhat.ansible_on_clouds.gcp_upgrade \
    -e 'gcp_deployment_name=AnsibleAutomationPlatform \
    gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials \
    gcp_compute_region=us-east1 gcp_compute_zone=us-east1-b gcp_backup_taken=True'
    ===============================================
  2. 运行给定的 upgrade 命令以触发升级。

    $ docker run --rm --env PLATFORM=GCP -v ~/secrets/GCP-secrets.json:/home/runner/.gcp/credentials:ro \
    --env ANSIBLE_CONFIG=../gcp-ansible.cfg \
    --env DEPLOYMENT_NAME=AnsibleAutomationPlatform \
    --env GENERATE_INVENTORY=true  $IMAGE redhat.ansible_on_clouds.gcp_upgrade \
    -e 'gcp_deployment_name=AnsibleAutomationPlatform \
    gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials \
    gcp_compute_region=us-east1 gcp_compute_zone=us-east1-b gcp_backup_taken=True'
  3. 升级可能需要一些时间才能完成,但根据系统中的扩展节点数量,可能需要更长的时间。以下日志会标记成功升级。

    TASK [redhat.ansible_on_clouds.standalone_gcp_upgrade : [upgrade] Show GCP current version] ***
    ok: [localhost] => {
        "msg": "gcp_current_version: 2.3.20230221-00"
    }
  4. 来自 GCP Marketplace 部署的 Ansible Automation Platform 现在已升级到更新的版本,您可以使用部署凭证登录到 Red Hat Ansible Automation Platform 自动化控制器和自动化中心。