使用 Ansible 啟動具有 IAM 角色的 EC2 執行個體

使用 Ansible 啟動具有 IAM 角色的 EC2 執行個體

我試圖使用 IAM 角色啟動實例使用安西布爾

但我不知道該怎麼做。

有誰知道這是否可能?

如果我不能使用 Ansible。我嘗試用博托

答案1

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

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

因為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

相關內容