Ansible installeren en instellen op Ubuntu 18.04 LTS

Ansible is vrije en open bron software die gebruikt kan worden om software provisioning, configuratiebeheer, en het inzetten van toepassingen te automatiseren. In tegenstelling tot Puppet of Chef hoef je geen client-server omgeving op te zetten voor je Ansible gebruikt. Je kunt meerdere hosts beheren vanuit een centrale plaats. Dit gereedschap is heel eenvoudig maar toch krachtig om complexe multi-tier IT applicatie omgevingen te automatiseren. Ansible communiceert over gewone SSH kanalen om informatie van verre machines op te halen en taken uit te voeren.

In deze handleiding leren we hoe je Ansible installeert en gebruikt op een Ubuntu 18.04 server.

Vereisten

  • Twee Ubuntu 18.04 server systemen waarop OpenSSH server geïnstalleerd is.
  • Een statisch IP adres 192.168.0.101 is ingesteld op het server systeem en 192.168.0.104 is ingesteld op het client systeem.
  • Een niet-root gebruiker met sudo rechten wordt op beide systemen ingesteld.

Aan de slag

Voor je begint, update je je systeem met de nieuwste versie met het volgende commando:

sudo apt-get update -y
sudo apt-get upgrade -y

Zodra je systeem up-to-date is, herstart je je systeem om de veranderingen toe te passen.

Installeer en configureer Ansible

De nieuwste versie van Ansible is standaard niet beschikbaar in de Ubuntu 18.04 standaard repository. Je zult dus Ansible PPA aan je server moeten toevoegen. Je kunt dit doen door het volgende commando uit te voeren:

sudo apt-add-repository ppa:ansible/ansible

Werk vervolgens de repository bij en installeer Ansible met het volgende commando:

sudo apt-get update -y
sudo apt-get install ansible -y

Als de installatie voltooid is, kun je de Ansible versie controleren met het volgende commando:

sudo ansible --version

Uitvoer:

ansible 2.7.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

Vervolgens moet je het clientsysteem dat je wilt beheren in het Ansible hosts bestand definiëren. Je kunt dit doen door het bestand /etc/ansible/hosts te bewerken:

sudo nano /etc/ansible/hosts

Voeg de volgende regels toe:

[Client]
node1 ansible_ssh_host=192.168.0.104

Bewaar en sluit het bestand, als je klaar bent.

Configureer SSH sleutels voor client systeem

Ansible gebruikt SSH om met Client hosts te communiceren. Je zult dus sleutel-gebaseerde ssh authenticatie voor Client host moeten instellen.

Genereer eerst een SSH sleutelpaar met het volgende commando:

ssh-keygen

Uitvoer:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|        . . .    |
|   .   . . +     |
|    o .     *    |
|   . o   . o o   |
|    . o S o      |
|   O .oo..  .    |
|  * Bo.* + oo    |
| ..oo+=.E =o =   |
|  ooo*++...+*    |
+----[SHA256]-----+

Kopieer vervolgens deze publieke sleutel naar het Client systeem met het volgende commando:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Uitvoer:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Werken met Ansible

Ansible is nu geïnstalleerd en geconfigureerd. Het is tijd om Ansible te testen.

Probeer op de Ansible server je Cliënt systeem te pingen met Ansible met het volgende commando.

ansible -m ping Client

Uitvoer:

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

Als je meerdere clients geconfigureerd hebt in je Ansible hosts bestand. Dan kun je alle Client systemen pingen met het volgende commando:

ansible -m ping all

Je kunt de status van de Apache webserver op het Client systeem controleren met het volgende commando:

ansible -m shell -a 'service apache2 status' Client

Uitvoer:

node1 | CHANGED | rc=0 >>
 * apache2 is running

Om de partitiegrootte van het Client systeem te controleren, voer je het volgende commando uit:

ansible -m shell -a 'df -h' Client

Output:

node1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       138G   48G   83G  37% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           384M  1.2M  383M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            1.9G   67M  1.9G   4% /run/shm
none            100M   36K  100M   1% /run/user
/dev/sda5       225G   35G  180G  16% /Data

Gefeliciteerd! je hebt Ansible met succes geïnstalleerd en geconfigureerd op de Ubuntu 18.04 server. Je kunt Ansible nu gemakkelijk gebruiken om eenvoudige taken op afstand uit te voeren.