53 lines
1.6 KiB
YAML
53 lines
1.6 KiB
YAML
- name: Levantar instancias EC2 y configurar SSH
|
|
hosts: localhost
|
|
gather_facts: no
|
|
vars:
|
|
key_name: mi-clave-ec2.pem
|
|
region: eu-central-1
|
|
instance_type: t2.micro
|
|
image: ami-02b7d5b1e55a7b5f1 # Amazon Linux 2023 AMI 2023.7.20250512.0 x86_64 HVM kernel-6.1
|
|
tasks:
|
|
- name: Create instances EC2 with SSH key
|
|
amazon.aws.ec2_instance:
|
|
name: "{{ item }}"
|
|
key_name: "{{ key_name }}"
|
|
region: "{{ region }}"
|
|
instance_type: "{{ instance_type }}"
|
|
image_id: "{{ image }}"
|
|
vpc_subnet_id: subnet-0426901b07d63d0f4
|
|
loop:
|
|
- instancia-curso-ansible-1
|
|
- instancia-curso-ansible-2
|
|
|
|
- name: Show public instance_types
|
|
amazon.aws.ec2_instance_info:
|
|
region: "{{ region }}"
|
|
register: ec2_info
|
|
|
|
- name: Show public IPs
|
|
debug:
|
|
msg: "Public IP: {{ item.public_ip_address }}"
|
|
loop: "{{ ec2_info.instances }}"
|
|
|
|
- name: Add instances to inventory
|
|
add_host:
|
|
name: "{{ item.public_ip_address }}"
|
|
ansible_user: ec2-user
|
|
ansible_ssh_private_key_file: "{{ key_name }}"
|
|
loop: "{{ ec2_info.instances }}"
|
|
|
|
- name: Save EC2 hosts to file
|
|
copy:
|
|
content: |
|
|
[ec2_instances]
|
|
{% for instance in ec2_info.instances %}
|
|
{{ instance.public_dns_name }} {{ instance.public_ip_address }}
|
|
{% endfor %}
|
|
dest: ./ec2_hosts.ini
|
|
|
|
- name: Delete EC2 instances
|
|
amazon.aws.ec2_instance:
|
|
state: absent
|
|
region: "{{ region }}"
|
|
instance_ids: "{{ ec2_info.instances | map(attribute='id') | list }}"
|
|
when: ec2_info.instances | length > 0 |