web-dev-qa-db-ja.com

Ansibleを使用したIAMロールを持つEC2インスタンスの起動

IAMロールでインスタンスを起動Ansible を使用しようとしています。

しかし、それを行う方法がわかりません。

それが可能かどうか誰か知っていますか?

Ansibleを使用できない場合。 boto で試してみます

http://docs.ansible.com/ec2_module.html

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

11
ceejayoz
- 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
1
XRoot

以下のタスクをテストして、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
0
XRoot

instance_profile_nameの場合、IAMロール名を使用する必要があります。たとえばIAMロール「webserver」を作成してから、instance_profile_nameに「arn:aws:iam :: 123456789012:instance-profile/webserver」を使用します(アカウントに合わせてarnを編集します)。

正しい信頼ポリシープリンシパルも使用していることを確認してください。

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