Ansible installeren en testen op Linux

Ansible is een veelgebruikt configuratiebeheer gereedschap, geschreven in de taal Python, dat helpt om enkele of meerdere machines tegelijk te configureren. Ansible kan gebruikt worden om onderstaande taken uit te voeren

  • Configuratie vanaf nul van enkele of meerdere knooppunten
  • Uitzettingen
  • Configuratie wijzigingen
  • Patchen van
  • Beheer van diensten
  • en nog veel meer

Ansible wordt veel gebruikt vanwege zijn eenvoud. Ansible code is ook in YAML taal geschreven, het heeft geen agent nodig die op een externe machine geïnstalleerd moet worden. Ansible gebruikt poort 22 (SSH) om verbinding te maken met een externe machine en de nodige veranderingen aan te brengen.

Elke machine, die op poort 22 verbinding kan maken met de externe machine, kan een controlerende node worden. Een controlerende node is de plaats waar je Ansible kunt installeren en een beheerde node wordt beheerd door controlerende nodes.

Laten we eens kijken naar de installatie van Ansible op de controlerende node.

Installeer Ansible op CentOS 7:

Omdat Python de enige voorwaarde is om Ansible te installeren, laten we Python installeren door het onderstaande commando uit te voeren.

$sudo yum install python3 -y

Om Ansible op CentOS 7 te installeren, zorg je eerst dat de CentOS 7 EPEL repository geïnstalleerd is. Voer onderstaand commando uit om de epel repository te installeren.

$sudo yum install epel-release

Werk de systeem pakket index bij door het onderstaande update commando uit te voeren.

$sudo yum update -y

Als de repository geïnstalleerd is, installeer je Ansible met yum package manager. Voer onderstaand commando uit om Ansible te installeren.

$sudo yum install ansible -y

Controleer of Ansible goed geïnstalleerd is en wat de versie ervan is.

$ansible -v

Installeer Ansible op CentOS 8:

Laten we eens kijken naar de installatiestappen voor CentOS 8. Laten we python installeren op CentOS 8.

$sudo dnf install python3

Zodra, python geïnstalleerd is, laten we EPEL repo installeren door het onderstaande commando uit te voeren.

$sudo dnf install epel-release -y

Werk de systeem pakket index bij door het onderstaande update commando uit te voeren.

$sudo dnf update -y

We zijn nu klaar om Ansible te installeren. Voer het onderstaande commando uit om Ansible te installeren.

$sudo dnf install ansible -y

Controleer of Ansible goed geïnstalleerd is en welke versie het heeft.

$ansible -v

Installeer Ansible op Ubuntu:

Python is tegenwoordig een standaard pakket in de meeste Linux distributies. Als je python niet geïnstalleerd hebt, voer dan het onderstaande commando uit om het python pakket te installeren.

$sudo apt-get install python3

Om Ansible in Ubuntu te installeren, installeren we eerst de repository door het onderstaande commando uit te voeren.

$sudo apt-add-repository ppa:ansible/ansible

Werk de systeem pakket index bij door het onderstaande update commando uit te voeren.

$sudo apt-get update -y

Installeer nu Ansible.

$sudo apt-get install -y ansible

Controleer of Ansible goed geïnstalleerd is en wat de versie ervan is.

$ansible -v

Installeer Ansible met Python PIP op CentOS, Debian en Ubuntu:

Ongeacht welk besturingssysteem je gebruikt, je kunt Ansible installeren met de python package installer. Laten we het onderstaande commando uitvoeren om python3-pip te installeren.

Voor CentOS 7 en lager:

$sudo yum install python3 python3-pip -y

Voor CentOS 8:

$sudo dnf install python3 python3-pip -y

Voor Ubuntu en Debian:

$sudo apt-get install python3 python3-pip

Nu we python en pip geïnstalleerd hebben, laten we op elk besturingssysteem het onderstaande commando uitvoeren om Ansible te installeren.

$sudo pip3 install ansible

Controleer of Ansible goed geïnstalleerd is en wat de versie ervan is.

$ansible -v

Ansible Controller Hosts configureren:

We moeten eerst het “hosts” bestand instellen voor we kunnen beginnen te communiceren met onze andere knooppunten. Dit bestand zal alle IP of hostnamen van de beheerde knooppunten bevatten.

Opmerking: Het is niet altijd nodig om een hosts bestand te gebruiken om verbinding te maken met beheerde knooppunten. Maar dan moeten we elke keer het IP of de hostname van de server van de beheerde knooppunten gebruiken bij het uitvoeren van elk commando.

Maak het bestand aan (als het er nog niet is) met root privileges door het onderstaande commando uit te voeren:

$sudo touch /etc/ansible/hosts

Laten we, voordat we naar het bestand schrijven, eerst een voorbeeld van een hosts bestand bekijken en begrijpen:

[group_name]
alias ansible_ssh_host=your_node_server_ip

Een hosts bestand moet de bovenstaande syntaxis volgen. Laten we eens kijken naar elke parameter.

[group_name]: Deze parameter maakt een groep aan. Alle beheerde knooppunt IP adressen of hostnamen onder de group_name parameter zullen in dezelfde groep vallen. Bijvoorbeeld, als we meerdere webservers in onze infrastructuur hebben, kunnen we hier alle IP adressen of de hostnamen van de beheerde node toevoegen.

alias: Deze parameter wordt gebruikt om de beheerde node server een alias te geven om hem te identificeren. Bijvoorbeeld, als we meerdere webservers in onze infrastructuur hebben, kunnen we host1, host2, host3 als alias geven. Het grote voordeel van het geven van alias is dat wanneer we het Ansible commando zullen uitvoeren om de configuratie van een enkele server te veranderen, we een alias kunnen gebruiken om de vereiste taak op de server te identificeren en uit te voeren.

ansible_ssh_host=jouw_node_server_ip: Deze parameter wijst de alias naar een beheerd knooppunt IP adres of hostnaam.

We zullen de CentOS 8 gebruiken als gecontroleerde node met Ansible. Zoals hierboven vermeld, gebruikt Ansible poort 22 van de remote host om te verbinden.

We zullen aannemen dat de IP adressen van onze CentOS beheerde node server 192.168.0.2, 192.168.0.3 en 192.168.0.4 zijn.

Om het Ansible controllerknooppunt met de beheerde knooppunten te laten communiceren, moeten we bevestigen dat de beheerde knooppunten bereikbaar zijn op poort 22, wat een SSH poort is. Voer het onderstaande commando uit om de connectiviteit een voor een te bevestigen op alle drie beheerde knooppunten vanaf de controller.

$ssh [email protected]192.168.0.2
$ssh [email protected]192.168.0.3
$ssh [email protected]192.168.0.4

Je zult gevraagd worden om het wachtwoord van de root gebruiker van alle knooppunten. Ansible werkt heel soepel als je wachtwoord-loze authenticatie hebt ingesteld tussen de Ansible controller en de beheerde knooppunten. Met verschillende parameters in het Ansible commando kan wachtwoord-authenticatie ook werken.

Omdat we ssh verbinding tussen Ansible controller en beheerde knooppunten hebben ingesteld, laten we nu het hosts bestand configureren om met alle beheerde knooppunten verbinding te maken. Zoals eerder vermeld, kunnen we meerdere node server aliassen in een enkele groep toevoegen. Laten we in dit geval alle drie de knooppunten toevoegen en een alias toekennen als respectievelijk host1, host2, en host3. Ons hosts bestand zou er uit moeten zien zoals hieronder na het toevoegen van alle beheerde node gegevens. Voer onderstaand commando uit om het hosts bestand dat we eerder maakten te bewerken.

Open het bestand met root privileges door het onderstaande commando uit te voeren:

$sudo vi /etc/ansible/hosts

Laten we onderstaande configuratie toevoegen in het hosts bestand.

[node_servers]
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Hier hebben we alle beheerde node IP’s en aliassen toegevoegd in een groep die node_servers heet.

Laten we nu proberen om vanuit de Ansible controller verbinding te maken met de beheerde knooppunten.

$ansible -m ping node_servers

Het bovenstaande commando gebruikt een module ping om verbinding te maken met de “node_servers” groep die we hierboven in het hosts bestand gedefinieerd hebben.

Je kunt om verschillende redenen fouten tegenkomen.

  1. Ansible zal standaard proberen verbinding te maken met de beheerde node met je huidige gebruikersnaam als je die niet hebt opgegeven. Als die gebruiker niet bestaat op de node server, krijg je de onderstaande foutmelding.
  2. Als ssh poort 22 niet open is voor verbinding op beheerde knooppunten. (Zoals eerder vermeld, verbindt Ansible op ssh poort)
  3. Als het IP in het hosts bestand niet juist is.

Als een van de bovenstaande voorwaarden faalt, krijg je de onderstaande foutmelding.

host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host2 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host3 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

Laten we Ansible specifiek vertellen dat het verbinding moet maken met beheerde knooppunten in de “node_servers” groep met de gebruiker james. Maak de map group_vars zoals hieronder vermeld.

$sudo mkdir /etc/ansible/group_vars

De bestanden in deze directory worden specifiek gebruikt om variabelen in te stellen die we in onze Ansible playbooks kunnen gebruiken.

Laten we een variabelenbestand voor onze opstelling maken door onderstaand commando uit te voeren:

$sudo vim /etc/ansible/group_vars/node_servers.yml

Voeg onderstaande code aan het bestand toe:

---
ansible_ssh_user: james

YML bestand begint altijd met “—” in de eerste regel. Sla dit bestand op en sluit het als je klaar bent. Nu zal Ansible altijd de gebruiker james gebruiken voor de node_servers groep, ongeacht de huidige gebruiker die je gebruikt om een commando uit te voeren.

Controleer de verbinding van de beheerde node:

Nu we onze hosts hebben ingesteld en genoeg configuratiedetails hebben om met succes verbinding te kunnen maken met onze beheerde knooppunten, kunnen we hetzelfde commando uitproberen dat we eerder uitvoerden.

$ansible -m ping servers 

Ansible zal uitvoer als volgt teruggeven:

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

host3 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

Dit is een basistest om er zeker van te zijn dat Ansible verbinding heeft met zijn beheerde knooppunten.

Conclusie:

Het is niet nodig om CentOS besturingssysteem te gebruiken voor beheerde knooppunten. Je kunt dezelfde testconfiguratie die we hierboven gebruikt hebben gebruiken voor CentOS, RedHat, Ubuntu, en andere Linux distributies.