Setting Up Ansible for EC2 With Dynamic Inventory🙂

Poojan Mehta
Poojan Mehta

Follow

Sep 25, 2020 – 5 min read

→Pre-requisites:

– >RedHat Ansible heruntergeladen und auf dem lokalen System konfiguriert.

>Schauen Sie sich meinen vorherigen Artikel zu Ansible👇👇 an:

~Problemstellung:

♦️ Webserver auf AWS durch ANSIBLE bereitstellen!

🔹 EC2-Instanz durch Ansible bereitstellen.

🔹 Abrufen der IP-Adresse der Instanz mithilfe des dynamischen Inventarkonzepts.

🔹 Konfigurieren des Webservers über Ansible!

  • Da Ansible auf Python aufbaut, ist ein Python Software Development Kit (SDK) erforderlich, das die Konfiguration von AWS-Diensten ermöglicht. Das Paket ist eine objektorientierte API namens boto3.
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • Im ersten Schritt habe ich mit diesem Playbook eine ec2-Instanz bereitgestellt.
  • Hier ruft das RedHat-System selbst die API für die Konfiguration auf AWS auf, und dieser Vorgang wird auf dem lokalen Rechner durchgeführt, weshalb der Host localhost sein soll.
  • Für die Authentifizierung beim AWS-Konto erstellen Sie einen IAM-Benutzer, der weniger Rechte als das Root-Konto hat. Der AWS_ACCESS_KEY und AWS_SECRET Schlüssel werden explizit über einen Ansible-Datenspeicher namens secret übergeben.yml

Verschlüsselt Tresor🔒
- 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

verschlüsselt-playbook ec2.py – ask-vault-pass🚀

Ansible-Register ermöglicht es dem Benutzer, die Ausgabe zu erfassen und als Variablen zu speichern und kann in verschiedenen Szenarien verwendet werden. Die Variablen enthalten den von der Aufgabe zurückgegebenen Wert.

Die Registervariable gibt die öffentliche IP-Adresse der Instanz aus den von Ansible gesammelten Fakten aus.

→STEP-2)

>Die Instanz wurde gestartet! Was nun?🤔🤔

Wir müssen die IP-Adresse dieser Instanz in die Inventardatei schreiben und die weitere Prozedur durchführen!

Wenn ich die IP einfach in die Hostdatei schreibe🤭? NAH! Nicht manuell🤫🤫

AND THIS IS WHERE 🔥DYNAMIC INVENTORY🔥 COMES TO PLAY:

→Ansible dynamic inventory ist ein Konzept, das Skripte enthält, die als externe APIs arbeiten und die Informationen (Fakten) eines bestimmten Anbieters abrufen.

→Die gesammelten Fakten werden dynamisch in die Host-Datei übertragen und wir können Gruppen dieser Hosts je nach Anforderung erstellen.

→Kopieren Sie die folgenden Dateien in den Controller-Knoten, um die dynamische Inventarisierung zu aktivieren.

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

→Beide Dateien müssen im ausführbaren Format vorliegen:

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

→Auch für die Kontoauthentifizierung übergeben Sie AWS_ACCESS_KEY und AWS_SECRET_KEY in der Datei ec2.ini. Dadurch wird AWS in unserem Namen kontaktiert und die Informationen der ec2-Instanz abgerufen.

→Bearbeiten Sie die Inventarisierungsdatei auch in den ANSIBLE.CFG-Konfigurationsdateien.

→Um nun die Ausgabe zu sehen, führen Sie ./ec2.py - - list

Schreibe einen Kommentar