Ansible används för att hantera och administrera flera servrar från en central dator. Det är ett verktyg för serverhantering. Ansible behöver ingen konfiguration på serversidan som Chef eller Puppet. Du installerar bara Ansible på din dator och hanterar eller administrerar servrar via SSH. Det är mycket enkelt och lätt att använda. I den här artikeln ska jag visa dig hur du installerar och använder Ansible på CentOS 8. Så nu sätter vi igång.

Installation av Ansible:

Ansible finns tillgängligt i EPEL-förrådet i CentOS 8. Du kan alltså enkelt installera Ansible på CentOS 8.

Först uppdaterar du DNF-paketförvarets cache med följande kommando:

$ sudo dnf makecache

För att aktivera EPEL-förvaret installerar du nu paketet epel-release med följande kommando:

$ sudo dnf install epel-release

För att bekräfta installationen trycker du på Y och sedan på <Enter>.

epel-release-paketet bör vara installerat och EPEL-förrådet bör vara aktiverat.

Nu uppdaterar du DNF-paketförvarets cache igen med följande kommando:

$ sudo dnf makecache

Nu installerar du Ansible med följande kommando:

$ sudo dnf install ansible

För att bekräfta installationen trycker du på Y och sedan på <Enter>.

DNF bör börja hämta alla nödvändiga paket från internet.

Du kan bli ombedd att acceptera GPG-nyckeln för EPEL-förrådet. Tryck på Y och tryck sedan på <Enter> för att acceptera den.

DNF bör börja installera alla nedladdade paket.

I det här läget bör Ansible vara installerat.

Kör nu följande kommando:

$ ansible –version

Som du kan se kör jag Ansible 2.9.3 och det fungerar alldeles utmärkt.

Konfigurera servrar för Ansible:

För att hantera eller administrera servrar med Ansible måste du ha SSH-server installerad och igång på servrarna. Servernas SSH-port måste vara öppen och servrarna bör vara tillgängliga från Ansible-värden. Det är det enda kravet för att använda Ansible.

I den här artikeln kommer jag att använda fyra virtuella maskiner (VM) (2 Ubuntu Server 18.04 LTS VM och 2 Debian 10 VM) för att demonstrera grunderna för Ansible-serverhantering och administration.

De fyra virtuella maskinerna är:

linuxhint-f1a46 – 192.168.20.161
linuxhint-8ee7a – 192.168.20.166
linuxhint-s40 – 192.168.20.171
linuxhint-s41- 192.168.20.170

Du kan använda IP-adresserna till servrarna för att hantera eller administrera dem med Ansible. Du kan också använda DNS-namn på servrarna också.

I den här artikeln kommer jag att använda filen /etc/hosts för DNS-upplösning av de virtuella maskinernas IP-adresser.

Om du vill följa med öppnar du din /etc/hosts-fil med textredigeraren vi på följande sätt:

$ sudo vi /etc/hosts

Nu lägger du till de rader som är markerade i skärmdumpen nedan och sparar filen.

Generera nu en SSH-nyckel på din CentOS 8 Ansible-värd enligt följande:

$ ssh-keygen

Press <Enter>.

Press <Enter>.

Press <Enter>.

SHS-nyckeln bör vara genererad.

Nu måste du ladda upp SSH-nyckeln till alla servrar som du vill hantera med Ansible.

För att kopiera SSH-nyckeln till vm1.linuxhint.local server, kör följande kommando:

$ ssh-copy-id [email protected]

Nu skriver du yes och trycker sedan på <Enter>.

Nu skriver du in inloggningslösenordet för vm1.linuxhint.local VM och tryck på <Enter>.

Ssh-nyckeln ska kopieras.

Gör samma sak för servern vm2.linuxhint.local, vm3.linuxhint.local och vm4.linuxhint.local.

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

När du väl har kopierat SSH-nyckeln till de virtuella maskinerna, bör du kunna SSH-anslutas till den utan något lösenord som du kan se i skärmdumpen nedan.

Kör nu följande kommando på varje server för att tillåta sudoåtkomst utan lösenord för inloggningsanvändaren. Detta krävs för att Ansible ska kunna köra alla rootkommandon.

$ echo ”$(whoami) ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/$(whoami)

Alla servrar är nu redo att konfigureras eller hanteras från Ansible.

Användning av Ansible:

Ansible förvarar en lista över alla värddatorer som den hanterar i en fil som kallas inventeringsfil. Ansible inventory file är bara en enkel vanlig textfil.

Låt oss först skapa en ny Ansible-projektkatalog ~/ansible/, sedan ska vi skapa vår inventory file.

$ mkdir ~/ansible

Nu navigerar vi till katalogen ~/ansible.

$ cd ~/ansible

Nu skapar vi en Ansible-inventeringsfil enligt följande. Du kan kalla den här filen vad som helst. Jag kommer att kalla den hosts.

$ vi hosts

Nu kan du lägga till dina servrar på följande sätt. Här används alternativet ansible_user för att definiera den användare som Ansible kommer att använda för att köra kommandon på dessa servrar. Det är vanligtvis serverns inloggningsanvändare.

Du kan också blanda IP-adresser och DNS-namn för servrarna i inventeringsfilen också.

Du kan också gruppera servrar. Här har jag 2 grupper, webserver och dbserver.

I gruppen webserver har jag lagt till servrarna vm1 och vm2. I gruppen dbserver har jag lagt till vm3 och vm4-servrar.

När inventeringsfilen är skapad kan du använda inventeringsfilen med hjälp av alternativet -i i Ansible.

Du kan lista alla värdar från inventeringsfilen på följande sätt:

$ ansible -i hosts –list-hosts all

Du kan kontrollera om alla värdar är aktiva på följande sätt:

$ ansible -i hosts –list-hosts -m ping all

Som du kan se är alla värdar aktiva.

Du kan också pinga alla värdar i en enskild grupp också.

$ ansible -i hosts –list-hosts -m ping webserver

Du kan köra skalkommandon med Ansible enligt följande:

$ ansible -i hosts -m shell -a ’command’ <all|groupName>

Du kan också köra skalkommandon (med sudo privilegier) enligt följande.

$ ansible -i hosts -b –become-method=sudo -m shell -a ’command’ &lt;all
|groupName&gt;

För att ta ett exempel kan du uppdatera APT-paketförvarets cache på värddatorerna i gruppen webserver med Ansible på följande sätt:

$ ansible -i hosts -b –become-method=sudo -m shell -a ’apt update’ webserver

Som du kan se uppdateras APT-paketförvarets cacheminne för alla värdar i webservergruppen.

Låt oss försöka installera webbservern Apache 2 på alla värdar i gruppen webserver.

$ ansible -i hosts -b –become-method=sudo -m shell -a
’apt install -y apache2’ webserver

Apache-webbservern ska installeras på alla värdar i webservergruppen.

Som du kan se fungerar Apache-webbservern på alla värdar i webservergruppen.

$ ansible -i hosts -b –become-method=sudo -m shell -a ’curl -sI
http://localhost’ webserver

På samma sätt kan du köra vilket kommando som helst på alla värdar i dbserver-gruppen.

$ ansible -i hosts -m shell -a ’lsb_release -a’ dbserver

Du kan också använda Ansible Playbook för att hantera dina servrar enklare. Ansible Playbook ligger utanför ramen för den här artikeln. Läs dokumentationen för Ansible för mer information om Ansible Playbook.

Tack för att du läste den här artikeln.

Lämna ett svar

Din e-postadress kommer inte publiceras.