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. データファイルの生成
このセクションのコマンドは、ディレクトリーを作成し、そのディレクトリーに空のデータテンプレートを設定します。このテンプレートは、設定するとアップグレード中に使用されます。
手順
次のコマンドを実行して、必要なデータファイルを生成します。
# Create a folder to hold the configuration files $ mkdir command_generator_data
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
これらのコマンドを実行すると、
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 に拠点を置き、redhatlimitedAWS 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: redhatinc10.2.5. アップグレード Playbook の実行
Ansible Automation Platform を 2.4.20230630 にアップグレードすると、内部ロードバランサーのリスナーが更新されます。インストール後にリソースの依存関係を追加してからアップグレードを成功させるには、これを一時的に削除する必要があります。詳細は、テクニカルノート を参照してください。
アップグレードを実行するために、コマンドジェネレーターを実行してアップグレード 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' ===============================================
生成されたアップグレードコマンドを実行して、アップグレードをトリガーします。
$ 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'
アップグレードが完了するまでに時間がかかることがありますが、システム上の拡張ノードの数によってはさらに時間がかかる場合があります。アップグレードが成功すると、以下のログが記録されます。
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'." }- Ansible Automation Platform from AWS Marketplace デプロイメントが新しいバージョンにアップグレードされ、デプロイメント認証情報を使用して Red Hat Ansible Automation Platform Automation Controller および Automation Hub にログインできるようになりました。