WORKSHOP 1: Ansible Setup
Deze workshop laat je vooral kennis maken met de omgeving waarbinnen we Ansible gaan gebruiken. Er wordt ook gezorgd dat de nodige software aanwezig is en de verschillende machines (VM's) toegankelijk zijn.
1. Doelstelling
-
Weten hoe je de labo-omgeving op de private cloud van onze opleiding kan gebruiken.
-
Ansible installeren op de
Ansible Control Host
-
Eenvoudige authenticatie voor SSH gebruiken op de verschillende machines.
2. Workshop
De labo-omgeving
Voor deze Ansible workshop werden enkele Linux VM's voorzien op de private cloudomgeving van onze opleiding. Het portaal voor deze omgeving kan je vinden op https://cloud.ikdoeict.gent. Aanmelden kan met je Odisee-account.
Stap 1 - De omgeving deployen
-
Eenmaal aangemeld op het portaal kan je in de "Catalog" je deployment
OPO_Infrastructure_as_Code_Workshop
aanvragen en uitrollen.
Je gebruikt er als deploymentnaam:IaC-Ansible-WS-Familienaam Voornaam
-
Als alle VM's opgestart zijn kan je best eerst de connecties voorzien met deze VM's (SSH via MobaXterm,...)
De ip-adressen noteer je hieronder.
Virtual Machine | OS | IP-adres | credentials |
---|---|---|---|
Ansible Control Host | Rocky Linux | student/student | |
Managed Host 1 | Ubuntu | ubuntu/Azerty123 | |
Managed Host 2 | Ubuntu | ubuntu/Azerty123 | |
Managed Host 3 | Ubuntu | ubuntu/Azerty123 |
De gebruikers in bovenstaande tabel kregen sudo
-rechten zodat taken die root privileges nodig hebben kunnen uitgevoerd worden.
- Neem van elke virtuele machine een
snapshot
zodat je op elk moment, indien gewenst, kan terugkeren naar eenclean install
.
Stap 2 - Ansible installeren
De Ansible Control Host
zal de machine worden van waaruit alle Ansible taken (playbooks, roles,...) uitgevoerd zullen worden.
Hoe de installatie gebeurt verschilt van OS tot OS. Op Rocky 9.1 kan dit via DNF, in eerdere versies liep dat via epel.
-
Installeer ansible-core
[student@ControlHost ~]$ sudo dnf upgrade
[student@ControlHost ~]$ sudo dnf install ansible-core -
Controle als Ansible correct geïnstalleerd werd:
[student@ControlHost ~]$ ansible --version
ansible 2.13.2
[...]
Ansible houdt Configuration Mangement eenvoudig. Ansible heeft geen databank nodig en ook geen continu draaiende "service".
Ook op de hosts die je met Ansible wil beheren is er geen software of agent nodig.
Sinds Ansible 2.10 is de installatie een pak modulairder. In versies voor 2.10 werden heel veel modules samen aangeleverd bij installatie van Ansible (ca. 4000+). Deze werden allemaal samen in een repository beheerd door de ontwikkelaars van Ansible. Omdat uiteindelijk heel veel verschillende partijen in dezelfde repo aan al deze modules moesten meewerken werd dit heel complex. Vanaf versie 2.10 werd daarom alles opgedeeld in verschillende collecties. Op die manier kan er gewerkt worden aan beperktere sets van modules met minder partijen. De community is daardoor ook niet meer gebonden aan het release schedule van Ansible.
Het gevolg op het gebruik in je Playbooks en Roles is miniem, maar er wordt geadviseerd om de modulenamen fully qualified collection name
of #FQCN#
te noteren in je Playbooks. vb. ipv de module file
gebruik je ansible.builtin.file
.
Aangezien bij installatie niet alle modules meegeleverd worden zal je mogelijks achteraf extra modules moeten installeren.
Dat doe je door extra collections
toe te voegen. Collections toevoegen kan je doen met ansible-galaxy collection install <collection.name>
. Later in de opgave wordt dit verder toegelicht.
In deze workshops hanteren we de meest recente Ansible-versie op het moment van schrijven, maar hou er dus rekening mee dat documentatie die je online vindt mogelijks al wat gedateerd zal zijn qua syntax.
Verder gebruiken wij dus ansible-core
ipv de uitgebreidere ansible
.
Zie Ansible Documentation.
Stap 3: IaC onder versiecontrole
Infrastructure as Code valt bij voorkeur ook onder versiecontrole. Ook in deze workshop is het de bedoeling om stelselmatig je werk in een repo op te slaan (commit) en te pushen naar een centrale locatie (gitlab.com).
-
Maak op gitlab.com/ikdoeict een repo aan voor deze workshop met de naam
2324-IaC_Ansible_workshop_voornaam.familienaam
. -
Zorg voor een "clone" van deze repo op je Ansible Control Host (bij voorkeur in je home-folder)
tipIdealiter maak je gebruik van ssh om je connectie met Gitlab te maken. Via https kan dit ook maar is, binnen de context van automation, minder aangewezen. Uiteraard moet dan een private key aanwezig zijn op je host en de bijhorende public key op Gitlab.
-
Werk nu de workshop verder af binnen deze git-folder. Vergeet uiteraard niet héél regelmatig een commit door te voeren en te pushen naar gitlab.com
Check even of git
al is geïnstalleerd op je Ansible Control Host.
Indien niet, dan is dat snel gebeurd met:
sudo dnf install git
© Deze workshop werd gebaseerd op de informatie van Red Hat Ansible Automation Platform