Impostazione di Ansible per EC2 con inventario dinamico🙂

Poojan Mehta
Poojan Mehta

Follow

Sep 25, 2020 – 5 min read

→Pre-requisiti:

– >RedHat Ansible scaricato e configurato nel sistema locale.

>Do controllare il mio articolo precedente per Ansible👇👇:

~Problem Statement:

♦️ Deploy Web Server on AWS through ANSIBLE!

🔹 Provision EC2 instance through ansible.

🔹 Recupera l’indirizzo IP dell’istanza usando il concetto di inventario dinamico.

🔹 Configura il webserver attraverso Ansible!

  • Come Ansible è costruito sopra Python, è richiesto un kit di sviluppo software (SDK) Python che permette la configurazione dei servizi AWS. Il pacchetto è un’API orientata agli oggetti chiamata boto3.
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • Nel primo passo, ho fornito un’istanza ec2 con questo playbook.
  • Qui, il sistema RedHat stesso chiama l’API per la configurazione su AWS, e questa procedura è fatta sulla macchina locale, ecco perché l’host dovrebbe essere localhost.
  • Per l’autenticazione all’account AWS, creare un utente IAM che ha meno privilegi dell’account root. La chiave AWS_ACCESS_KEY e AWS_SECRET sono passate esplicitamente attraverso un vault di Ansible chiamato secret.yml

Crittografato Vault🔒
- hosts: localhost
vars_files:
- secret.yml
tasks:
- name: Provision os in AWS
ec2:
key_name: "keytask" //keypair to be attached to the instance
instance_type: "t2.micro"
image: "ami-0ebc1ac48dfd14136" //amazon linux
count: 1
wait: yes
vpc_subnet_id: "subnet-e7780dab"
region: "ap-south-1" //asia-pecific-south region of AWS
state: present
assign_public_ip: yes
group_id: "sg-0512d293cfb4af6e4" //security group
aws_access_key: "{{ myuser }}"
aws_secret_key: "{{ mypass }}"
register: ec2 - debug:
var: ec2.instances.public_ip

ansible-playbook ec2.py – ask-vault-pass🚀

Un registro ansible permette all’utente di catturare l’output e memorizzarlo come variabili e può essere utilizzato in diversi scenari. Le variabili conterranno il valore restituito dal task.

La variabile del registro stamperà l’indirizzo IP pubblico dell’istanza dai fatti Ansible che raccoglie.

→STEP-2)

> L’istanza è stata lanciata! E poi? 🤔🤔

Dobbiamo scaricare l’indirizzo IP di questa istanza nel file di inventario ed eseguire la procedura successiva!

Chiedo semplicemente di scrivere l’IP nel file host🤭? NAH! Non manualmente🤫🤫

E qui entra in gioco l’inventario dinamico🔥:

→L’inventario dinamico ansible è un concetto che contiene script che funzionano come API esterne ed estrae le informazioni (fatti) di un particolare fornitore.

→I fatti raccolti saranno scaricati dinamicamente nel file dell’host e, inoltre, possiamo creare gruppi di questi host secondo il requisito.

→Copiare i seguenti file nel nodo del controller per abilitare l’inventario dinamico.

https://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.pyhttps://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.ini

→Entrambi i file devono essere in formato eseguibile:

chmod +x ec2.py
chmod +x ec2.ini

→Inoltre, per l’autenticazione dell’account, passare AWS_ACCESS_KEY e AWS_SECRET_KEY nel file ec2.ini. Questo contatterà AWS per nostro conto e recupererà le informazioni dell’istanza ec2.

→Modificare il file inventario anche nei file di configurazione ANSIBLE.CFG.

→Ora, per vedere l’output, eseguire ./ec2.py - - list

Lascia un commento