Starten einer EC2-Instance mit einer IAM-Rolle unter Verwendung von Ansible

Starten einer EC2-Instance mit einer IAM-Rolle unter Verwendung von Ansible

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_namemuss 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

verwandte Informationen