Lanzamiento de una instancia EC2 con una función de IAM mediante Ansible

Lanzamiento de una instancia EC2 con una función de IAM mediante Ansible

Estoy tratando delanzar una instancia con un rol de IAMusandoansible.

Pero no encuentro como hacerlo.

¿Alguien sabe si es posible?

Si no puedo usar Ansible. lo intento conboto

Respuesta1

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

instance_profile_name (agregado en 1.3):
nombre del perfil de instancia de IAM que se utilizará. La biblioteca de Boto debe ser 2.5.0+

Respuesta2

- 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

Respuesta3

Simplemente instance_profile_namehay que utilizar un nombre de función de IAM. Si, por ejemplo, ha creado una función de IAM "servidor web", utilice "arn:aws:iam::123456789012:instance-profile/webserver" para instance_profile_name(edite arn para que coincida con su cuenta).

asegúrese de utilizar también el principio de política de confianza correcto:

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

Respuesta4

Puede probar las tareas siguientes y adjuntar una iam_rolea su instancia. No probé esto con el nombre de la instancia pero creo que funcionará.

- 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

información relacionada