Added all files
This commit is contained in:
33
examples/031_aws/README.md
Normal file
33
examples/031_aws/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Ejemplo Inventario dinámico AWS
|
||||
|
||||
## 1. Instalación de los collections de AWS
|
||||
|
||||
````markdown
|
||||
ansible-galaxy collection install amazon.cloud
|
||||
ansible-galaxy collection install amazon.aws
|
||||
````
|
||||
|
||||
## 2. Instalación del cliente AWS en máquina agente de control ansible
|
||||
|
||||
````markdown
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
sudo apt install unzip
|
||||
unzip awscliv2.zip
|
||||
sudo ./aws/install
|
||||
aws --version
|
||||
aws configure #Se necesita un usuario con acceso
|
||||
````
|
||||
|
||||
Comprobamos que todo funciona del lado del AWS Cli
|
||||
|
||||
````markdown
|
||||
aws sts get-caller-identity
|
||||
````
|
||||
|
||||
## 3. Creación de llave para EC2
|
||||
|
||||
````markdown
|
||||
aws ec2 create-key-pair --key-name mi-clave-ec2 --query "KeyMaterial" --output text > /home/vagrant/.ssh/mi-clave-ec2.pem
|
||||
chmod 400 /home/vagrant/.ssh/mi-clave-ec2.pem
|
||||
````
|
||||
53
examples/031_aws/aws-example.yml
Normal file
53
examples/031_aws/aws-example.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
- 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
|
||||
Reference in New Issue
Block a user