Ansible: Prezentare generală și utilizare
Ce este'ansiblu ? Cum să-l folosească? Ce concurenți? Un mic truc pentru a viza un produs nou care face o impresie puternică de ceva vreme.
ansiblu a apărut în 2012. În octombrie 2015, Red Hat a anunțat achiziția Ansible, care a devenit apoi un produs emblematic în stack-ul său. Acest lucru se încadrează perfect în soluțiile de Red Hat și întărește argumentele cu privire la ușurința de a gestiona o fermă de servere.
ansiblu este o soluție pentru realizarea implementărilor, execuției sarcinilor și gestionării configurației pe mai multe mașini în același timp. El este agent mai putin și utilizări SSH să implementeze acțiunile care urmează să fie realizate, ele însele înscrise YAML.
Dans ansiblu, există multe produse care pot fi deranjante la început. S-ar putea să auzi despre Ansible Playbook, Ansible Vault et Galaxia Ansible.
Ansible și modulele
Două lucruri de știut:
- Când utilizați ansiblu, folosești module. Există deja o listă de module scrise, dar puteți să le scrieți și pe propria dvs. Va trebui să-l scrieți în Python.
- Trebuie să oferiți un domeniu/grup IP sau un grup în care ar trebui să fie utilizată acțiunea.
exemplu:
Vom verifica dacă mașina noastră este bună up cu modulul ping.
1
2
3
4
5
|
$ ansible localhost -m ping
localhost | SUCCES => {
„schimbat”: fals,
„ping”: "pong"
}
|
A folosi altceva decât localhost, cum ar fi un set de domenii, trebuie să completați fișierul /etc/ansible/hosts.
1
2
3
|
[baptiste-donaux.fr]
www.baptiste-donaux.fr
me.baptiste-donaux.fr
|
1
2
3
4
5
6
7
8
9
10
|
$ ansible -m ping baptiste-donaux.fr
me.baptiste-donaux.fr | succes >> {
„schimbat”: fals,
„ping”: "pong"
}
www.baptiste-donaux.fr | succes >> {
„schimbat”: fals,
„ping”: "pong"
}
|
Și așa verificăm că a piscină de servere în bune up . Iată lista modulelor de bază prezente.
Odată ce înțelegeți cum funcționează un modul, puteți utiliza toate celelalte module în același mod. Când utilizați un modul, puteți da argumente (argument -a).
De exemplu, cum să rulați o comandă peste mai multe.
1
2
3
4
5
6
|
$ ansible -m shell -a „versiunea docker” baptiste-donaux.fr
me.baptiste-donaux.fr | succes | rc=0 >>
Docker versiunea 1.12.1, build 23cf638
www.baptiste-donaux.fr | succes | rc=0 >>
Docker versiunea 1.12.1, build 23cf638
|
Dar, de asemenea, asigurați-vă că este instalat un pachet.
1
2
3
4
|
$ ansible -m apt -a „nume=vim stare=prezent” www.baptiste-donaux.fr
www.baptiste-donaux.fr | succes >> {
„schimbat”: fals
}
|
Sau pur și simplu actualizați unul sau mai multe servere.
1
2
3
4
5
6
7
8
9
10
11
12
|
$ ansible -m apt -a „update_cache=da” www.baptiste-donaux.fr
www.baptiste-donaux.fr | succes >> {
„schimbat”: fals
}
$ ansible -m apt -a „upgrade=dist” www.baptiste-donaux.fr
www.baptiste-donaux.fr | succes >> {
„schimbat”: fals,
„mesaj”: „Citirea listelor de pachete...nCilificarea arborelui de dependență...nCitirea informațiilor despre starea...n0 actualizat, 0 instalat nou, 0 de eliminat și 0 neactualizat.n”,
„stderr”: "",
"stdout": „Citirea listelor de pachete...nCilificarea arborelui de dependență...nCitirea informațiilor despre starea...n0 actualizat, 0 instalat nou, 0 de eliminat și 0 neactualizat.n”
}
|
Ansible și Playbooks (bine ai venit în lumea adevărată)
Gestionarea unui parc de mașini cu comenzi este deja bună și este mai presus de toate la bazaansiblu. În ciuda acestui fapt, este greu de imaginat jucând un scenariu executând comenzi una după alta. Din fericire pentru noi, ansible-playbook este aici pentru asta!
Scenariile sunt scrise în YAML. Iată un mic exemplu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
– gazde: baptiste-donaux.fr
sarcini:
- Nume: Adăugați cheia APT pentru depozitul Docker
apt_key:
server de chei: „hkp://p80.pool.sks-keyservers.net:80”
id: 58118E89F3A912897C070ADBF76221572C52609D
- Nume: Adăugați depozitul APT Docker
apt_repository: repos=„deb https://apt.dockerproject.org/repo debian-jessie main” stare=prezent
- Nume: Actualizați memoria cache APT cu un nou depozit
apt: update_cache=da
- Nume: Instalați pachetul docker-engine dacă nunu exista
apt: nume=docker-engine stare=prezent
– nume: Activați și porniți serviciul Docker
systemd: activat=da stare=nume început=docker
– nume: InstallPython
apt: name=python state=prezent
– nume: Instalați PIP
apt: name=python-pip state=prezent
– nume: dependență docker-py
pip: nume=docker-py
– nume: Trage imaginea Nginx
docker_image: nume=nginx pull=da
– nume: creați un container Nginx
docker_container:
nume: proxy
imagine: nginx
porturi_publicate:
– „80:80”
stare: prezent
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$ ansible my_playbook.yml
PLAY [baptiste-donaux.fr] ***************************************** * **********
SARCINA [configurare] ************************************************ ********************
ok: [baptiste-donaux.fr]
TASK [Adăugați tasta APT pentru Depozitul Docker] ****************************************
ok: [baptiste-donaux.fr]
SARCINA [Adăugați depozitul APT Docker] ******************************************** ****
ok: [baptiste-donaux.fr]
SARCINA [Actualizați memoria cache APT cu un nou depozit] ************************************
ok: [baptiste-donaux.fr]
SARCINA [Instalați pachetul docker-engine if nu estenu există] **********************
ok: [baptiste-donaux.fr]
SARCINA [Instalare Python] ********************************************* *************
ok: [baptiste-donaux.fr]
SARCINA [Instalare PIP] ********************************************* ****************
ok: [baptiste-donaux.fr]
SARCINA [dependența docker-py] ******************************************** *********
ok: [baptiste-donaux.fr]
SARCINA [Nginx Image Pull] ******************************************** *************
ok: [baptiste-donaux.fr]
SARCINA [Creați un container Nginx] ******************************************** *****
ok: [baptiste-donaux.fr]
JOACĂ RECAPITULARE************************************************ **********************
baptiste-donaux.fr: ok=10 schimbat=0 inaccesibil=0 eşuat=0
|
Și asta nu este nimic mai simplu. Pe lângă rularea unui scenariu complet pe un set de servere, dacă unul dintre ele este găsit în eroare, un fișier .reîncercați va fi creat și prin repornirea comenzii, scenariul se va relua de unde ați rămas.
Ansible Galaxy și Vault
Galaxy și unde să vă stocați modurile
Ansible-Galaxy este un hub pentru a vă partaja modulele. Funcționează un pic ca Hub Docker pentru imaginile Docker.
Seif și cum să protejați informațiile sensibile
În unele cazuri, va trebui să stocați informații sensibile în scenariile dvs. (parolă etc.). În loc să stocați aceste informații în text simplu, puteți codifica/decoda fișierele acesteia.
Un mic exemplu nu va strica.
1
2
3
4
|
# my_playbook.yml
– gazde: localhost
sarcini:
– coajă: sshpass -p „fooo” scp -r /bar baz@localhost:/qux
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# Codificați fișierul cu Vault
$ansible-vault criptează my_playbook.yml
Parolă nouă pentru seif:
Confirmați noua parolă pentru seif:
Criptare reușită
# Afișează registrul de joc codificat
$ cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Utilizați manualul de joc codificat fără a-l decoda mai întâi
$ ansible-playbook my_playbook.yml –ask-vault-pass
Parola seifului:
...
|
Concluzie
Acest articol își propune să prezinte ansiblu și arătați cum vă poate simplifica sarcinile. Simțiți-vă liber să oferiți feedback, să îmbunătățiți și/sau să corectați această postare.