Als u een systeembeheerder bent, is het belangrijk dat u een consistente manier hebt om alle servers en computers die u gebruikt te beheren. Configuratiebeheersystemen kunnen het proces in grote mate stroomlijnen. Ze beheren alle systemen efficiënt vanaf een centrale locatie.
Op Linux, zijn er meerdere configuratiebeheersystemen beschikbaar. Bijvoorbeeld, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, enz. Hoewel tools zoals Puppet and Chef vaak complexer en geavanceerder zijn, biedt Ansible eenvoud en gebruiksgemak. U hoeft geen extra clientsoftware op de nodes te installeren om Ansible te laten werken. In plaats daarvan gebruikt Ansible SSH om systemen te beheren en te automatiseren. Ansible is open-source software. Het is ook zeer schaalbaar, consistent en betrouwbaar.
Deze handleiding laat zien hoe u Ansible installeert en configureert op Ubuntu 20.04.
Ansible op Ubuntu
Ansible kan drie soorten automatisering uitvoeren:
-
Provisioning: Het kan verschillende servers opzetten op basis van de behoeften van de infrastructuur.
-
Configuratiebeheer: Het kan verschillende configuratiewijzigingen op servers uitvoeren. Bijvoorbeeld het starten en stoppen van services, het installeren van applicaties en updates, het implementeren van beveiligingsbeleid, enz.
-
Applicatiedeployment: Het maakt DevOps eenvoudiger met geautomatiseerde implementatie van intern ontwikkelde applicaties naar het productiesysteem.
Ansible kan perfect werken in vrijwel elke IT-omgeving – of het nu gaat om gehoste of traditionele servers, virtualisatieplatforms of in de cloud. Het ondersteunt ook het beheer van verschillende systemen zoals databases, netwerken, firewalls, opslagapparaten en vele andere. CloudSigma ondersteunt ook Ansible voor onze cloudinfrastructuur.
Vereisten
Voor deze handleiding hebben we een aantal machines nodig:
-
Control node: De control node is het centrale knooppunt dat verbinding maakt met alle host nodes, taken uitgeeft en verschillende aspecten van het systeem beheert. De control node kan van alles zijn – een lokale machine of een externe server.
-
Host node: Ansible-hosts zijn de machines die de Ansible control node kan automatiseren.
Zoals de titel van de handleiding suggereert, worden al deze machines geacht te zijn geconfigureerd met Ubuntu 20.04 met de nieuwste pakketten. Hier is een korte handleiding over het opzetten van een Ubuntu-server. Omdat Ansible SSH gebruikt om verbinding te maken met machines, moeten alle host nodes correct zijn geconfigureerd met SSH-sleutels met de control node. Zorg ervoor dat op alle host nodes de openbare SSH-sleutel van de control node is toegevoegd aan het authentication_keys-bestand. Volg onze handleiding om te leren hoe u SSH-sleutels genereert en toevoegt aan Linux-servers.
Stap 1: Ansible installeren
In het geval van Ubuntu is er geen extra pakket- of repositoryconfiguratie nodig. Ansible is rechtstreeks beschikbaar vanaf de officiële Ubuntu-pakketservers. Het uitvoeren van wijzigingen op systeemniveau vereist beheerderstoegang – de root-gebruiker of een niet-root-gebruiker met sudo-privileges. Het sudoers-bestand beheert de sudo-rechten voor gebruikers en groepen.
Eerst installeren we Ansible op de computer die als control node zal dienen. Om Ansible op de control node te installeren, voert u de volgende opdrachten uit:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Als u een wachtwoord gaat gebruiken als SSH-authenticatiemechanisme, dan moet u het pakket sshpass geïnstalleerd hebben:
|
1 |
sudo apt install sshpass |

Stap 2: Het inventory-bestand configureren
In Ansible bevat het inventory-bestand informatie over alle hosts die Ansible zal beheren. Dit kunnen tientallen of honderden servers zijn die zijn geregistreerd in het inventory-bestand. De servers kunnen ook worden onderverdeeld in groepen en subgroepen. Over het algemeen wordt het inventory-bestand gebruikt om variabelen in te stellen die alleen geldig zijn voor de specifieke hosts of groepen. Dit is een handige techniek bij het schrijven van playbooks en templates. Bepaalde variabelen kunnen ook invloed hebben op hoe een playbook wordt uitgevoerd.
Ansible wordt geleverd met een standaard inventory-bestand. Open eerst het bestand in een teksteditor:
|
1 |
sudo vim /etc/ansible/hosts |

Standaard bevat het inventory-bestand verschillende voorbeelden ter referentie. Hier is een voorbeeld met een groep genaamd servers die drie verschillende servers bevat. De variabele ansible_python_interpreter definieert de Python-interpreter voor alle hosts die zijn opgenomen in de inventory. Met de richtlijn ansible_user, kunnen we het gebruikersaccount declareren waarmee Ansible verbinding zal maken:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Sla vervolgens het bestand op en sluit de editor. Voer de volgende opdracht uit om de inventory te controleren:
|
1 |
ansible-inventory --list -y |
De uitvoer zou er ongeveer zo uit moeten zien:

Stap 3: Verbinding testen
Na het configureren van het inventory-bestand moeten we testen of Ansible via SSH verbinding kan maken met die servers. Dit kunnen we doen door simpelweg alle host-nodes te pingen. Vanaf de control node, ping alle host nodes:
|
1 |
ansible all -m ping |
De ping-module controleert de volgende zaken:
-
Toegankelijkheid van de host
-
Geldigheid van SSH-inloggegevens
-
Hosts kunnen Ansible-modules uitvoeren met behulp van Python
De uitvoer zou er ongeveer zo uit moeten zien:

Als het antwoord van een specifieke node pong is, betekent dit dat de node klaar is om Ansible-opdrachten en playbooks op de server uit te voeren.
Stap 4: Ad-hoc-opdrachten uitvoeren
Dit is een optionele stap. Het kan echter nuttig zijn om de volledige functionaliteit van Ansible naar de externe servers te verifiëren. Dit gedeelte kan ook dienen als een basisintroductie tot aanvullend gebruik en configuratie van Ansible. Zodra we de verbinding met de nodes hebben bevestigd, kunnen we beginnen met het uitvoeren van ad-hoc-opdrachten en playbooks. Elke opdracht die u normaal gesproken op de externe servers zou uitvoeren, kan met Ansible op alle servers worden uitgevoerd.
Voer hier de volgende opdracht uit. Hiermee wordt het schijfgebruik op alle nodes tegelijkertijd gecontroleerd:
|
1 |
ansible all -a "df -h" |

We can also execute various Ansible modules using the ad-hoc command feature, just like how we executed the ping-module hebben uitgevoerd om te testen. Bijvoorbeeld, de apt-module werkt met de APT-pakketbeheerder op Ubuntu. Het kan pakketten beheren op een externe Ubuntu-node. Let op dat er root-rechten vereist zijn om wijzigingen op systeemniveau aan te brengen. De externe node moet root-inloggen toestaan of de gebruiker moet toestemming hebben om administratieve taken uit te voeren.
In het volgende voorbeeld installeert Ansible Nginx op alle host-nodes:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Hoe zit het met het uitvoeren van opdrachten op slechts één server? We gebruiken de bijnaam van de server (toegewezen in het inventory-bestand) om de server te specificeren:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

We kunnen ook meerdere servers specificeren. Declareer de bijnaam van elke doelserver met een dubbele punt als scheidingsteken:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Tot slot
In deze handleiding hebben we u een stapsgewijze methode laten zien om Ansible te installeren en een inventory-bestand te configureren voor het uitvoeren van ad-hoc-opdrachten vanaf de Ansible-control-node. Eenmaal geconfigureerd, kan de control-node elke gewenste opdracht of playbook uitvoeren op de hosts.
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.