10.2. Ansible Automation Platform のアップグレード

10.2.1. ansible-on-clouds-ops コンテナーイメージのプル

手順

  • アップグレード先のバージョンと同じタグを持つ Ansible on Clouds 運用コンテナーの Docker イメージをプルします。

    注記

    Docker イメージをプルする前に、Docker を使用して registry.redhat.io にログインしていることを確認してください。以下のコマンドを使用して registry.redhat.io にログインします。

    $ docker login registry.redhat.io

    レジストリーのログインに関する詳細は、Registry Authentication を参照してください。

    注記

    Ansible on Clouds の運用イメージのタグが、アップグレード先のバージョンと一致している必要があります。たとえば、基盤デプロイメントのバージョンが 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

10.2.2. 必須のパーミッション

スタックをアップグレードするには、次の AWS IAM パーミッションが必要です。

required-roles:
  ec2:
    actions:
      - ec2:DescribeInstances
      - ec2:GetLaunchTemplateData
      - ec2:DescribeAccountAttributes
      - ec2:DescribeLaunchTemplates
      - ec2:CreateTags
      - ec2:RunInstances
      - ec2:DescribeInstanceTypes
      - ec2:DescribeSubnets
      - ec2:DeleteTags
      - ec2:DescribeRegions
      - ec2:DescribeAvailabilityZones
      - ec2:DeleteLaunchTemplate
      - ec2:DescribeTags
      - ec2:DescribeLaunchTemplateVersions
      - ec2:DescribeSecurityGroups
      - ec2:CreateLaunchTemplateVersion
      - ec2:CreateLaunchTemplate
      - ec2:DescribeVpcs
      - ec2:ModifyLaunchTemplate
    resources:
      - "*"
  iam:
    actions:
      - iam:ListRoleTags
      - iam:AttachRolePolicy
      - iam:PutRolePolicy
      - iam:AddRoleToInstanceProfile
      - iam:ListAttachedRolePolicies
      - iam:GetRole
      - iam:GetRolePolicy
      - iam:CreateInstanceProfile
      - iam:ListInstanceProfilesForRole
      - iam:PassRole
      - iam:GetInstanceProfile
      - iam:CreateServiceLinkedRole
    resources:
      - "*"
  secretsmanager:
    actions:
      - secretsmanager:DescribeSecret
      - secretsmanager:ListSecrets
      - secretsmanager:TagResource
      - secretsmanager:UntagResource
      - secretsmanager:CreateSecret
      - secretsmanager:GetSecretValue
      - secretsmanager:UpdateSecret
      - secretsmanager:GetResourcePolicy
    resources:
      - "*"
  ssm:
    actions:
      - ssm:StartSession
      - ssm:TerminateSession
    resources:
      - "*"
  autoscaling:
    actions:
      - autoscaling:DescribeAutoScalingGroups
      - autoscaling:UpdateAutoScalingGroup
      - autoscaling:DescribeInstanceRefreshes
      - autoscaling:DeleteTags
      - autoscaling:DescribeTags
      - autoscaling:CreateOrUpdateTags
      - autoscaling:CreateAutoScalingGroup
      - autoscaling:DescribeLaunchConfigurations
      - autoscaling:DescribeLifecycleHooks
      - autoscaling:StartInstanceRefresh
      - autoscaling:CreateLaunchConfiguration
      - autoscaling:DisableMetricsCollection
      - autoscaling:DeleteLaunchConfiguration
      - autoscaling:DetachLoadBalancerTargetGroups
      - autoscaling:AttachLoadBalancerTargetGroups
    resources:
      - "*"
  s3:
    actions:
      - s3:DeleteObject
      - s3:PutObject
      - s3:GetObject
      - s3:GetBucketLocation
    resources:
      - "*"
  cloudformation:
    actions:
      - cloudformation:ListStackResources
      - cloudformation:DescribeStacks
      - cloudformation:GetTemplate
    resources:
      - "*"
  elasticloadbalancing:
    actions:
      - elasticloadbalancing:DescribeTargetGroupAttributes
      - elasticloadbalancing:DescribeTags
      - elasticloadbalancing:DescribeTargetHealth
      - elasticloadbalancing:DescribeTargetGroups
      - elasticloadbalancing:ModifyTargetGroup
      - elasticloadbalancing:DescribeLoadBalancers
      - elasticloadbalancing:DescribeLoadBalancerAttributes
      - elasticloadbalancing:DescribeListeners
      - elasticloadbalancing:CreateListener
      - elasticloadbalancing:DeleteListener
      - elasticloadbalancing:DescribeRules
      - elasticloadbalancing:DeleteTargetGroup
      - elasticloadbalancing:CreateTargetGroup
      - elasticloadbalancing:ModifyTargetGroupAttributes
      - elasticloadbalancing:AddTags
      - elasticloadbalancing:RemoveTags
    resources:
      - "*"

10.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 aws_upgrade \
    --output-data-file /data/extra_vars.yml
  3. これらのコマンドを実行すると、command_generator_data/extra_vars.yml テンプレートファイルが作成されます。このテンプレートファイルは以下のようになります。

    aws_upgrade:
      ansible_config_path:
      cloud_credentials_path:
      deployment_name:
      extra_vars:
        aws_backup_taken:
        aws_region:
        aws_ssm_bucket_name:
        seller_name:

10.2.4. データファイルの更新

アップグレードを開始する前に、データファイルを設定する必要があります。任意と記載されていない限り、各パラメーターは必須です。パラメーターが任意と指定されている場合は、そのキーと値の両方をデータファイルから削除できます。

次の変数は、データファイルにリストされているパラメーターです。

  • ansible_config_path (オプション) は、カスタムの ansible_config でオーバーライドする場合にのみ使用します。
  • cloud_credentials_path は、AWS 認証情報ファイルへのパスです。
  • deployment_name は、基盤デプロイメントの名前です。

    • これは、基盤をデプロイしたときに使用した名前と同じです。
  • aws_backup_taken は、このアップグレードを実行する前に、現在のデプロイメントの手動バックアップが最近作成されたことを確認するものです。
  • aws_region は、基盤デプロイメントが置かれている AWS リージョンです。
  • aws_ssm_bucket_name は、AWS SSM の一時設定ファイルが保存されている S3 バケットの名前です。既存のバケットを使用することも、新しいバケットを作成することもできます。

    注記

    aws_ssm_bucket_name パラメーターは、一時設定ファイルを保存するためにのみ使用されます。他の Playbook で使用するために保存する必要はありません。有効な既存のバケットであればどれでも使用できます。S3 バケットの作成の詳細は、AWS ドキュメントの AWS Creating A Bucket を参照してください。

    バケット名に大文字を含めることはできません。

  • seller_name (任意) は、AWS Marketplace の販売者を指定するために使用されます。デフォルト値は redhatinc です。EMEA に拠点を置き、redhatlimited AWS Marketplace 販売者を通じてこのオファリングを購入した場合は、この値が redhatlimited に設定されていることを確認してください。

データファイルを入力すると、次のようになります。

次の値は例です。

aws_upgrade:
  ansible_config_path:
  cloud_credentials_path: ~/.aws/credentials
  deployment_name: AnsibleAutomationPlatform
  extra_vars:
    aws_backup_taken: true
    aws_region: us-east-1
    aws_ssm_bucket_name: aap-ssm-bucket
    seller_name: redhatinc

10.2.5. アップグレード Playbook の実行

注記

Ansible Automation Platform を 2.4.20230630 にアップグレードすると、内部ロードバランサーのリスナーが更新されます。インストール後にリソースの依存関係を追加してからアップグレードを成功させるには、これを一時的に削除する必要があります。詳細は、テクニカルノート を参照してください。

  1. アップグレードを実行するために、コマンドジェネレーターを実行してアップグレード CLI コマンドを生成します。

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

    これにより、次のアップグレードコマンドが生成されます。

    -----------------------------------------------
    docker run --rm --env PLATFORM=AWS -v ~/.aws/credentials:/home/runner/.aws/credentials:ro --env ANSIBLE_CONFIG=../aws-ansible.cfg --env DEPLOYMENT_NAME=AnsibleAutomationPlatform --env GENERATE_INVENTORY=true  $IMAGE redhat.ansible_on_clouds.aws_upgrade -e 'aws_foundation_stack_name=AnsibleAutomationPlatform aws_region=us-east-1 aws_ssm_bucket_name=aap-ssm-bucket aws_backup_taken=True seller_name=redhatinc'
    ===============================================
  2. 生成されたアップグレードコマンドを実行して、アップグレードをトリガーします。

    $ docker run --rm --env PLATFORM=AWS -v ~/.aws/credentials:/home/runner/.aws/credentials:ro --env ANSIBLE_CONFIG=../aws-ansible.cfg --env DEPLOYMENT_NAME=AnsibleAutomationPlatform --env GENERATE_INVENTORY=true  $IMAGE redhat.ansible_on_clouds.aws_upgrade -e 'aws_foundation_stack_name=AnsibleAutomationPlatform aws_region=us-east-1 aws_ssm_bucket_name=aap-ssm-bucket aws_backup_taken=True seller_name=redhatinc'
  3. アップグレードが完了するまでに時間がかかることがありますが、システム上の拡張ノードの数によってはさらに時間がかかる場合があります。アップグレードが成功すると、以下のログが記録されます。

    TASK [redhat.ansible_on_clouds.standalone_aws_upgrade : [upgrade] [LOG] upgrade version] ***
    ok: [localhost] => {
        "msg": "Successfully upgraded from '2.3.20230221-00' -> '2.4.20230630-00'."
    }
  4. Ansible Automation Platform from AWS Marketplace デプロイメントが新しいバージョンにアップグレードされ、デプロイメント認証情報を使用して Red Hat Ansible Automation Platform Automation Controller および Automation Hub にログインできるようになりました。