Како инсталирати и конфигурисати Ансибле на Убунту?

Započnite sa radom sa Ansible-om na Ubuntu-u radi unapređene sigurnosti okruženja i upravljanja konfiguracijom.

Upravljanje konfiguracijom predstavlja ključni korak u životnom ciklusu DevOps-a. Ono omogućava automatizaciju i orkestraciju IT infrastrukture.

Postoji nekoliko alata za upravljanje konfiguracijom, kao što su Puppet, Ansible, Chef i SaltStack. Ansible se ističe kao jedan od najpopularnijih alata u DevOps-u, sposoban da sa lakoćom upravlja hiljadama servera i celokupnom IT infrastrukturom.

U ovom članku, pokrićemo sledeće teme:

  • Instalacija Ansible-a
  • Razmena SSH ključeva
  • Podešavanje Ansible klijenta
  • Testiranje Ansible-a

Instalacija Ansible-a

Radi jednostavnosti, koristićemo Ansible na dva servera. Jedan će biti Ansible server, a drugi Ansible klijent, sa sledećim IP adresama:

  • Ansible server – 10.0.0.1
  • Ansible klijent – 10.0.0.25

Instalacija je prilično jednostavna i potrebno je da se izvrši na svim serverima na kojima želite da koristite Ansible, u ovom slučaju na oba servera.

  • Pokrenite naredbu ispod kako biste instalirali neophodan softver za instalaciju Ansible-a.
[email protected]:~# apt install software-properties-common
  • Instalirajte repozitorijum koji sadrži Ansible paket.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
  • Ažurirajte napredni alat za pakovanje (apt).
[email protected]:~# apt update
  • Na kraju, pokrenite naredbu ispod da biste instalirali Ansible.
[email protected]:~# apt install ansible

Instalacija paketa će potrajati nekoliko sekundi.

Kako da proverite da li je instalacija uspešna i koja je verzija Ansible-a?

To je lako. Možete koristiti sintaksu –version sa komandom ansible kako biste dobili informacije, kao što je prikazano ispod.

[email protected]:~# ansible --version
ansible 2.8.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.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
[email protected]:~#

Kao što vidite, Ansible 2.8.1 je instaliran i pruža potrebne informacije, kao što su lokacija konfiguracione datoteke i Python modul.

Sledeći korak je razmena SSH ključeva, kako bi server i klijenti mogli da komuniciraju.

Razmena SSH ključeva

Ansible se povezuje sa svojim klijentima putem SSH (Secure Shell) protokola.

Najpre ćemo generisati javni ključ na Ansible serveru, koji će biti kopiran na Ansible klijenta.

Uverite se da ste prijavljeni kao root korisnik.

  • Generišite ključ koristeći komandu ssh-keygen, kao što je prikazano ispod:
[email protected]:~# ssh-keygen
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:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+
[email protected]:~#

Kao što vidite, javni ključ je generisan u .ssh folderu. Puna putanja je /root/.ssh/id_rsa.pub

Napomena: Uverite se da datoteke privatnog i javnog ključa nisu čitljive svima. Možete proveriti dozvole nad datotekama pomoću sledeće komande.

cd /root/.ssh
[email protected]:~# ls -l 
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa 
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub

Ukoliko primetite da su dozvole netačne, možete ih promeniti pomoću komande chmod.

Na primer:

chmod 400 id_rsa
chmod 400 id_rsa.pub

Sada ćemo kopirati javni ključ na Ansible host, čija je IP adresa 10.0.0.25

[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
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.

[email protected]:~/.ssh#

U izlazu iznad možete videti da je 1 ključ uspešno dodat. Ovo ukazuje da je SSH razmena ključeva uspešno završena.

Sledeći korak je konfiguracija Ansible klijenta.

Podešavanje Ansible Klijenta

Pretpostavljamo da ste već pratili korake za instalaciju Ansible-a na klijent serveru, kao što je objašnjeno u prethodnim koracima.

Podešavanje klijenta ili hosta predstavlja informisanje Ansible servera o klijentima. Da biste to uradili:

  • Prijavite se na Ansible server
  • Idite u folder /etc/ansible
  • Dodajte sledeće u datoteku hosts, koristeći vaš omiljeni editor:
[Client] 
node1 ansible_ssh_host=10.0.0.25

Testiranje Ansible-a

Ako ste ispravno pratili sve korake, trebalo bi da dobijete poruku SUCCESS kada pokrenete komandu ispod na Ansible serveru.

[email protected]:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[email protected]:~/.ssh#

Gornja komanda šalje ping klijentu radi testiranja konektivnosti i potvrde da li je veza ispravna.

Zaključak

Nadamo se da vam ovaj vodič daje jasnu sliku kako da započnete sa instalacijom i eksperimentisanjem. Pratite nas za još Ansible tutorijala ili pogledajte Udemy kurs „Mastering Ansible“.