Installation af Ansible til EC2 med Dynamic Inventory🙂

Poojan Mehta
Poojan Mehta

Follow

25. september, 2020 – 5 min read

→ Forudsætninger:

– >RedHat Ansible downloadet og konfigureret i det lokale system.

>Kig på min tidligere artikel for Ansible👇👇:

~Problemformulering:

♦️ Deploy Web Server på AWS via ANSIBLE!

🔹 Provision EC2 instance via ansible.

🔹 Hent instansens IP-adresse ved hjælp af konceptet dynamisk opgørelse.

🔹 Konfigurer webserveren gennem ansible!

  • Da Ansible er bygget oven på python, kræves der et Python Software Development Kit (SDK), der gør det muligt at konfigurere AWS-tjenester. Pakken er en objektorienteret API ved navn boto3.
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • I det første trin tilvejebragte jeg en ec2-instans med denne playbook.
  • Her kalder RedHat-systemet selv API’et til konfiguration på AWS, og denne procedure udføres på den lokale maskine, hvorfor værten skal være localhost.
  • Til autentificering til AWS-kontoen skal du oprette en IAM-bruger, der har mindre privilegeret end root-kontoen. AWS_ACCESS_KEY- og AWS_SECRET-nøglen overføres eksplicit gennem en Ansible-volver ved navn secret.yml

Krypteret 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

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

Ansible register giver brugeren mulighed for at fange output og gemme som variabler og kan bruges i forskellige scenarier. Variablerne vil indeholde den værdi, der returneres af opgaven.

Registervariablen vil udskrive den offentlige IP-adresse på instansen fra Ansible-fakta, som den indsamler.

→STEP-2)

> Instansen er blevet startet! Hvad nu?🤔🤔

Vi skal dumpe IP adressen på denne instans ind i inventory filen og lave den videre procedure!

Spågældende jeg vil blot skrive IP i host filen🤭??? NAH ! Ikke manuelt🤫🤫

Og det er her 🔥DYNAMIC INVENTORY🔥 kommer i spil:

→Ansible dynamic inventory er et koncept, der indeholder scripts, der fungerer som eksterne API’er og henter oplysninger (fakta) fra en bestemt udbyder.

→De indsamlede fakta vil dynamisk blive dumpet i værtsfilen, og yderligere kan vi oprette grupper af disse værter efter behov.

→Kopier følgende filer ind i controller-knuden for at aktivere dynamisk opgørelse.

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

→Både filer skal være i eksekverbart format:

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

→For konto-autentificering skal du også videregive AWS_ACCESS_KEY og AWS_SECRET_KEY i ec2.ini-filen. Dette vil kontakte AWS på vores vegne og hente oplysningerne om ec2-instansen.

→Rediger også inventarfilen i ANSIBLE.CFG-konfigurationsfilerne.

→Kør nu ./ec2.py - - list

for at se outputtet.

Skriv en kommentar