

→ 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

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