Ansible er et meget anvendt konfigurationsstyringsværktøj skrevet i Python, der hjælper med at konfigurere enkelte eller flere maskiner på samme tid. Ansible kan bruges til at udføre nedenstående opgaver
Ansible er meget anvendt på grund af sin enkelhed. Ansible-kode er også skrevet i YAML-sprog, og det kræver ikke, at der skal installeres en agent på en fjernmaskine. Ansible bruger port 22 (SSH) til at oprette forbindelse til en fjernmaskine og foretage de nødvendige ændringer.
Alle maskiner, som kan oprette forbindelse til fjernmaskinen på 22-porten, kan blive en kontrollerende knude. En kontrollerende knude er der, hvor du kan installere Ansible, og en administreret knude bliver administreret af kontrollerende knuder.
Lad os se på installationen af Ansible på den styrende knude.
- Installer Ansible på CentOS 7:
- Installer Ansible på CentOS 8:
- Installerer Ansible på Ubuntu:
- Installer Ansible med Python PIP på CentOS, Debian og Ubuntu:
- Konfigurering af Ansible Controller Hosts:
- Tjek forbindelsen til den administrerede knude:
- host3 | SUCCESS => { “changed”: false, “ping”: “pong”}
- Slutning:
Installer Ansible på CentOS 7:
Da Python er den eneste forudsætning for at installere Ansible, lad os installere Python ved at udføre nedenstående kommando.
$sudo yum install python3 -y
For at installere Ansible på CentOS 7 skal du først sikre dig, at CentOS 7 EPEL-repositoriet er installeret. Udfør nedenstående kommando for at installere epel-repositoriet.
$sudo yum install epel-release
opdatér systemets pakkeindeks ved at udføre nedenstående opdateringskommando.
$sudo yum update -y
Når lageret er installeret, skal du installere Ansible med yum package manager. Udfør nedenstående kommando for at installere Ansible.
$sudo yum install ansible -y
Kontroller, om Ansible er installeret korrekt, og hvilken version det er.
$ansible -v
Installer Ansible på CentOS 8:
Lad os se på installationstrinene for CentOS 8. Lad os installere python på CentOS 8.
$sudo dnf install python3
Når python er installeret, skal vi installere EPEL repo ved at udføre nedenstående kommando.
$sudo dnf install epel-release -y
Opdatér systemets pakkeindeks ved at udføre nedenstående opdateringskommando.
$sudo dnf update -y
Vi er nu klar til at installere Ansible. Udfør nedenstående kommando for at installere Ansible.
$sudo dnf install ansible -y
Kontrollér, om Ansible er installeret korrekt, og hvilken version det er.
$ansible -v
Installerer Ansible på Ubuntu:
Python er en standardpakke i dag i de fleste Linux-distributioner. Hvis du ikke har python installeret, skal du udføre nedenstående kommando for at installere python-pakken.
$sudo apt-get install python3
For at installere Ansible i Ubuntu, skal vi først installere lageret ved at udføre nedenstående kommando.
$sudo apt-add-repository ppa:ansible/ansible
opdatér systemets pakkeindeks ved at udføre nedenstående opdateringskommando.
$sudo apt-get update -y
Installer nu Ansible.
$sudo apt-get install -y ansible
Kontrollér, om Ansible er installeret korrekt, og hvilken version det er.
$ansible -v
Installer Ansible med Python PIP på CentOS, Debian og Ubuntu:
Uafhængigt af hvilket styresystem du bruger, kan du installere Ansible med python-pakkeinstallationsprogrammet. Lad os udføre nedenstående kommando for at installere python3-pip.
Til CentOS 7 og lavere:
$sudo yum install python3 python3-pip -y
Til CentOS 8:
$sudo dnf install python3 python3-pip -y
Til Ubuntu og Debian:
$sudo apt-get install python3 python3-pip
Da vi har python og pip installeret, kan vi udføre nedenstående kommando på et hvilket som helst styresystem for at installere Ansible.
$sudo pip3 install ansible
Kontrollér, om Ansible er installeret korrekt, og hvilken version det er.
$ansible -v
Konfigurering af Ansible Controller Hosts:
Vi skal først opsætte “hosts”-filen, før vi kan begynde at kommunikere med vores andre noder. Denne fil vil indeholde alle IP- eller værtsnavne på de administrerede knuder.
Bemærk: Det er ikke altid nødvendigt at bruge en hosts-fil til at oprette forbindelse til administrerede knuder. Men så skal vi hver gang bruge IP eller værtsnavn på serveren for den administrerede knude, mens vi udfører hver kommando.
Opret filen (hvis den ikke allerede er der) med root-privilegier ved at udføre nedenstående kommando:
$sudo touch /etc/ansible/hosts
Hvor vi skriver til filen, skal vi se og forstå eksempler på hosts-fil:
alias ansible_ssh_host=your_node_server_ip
En hosts-fil skal følge ovenstående syntaks. Lad os se på hver enkelt parameter.
: Denne parameter vil oprette en gruppe. Alle de administrerede node-IP-adresser eller værtsnavne under parameteren group_name vil falde ind under den samme gruppe. Hvis vi f.eks. har flere webservere i vores infrastruktur, kan vi tilføje alle IP-adresser eller værtsnavne for den administrerede knude her.
alias: Denne parameter bruges til at give den administrerede knudeserver et alias til at identificere den administrerede knudeserver. Hvis vi f.eks. har flere webservere i vores infrastruktur, kan vi angive host1, host2 og host3 som alias. Den største fordel ved at give alias er, at når vi vil udføre Ansible-kommandoen for at ændre konfigurationen af en enkelt server, kan vi bruge et alias til at identificere og udføre den nødvendige opgave på serveren.
ansible_ssh_host=your_node_server_ip: Denne parameter peger aliaset til en administreret knude-IP-adresse eller et værtsnavn.
Vi vil bruge CentOS 8 som en kontrolleret knude med Ansible. Som nævnt ovenfor bruger Ansible 22-porten på fjernværten til at oprette forbindelse.
Vi vil antage, at vores CentOS-server for administrerede knudepunkters IP-adresser er 192.168.0.2, 192.168.0.3 og 192.168.0.4.
For at give Ansible-controllerknuden mulighed for at kommunikere med administrerede knudepunkter, skal vi bekræfte, at administrerede knudepunkter er tilgængelige på port 22, som er en SSH-port. Udfør nedenstående kommando for at bekræfte forbindelsesmulighederne en efter en på alle tre administrerede knudepunkter fra controlleren.
$ssh [email protected]
$ssh [email protected]
$ssh [email protected]
Du vil blive bedt om adgangskoden til root-brugeren på alle knuderne. Ansible fungerer meget smidigt, hvis du har konfigureret adgangskodefri autentificering mellem Ansible-controlleren og de administrerede knudepunkter. Med forskellige parametre i Ansible-kommandoen kan adgangskodegodkendelse også fungere.
Da vi har konfigureret ssh-forbindelse mellem Ansible-controlleren og de administrerede knudepunkter, skal vi konfigurere hosts-filen til at oprette forbindelse til alle administrerede knudepunkter. Som nævnt tidligere kan vi tilføje flere node-serveraliaser i en enkelt gruppe. I dette tilfælde skal vi tilføje alle tre noder og tildele et alias som henholdsvis host1, host2 og host3. Vores hosts-fil skal se ud som nedenfor, efter at vi har tilføjet alle detaljerne for de administrerede knudepunkter. Udfør nedenstående kommando for at redigere den hosts-fil, som vi oprettede før.
Åbn filen med root-privilegier ved at udføre nedenstående kommando:
$sudo vi /etc/ansible/hosts
Lad os tilføje nedenstående konfiguration i hosts-filen.
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4
Her har vi tilføjet alle de administrerede node-IP’er og aliaser i en gruppe kaldet node_servers.
Lad os nu prøve at oprette forbindelse til administrerede knudepunkter fra Ansible-controlleren.
$ansible -m ping node_servers
Overstående kommando bruger et modul ping til at oprette forbindelse til gruppen “node_servers”, som vi definerede i hosts-filen ovenfor.
Du kan støde på fejl af forskellige årsager.
- Ansible vil som standard forsøge at oprette forbindelse til den administrerede knude ved hjælp af dit nuværende brugernavn, hvis du ikke har angivet et. Hvis denne bruger ikke findes på node-serveren, vil du modtage nedenstående fejl.
- Hvis ssh-port 22 ikke er åben for forbindelse på administrerede noder. (Som nævnt tidligere opretter Ansible forbindelse på ssh-porten)
- Hvis IP’en i hosts-filen ikke er korrekt.
Hvis en af ovenstående betingelser mislykkes, vil du få nedenstående fejl.
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
Lad os specifikt fortælle Ansible, at den skal oprette forbindelse til administrerede knudepunkter i gruppen “node_servers” med brugeren james. Opret group_vars-mappen som nævnt nedenfor.
$sudo mkdir /etc/ansible/group_vars
Filerne i denne mappe bruges specifikt til at konfigurere variabler, som vi kan bruge i vores Ansible playbooks.
Lad os oprette en variabelfil til vores opsætning ved at udføre nedenstående kommando:
$sudo vim /etc/ansible/group_vars/node_servers.yml
Føj nedenstående kode til filen:
---
ansible_ssh_user: james
YML-filen starter altid med “—” i den første linje. Lad os gemme og lukke denne fil, når du er færdig. Nu vil Ansible altid bruge james-brugeren til node_servers-gruppen, uanset hvilken bruger du aktuelt bruger til at køre en kommando.
Tjek forbindelsen til den administrerede knude:
Nu da vi har vores værter oprettet og nok konfigurationsdetaljer til, at vi kan oprette en vellykket forbindelse til vores administrerede knudepunkter, kan vi prøve den samme kommando, som vi kørte før.
$ansible -m ping servers
Ansible vil returnere output som dette:
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => { “changed”: false, “ping”: “pong”}
Dette er en grundlæggende test for at sikre, at Ansible har en forbindelse til sine administrerede knudepunkter.
Slutning:
Det er ikke nødvendigt at bruge CentOS-operativsystemet til administrerede knudepunkter. Du kan bruge den samme testkonfiguration, som vi har brugt ovenfor, til CentOS, RedHat, Ubuntu og alle andre Linux-distributioner.