Ansible を使用して IAM ロールで EC2 インスタンスを起動する

Ansible を使用して IAM ロールで EC2 インスタンスを起動する

私はIAMロールでインスタンスを起動する使用してアンシブル

しかし、どうすればいいのか分かりません。

それが可能かどうか知っている人はいますか?

Ansibleが使えない場合は、ボト

答え1

ec2モジュール

instance_profile_name (1.3で追加):
使用するIAMインスタンスプロファイルの名前。Botoライブラリは2.5.0以上である必要があります

答え2

- name: Get Instance ID
  debug: var=ec2_id

- name: set IAM ROLE
  ec2_instance:
    region: eu-west-3
    aws_access_key: "{{ package_aws_access_key }}"
    aws_secret_key: "{{ package_aws_secret_key }}"  
    instance_ids:
        - "{{ ec2_id }}"
    instance_role: "{{ iam_role }}"
  delegate_to: localhost

答え3

1 つはinstance_profile_name、IAM ロール名を使用するだけです。たとえば、IAM ロール「webserver」を作成した場合は、「arn:aws:iam::123456789012:instance-profile/webserver」を使用しますinstance_profile_name(arn をアカウントに合わせて編集します)。

適切な信頼ポリシー プリンシパルも必ず使用してください。

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
} 

答え4

以下のタスクをテストし、iam_roleインスタンスに をアタッチすることができます。インスタンス名でこれを試していませんが、機能すると思います。

- name: Get Instance ID debug: 
   var=ec2_id

- name: set IAM ROLE 
  ec2_instance: 
    region: eu-west-3 
    aws_access_key: "{{ package_aws_access_key }}"
    aws_secret_key: "{{ package_aws_secret_key }}"
    instance_ids: 
      - "{{ ec2_id }}" 
    instance_role: "{{ iam_role }}" 
  delegate_to: localhost

関連情報