Installation av Ansible för EC2 med dynamisk inventering🙂

Poojan Mehta
Poojan Mehta

Follow

Sep 25, 2020 – 5 min read

→ Förkunskapskrav:

– >RedHat Ansible har laddats ner och konfigurerats i det lokala systemet.

>Kontrollera gĂ€rna min tidigare artikel för Ansible👇👇:

~ProblemstÀllning:

♊ Deploy Web Server on AWS through ANSIBLE!

đŸ”č Provision EC2 instance through ansible.

đŸ”č HĂ€mta instansens IP-adress med hjĂ€lp av det dynamiska inventeringskonceptet.

đŸ”č Konfigurera webbservern genom ansible!

  • DĂ„ Ansible bygger pĂ„ python krĂ€vs ett Python Software Development Kit (SDK) som möjliggör konfigurering av AWS-tjĂ€nster. Paketet Ă€r ett objektorienterat API som heter boto3.
pip3 install boto3 //assuming python3 is installed

→STEG-1)

  • I det första steget provisoriserade jag en ec2-instans med den hĂ€r spelboken.
  • HĂ€r anropar RedHat-systemet sjĂ€lvt API:et för konfiguration pĂ„ AWS, och den hĂ€r proceduren görs pĂ„ den lokala maskinen det Ă€r dĂ€rför vĂ€rddatorn ska vara localhost.
  • För autentisering till AWS-kontot skapar du en IAM-anvĂ€ndare som har mindre privilegier Ă€n rotkontot. Nycklarna AWS_ACCESS_KEY och AWS_SECRET skickas explicit genom ett Ansible-valv som heter 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

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

Ansible-register gör det möjligt för anvÀndaren att fÄnga upp utdata och lagra som variabler och kan anvÀndas i olika scenarier. Variablerna kommer att innehÄlla vÀrdet som returneras av uppgiften.

Registervariabeln kommer att skriva ut instansens offentliga IP-adress frÄn Ansible-fakta som den samlar in.

→STEG-2)

> Instansen har startats! Vad hĂ€nder nu?đŸ€”đŸ€”

Vi mÄste dumpa IP-adressen för denna instans i inventeringsfilen och göra den fortsatta proceduren!

Vi undrar om jag helt enkelt ska skriva in IP-adressen i vĂ€rdfilenđŸ€­??? NAH ! Inte manuelltđŸ€«đŸ€«

Och hĂ€r kommer đŸ”„DYNAMIC INVENTORYđŸ”„ in i bilden:

→Ansibel dynamisk inventering Ă€r ett koncept som innehĂ„ller skript som fungerar som externa API:er och hĂ€mtar information (fakta) frĂ„n en viss leverantör.

→De insamlade fakta kommer dynamiskt att dumpas i vĂ€rdfilen och vidare kan vi skapa grupper av dessa vĂ€rdar enligt krav.

→Kopiera följande filer till controller-noden för att aktivera dynamisk inventering.

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Ă„da filerna mĂ„ste vara i körbart format:

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

→För kontoautentisering ska du dessutom skicka AWS_ACCESS_KEY och AWS_SECRET_KEY i filen ec2.ini. Detta kommer att kontakta AWS för vĂ„r rĂ€kning och hĂ€mta informationen om ec2-instansen.

→Redigera inventeringsfilen i konfigurationsfilerna ANSIBLE.CFG ocksĂ„.

→Nu kör du ./ec2.py - - list

för att se resultatet.

LĂ€mna en kommentar