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.