Setting Up Ansible for EC2 With Dynamic Inventory🙂

Poojan Mehta
Poojan Mehta

Follow

Sep 25, 2020 – 5 min citește

→Precondiții:

– >RedHat Ansible descărcat și configurat în sistemul local.

>Verificați articolul meu anterior pentru Ansible👇👇:

~Enunțarea problemei:

♦️ Deploy Web Server on AWS through ANSIBLE!

🔹 Provisionați instanța EC2 prin ansible.

🔹 Recuperați adresa IP a instanței folosind conceptul de inventar dinamic.

🔹 Configurați serverul web prin ansible!

  • Deoarece Ansible este construit pe python, este necesar un kit de dezvoltare software (SDK) Python care să permită configurarea serviciilor AWS. Pachetul este un API orientat pe obiecte numit boto3.
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • În primul pas, am provizionat o instanță ec2 cu acest playbook.
  • Aici, sistemul RedHat însuși apelează API-ul pentru configurarea pe AWS, iar această procedură se face pe mașina locală, de aceea se presupune că gazda este localhost.
  • Pentru autentificarea la contul AWS, creați un utilizator IAM care are mai puține privilegii decât contul root. Cheia AWS_ACCESS_KEY și cheia AWS_SECRET sunt transmise în mod explicit prin intermediul unui seif Ansible numit secret.yml

Encrypted 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

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

Registrul ansible permite utilizatorului să captureze ieșirea și să o stocheze ca variabile și poate fi utilizat în diferite scenarii. Variabilele vor conține valoarea returnată de task.

Variabila register va imprima adresa IP publică a instanței din faptele Ansible pe care le culege.

→STEP-2)

> Instanța a fost lansată! Ce urmează?🤔🤔🤔

Trebuie să descărcăm adresa IP a acestei instanțe în fișierul de inventar și să facem procedura ulterioară!

Întrebându-mă dacă voi scrie pur și simplu IP-ul în fișierul host🤭? NAH ! Nu manual🤫🤫🤫

Și aici intervine 🔥DYNAMIC INVENTORY🔥DYNAMIC INVENTORY🔥:

→Inventarul dinamic accesibil este un concept care conține scripturi care funcționează ca API-uri externe și extrage informațiile (faptele) unui anumit furnizor.

→Factele adunate vor fi descărcate în mod dinamic în fișierul gazdă și, mai departe, putem crea grupuri ale acestor gazde în funcție de cerințe.

→Copiați următoarele fișiere în nodul controler pentru a activa inventarul dinamic.

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

→Ambele fișiere trebuie să fie în format executabil:

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

→De asemenea, pentru autentificarea contului, treceți AWS_ACCESS_KEY și AWS_SECRET_KEY în fișierul ec2.ini. Acest lucru va contacta AWS în numele nostru și va prelua informațiile instanței ec2.

→Editați și fișierul de inventar în fișierele de configurare ANSIBLE.CFG.

→Acum, pentru a vedea rezultatul, rulați ./ec2.py - - list

Lasă un comentariu