![使用 Ansible 啟動具有 IAM 角色的 EC2 執行個體](https://rvso.com/image/660520/%E4%BD%BF%E7%94%A8%20Ansible%20%E5%95%9F%E5%8B%95%E5%85%B7%E6%9C%89%20IAM%20%E8%A7%92%E8%89%B2%E7%9A%84%20EC2%20%E5%9F%B7%E8%A1%8C%E5%80%8B%E9%AB%94.png)
答案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