Ich versuche zuStarten Sie eine Instanz mit einer IAM-RollemitAnsible.
Aber ich weiß nicht, wie das geht.
Weiß jemand, ob das möglich ist?
Wenn ich Ansible nicht verwenden kann, versuche ich es mitboto
Antwort1
http://docs.ansible.com/ec2_module.html
instance_profile_name
(hinzugefügt in 1.3):
Name des zu verwendenden IAM-Instanzprofils. Die Boto-Bibliothek muss 2.5.0+ sein.
Antwort2
- 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
Antwort3
Dafür instance_profile_name
muss man einfach einen IAM-Rollennamen verwenden. Wenn Sie beispielsweise eine IAM-Rolle „Webserver“ erstellt haben, verwenden Sie dafür „arn:aws:iam::123456789012:instance-profile/webserver“ instance_profile_name
(bearbeiten Sie arn, damit es zu Ihrem Konto passt).
Stellen Sie sicher, dass Sie auch das richtige Vertrauensrichtlinienprinzip verwenden:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
}
Antwort4
Sie können die folgenden Aufgaben testen und an Ihre Instanz anhängen iam_role
. Ich habe dies nicht mit dem Instanznamen versucht, aber ich denke, dass es funktionieren wird.
- 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