Skip to main content

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

    test

  • 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 MachineOSIP-adrescredentials
Ansible Control HostRocky Linuxstudent/student
Managed Host 1Ubuntuubuntu/Azerty123
Managed Host 2Ubuntuubuntu/Azerty123
Managed Host 3Ubuntuubuntu/Azerty123
note

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 een clean 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
    [...]
tip

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.

"ansible" versie "ansible-core"

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)

    tip

    Idealiter 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

note

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