â 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
- 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-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.