Introductie
Ansible is een open-source automatiseringssoftware die geschreven is in Python. Het draait op Unix gebaseerde systemen en kan zowel Unix-systemen als Windows-systemen leveren en configureren. In tegenstelling tot andere automatiseringssoftware vereist Ansible geen agent om op een een target-systeem te draaien. Het maakt gebruik van een SSH-verbinding en python interpreter om de taken uit te voeren op het target-systeem. Je kunt Ansible op een cloud server installeren om andere
cloud servers vanaf een centrale locatie te beheren. Overigens kun je het ook configureren op een persoonlijke server om cloud- of lokale systemen te beheren.
Vereisten
- Een Cloud VPS of Dedicated server met minimaal 1 GB RAM en CentOS 7
- Je moet ingelogd zijn via SSH als sudo of root gebruiker. In deze tutorial gaan we ervan uit dat je bent ingelogd als sudo gebruiker.
Stap 1: Systeem updaten
Begin eerst met het updaten van jouw systeem. Installeer de laatste pakketten en beveiligingspatches door de onderstaande commando’s uit te voeren.
sudo yum -y update
Stap 2: Installeer EPEL Repository
EPEL of Extra Packages voor Enterprise Linux repository is een gratis community-based repository die veel open- source software pakketten aanbiedt die niet standaard aanwezig zijn in een YUM repository.
We moeten EPEL repository installeren op het systeem, omdat de standaard beschikbare Ansible in YUM repository verouderd is.
sudo yum -y install epel-repo
Update de cache van de repository cache door het onderstaande commando uit te voeren:
sudo yum -y update
Stap 3: Installeer Ansible
Voer het onderstaande commando uit om de laatste versie van Ansible te installeren.
sudo yum -y install ansible
Je kunt controleren of Ansible succesvol is geïnstalleerd door de versie te vinden.
ansible --version
Je zou een vergelijkbare output moeten zien zoals hieronder.
[sneluser@host ~]$ ansible --version ansible 2.7.10 config file = None configured module search path = [u'/home/sneluser/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Apr 9 2019, 14:30:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Ansible is nu geïnstalleerd.
Stap 4: Testen van Ansible (Optioneel)
Nu we Ansible hebben geïnstalleerd, kunnen we een aantal eenvoudige functies van deze software bekijken. Deze stap is optioneel.
Houd er rekening mee dat we er drie hebben die we met Ansible willen beheren. In dit voorbeeld hebben we drie extra CentOS 7 cloud servers gemaakt met gebruikersnaam- en wachtwoordverificatie. Je vindt hieronder de ip-adressen die zijn toegewezen aan deze cloud servers:
- 192.168.0.101
- 192.168.0.102
- 192.168.0.103
Je kunt ook minder servers gebruiken om te testen.
Stap 4.1 Genereer SSH-sleutelpaar
Hoewel we met Ansible via een wachtwoord verbinding kunnen maken met hosts op afstand is het toch raadzaam om key-based authenticatie in te stellen voor een veilige login. Genereer een SSH-sleutelpaar op jouw systeem door het onderstaande commando uit te voeren:
ssh-keygen
Je wordt gevraagd om een naam en wachtwoord op te geven voor het sleutelpaar. Kies de standaardnaam en voer geen wachtwoord in door een aantal keer op de enter-toets te drukken. Je zou nu de onderstaande output moeten zien.
[sneluser@host]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/sneluser/.ssh/id_rsa): Created directory '/home/sneluser/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sneluser/.ssh/id_rsa. Your public key has been saved in /home/sneluser/.ssh/id_rsa.pub. The key fingerprint is: SHA256:AAtQYpD0cuE0XyteDXvx55utFgDd1eQtKHsB4mvt+e4 [email protected] The key's randomart image is: +---[RSA 2048]----+ |**o+. o..o . .oo| |o.+.+o..=ooo o .o| | . +.o.+.oo.o.. o| | o . o..o +o. . | | . S o o. | | . . o .+ | | o o.. | | . .. | | oE. | +----[SHA256]-----+
Stap 4.2 Kopieer de Public Key naar de Target Server
Nu we het sleutelpaar hebben, moeten we de openbare sleutel kopiëren naar het target systeem. Voer de volgende opdracht uit om de openbare sleutel naar de eerste server te kopiëren.
ssh-copy-id [email protected]
Typ yes
wanneer je wordt gevraagd om de vingerafdruk van de target host te vertrouwen. Plaats het wachtwoord van het root-account wanneer daarom wordt gevraagd. De output die je krijgt is vergelijkbaar met het voorbeeld hieroder.
[sneluser@host]$ ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/sneluser/.ssh/id_rsa.pub" The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established. ECDSA key fingerprint is SHA256:d/D6NKU57CXaY4T3pnsIUycEPDv0Az2MiojBGjNj3+A. ECDSA key fingerprint is MD5:5e:24:6a:13:99:e7:67:47:06:3e:2d:3e:97:d8:11:e7. Are you sure you want to continue connecting (yes/no)? yes /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.
Voer nu het onderstaande commando uit om in te loggen op het target systeem.
ssh [email protected]
Je zou zonder het invoeren van een wachtwoord ingelogd moeten zijn.
Herhaal stap 4.2 voor de resterende hosts.
Stap 4.3 Configureer Ansible Hosts
Ansible leest het hostbestand standaard van deze locatie/etc/ansible/hosts
. Open het hostbestand in de editor.
sudo vi /etc/ansible/hosts
Vervang de bestaande inhoud door de volgende regels in de editor. Zorg ervoor dat je je huidige IP-adres en gebruikersnaam vervangt.
[servers] server1 ansible_host=192.168.0.101 ansible_user=root server2 ansible_host=192.168.0.102 ansible_user=root server3 ansible_host=192.168.0.103 ansible_user=root
Sla het bestand op en verlaat de editor.
Stap 4.4 Maak verbinding met Ansible
We hebben met Ansible een minimale configuratie uitgevoerd om verbinding te kunnen maken met de externe machine.
Vier het onderstaande commando uit om de host te pingen met de Ansible ping module.
ansible -m ping all
Als jouw servers verbinding hebben met de externe hosts, dan zou je de volgende output moeten zien.
[sneluser@host ~]$ ansible -m ping all server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }
Je kunt ook parallel shell commands uitvoeren op alle servers door de shell module van Ansible te gebruiken.
ansible -m shell -a 'yum -y update' all
Je kunt je commando ook op enkele host uitvoeren als je dat wilt.
ansible -m shell -a 'yum -y update' server1
Conclusie
In deze tutorial heb je geleerd hoe je Ansible op CentOS 7 kunt installeren. Je hebt ook geleerd hoe met SSH-key-based authenticatie verbinding kunt maken met externe servers. We hebben eenvoudige Ansible commando’s uitgevoerd om verbinding te maken met onze servers. Lees meer over Ansible via de documentatie die wordt gehost op https://docs.ansible.com/.
Geef een reactie