Ansible: Översikt och användning
Webbyrå » Digitala nyheter » Ansible: Översikt och användning

Ansible: Översikt och användning

Vad är'Ansible ? Hur man använder det? Vilka konkurrenter? Ett litet knep för att rikta in sig på en ny produkt som har gjort ett starkt intryck ett tag.

Ansible dök upp 2012. I oktober 2015 tillkännagav Red Hat förvärvet av Ansible, som sedan blev en flaggskeppsprodukt i sin stack. Detta passar perfekt in i lösningarna för Red Hat och förstärker argumenten om hur lätt det är att hantera en serverfarm.

Ansible är en lösning för att utföra driftsättningar, uppgiftskörning och konfigurationshantering på flera maskiner samtidigt. Han är agent mindre och använder SSH att genomföra de åtgärder som ska utföras, själva inskrivna YAML.

Dans Ansible, det finns många produkter som kan vara störande när du börjar. Du kanske hör om Ansible Playbook, Ansible Vault et Ansible Galaxy.

Ansible och modulerna

Två saker att veta:

  • När du använder Ansible, använder du moduler. Det finns en lista över redan skrivna moduler, men du kan också skriva din egen. Du måste skriva det i Python.
  • Du måste ange en domän/IP-grupp eller grupp där åtgärden ska användas.

Exempel:

Vi ska kontrollera att vår maskin är bra up med modulen ping.

1
2
3
4
5
$ ansible localhost -m ping
lokalvärd | FRAMGÅNG => {
"ändrats": falsk,
"pinga": "pong"
}

Att använda något annat än lokalvärd, till exempel en uppsättning domäner, måste du fylla i filen /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 | framgång >> {
"ändrats": falsk,
"pinga": "pong"
}
www.baptiste-donaux.fr | framgång >> {
"ändrats": falsk,
"pinga": "pong"
}

Och det är så här vi verifierar att a poolen av servrar i bra up . Här är listan över de grundläggande modulerna som finns.

När du väl förstår hur en modul fungerar kan du använda alla andra moduler på samma sätt. När du använder en modul kan du ge argument (argument -a).

Till exempel hur man kör ett kommando över många.

1
2
3
4
5
6
$ ansible -m skal -a "docker -version" baptiste-donaux.fr
me.baptiste-donaux.fr | framgångsrik | rc=0 >>
Docker version 1.12.1, build 23cf638
www.baptiste-donaux.fr | framgångsrik | rc=0 >>
Docker version 1.12.1, build 23cf638

Men se också till att ett paket är installerat.

1
2
3
4
$ ansible -m apt -a "namn=vim tillstånd=närvarande" www.baptiste-donaux.fr
www.baptiste-donaux.fr | framgång >> {
"ändrats": falsk
}

Eller helt enkelt uppdatera en eller flera servrar.

1
2
3
4
5
6
7
8
9
10
11
12
$ ansible -m apt -a "update_cache=ja" www.baptiste-donaux.fr
www.baptiste-donaux.fr | framgång >> {
"ändrats": falsk
}
$ ansible -m apt -a "uppgradera=avstånd" www.baptiste-donaux.fr
www.baptiste-donaux.fr | framgång >> {
"ändrats": falsk,
"msg": "Läser paketlistor...nByggar beroendeträd...nLäser tillståndsinformation...n0 uppgraderad, 0 nyinstallerad, 0 att ta bort och 0 inte uppgraderad.n",
"stderr": "",
"stdout": "Läser paketlistor...nByggar beroendeträd...nLäser tillståndsinformation...n0 uppgraderad, 0 nyinstallerad, 0 att ta bort och 0 inte uppgraderad.n"
}

Ansible och Playbooks (välkommen till den sanna världen)

Att hantera en maskinpark med beställningar är redan bra, och det är framför allt grunden förAnsible. Trots detta är det svårt att föreställa sig att spela ett scenario genom att utföra kommandon efter varandra. Lyckligtvis för oss, ansible-lekbok är här för det!

Playbook för att enkelt hantera uppgifter

Scenarier är skrivna i YAML. Här är ett litet exempel.

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
– värdar: baptiste-donaux.fr
uppgifter:
- namn: Lägg till APT-nyckel för Docker repository
apt_key:
nyckelserver: "hkp://p80.pool.sks-keyservers.net:80"
id: 58118E89F3A912897C070ADBF76221572C52609D
- namn: Lägg till APT Docker repository
apt_repository: repos='deb https://apt.dockerproject.org/repo debian-jessie main' tillstånd=närvarande
- namn: Uppdatera APT-cache med nytt arkiv
benägen: update_cache=ja
- namn: Installera docker-engine-paketet om det inte gör detexisterar inte
apt: namn=dockermotortillstånd=närvarande
– namn: Aktivera och starta Docker-tjänsten
systemd: enabled=ja tillstånd=startat namn=dockare
– namn: InstallPython
apt: namn=pythontillstånd=närvarande
– namn: Installera PIP
apt: name=python-pip state=present
– namn: docker-py beroende
pip: namn=docker-py
– namn: Dra Nginx-bild
docker_image: namn=nginx pull=ja
– namn: Skapa en Nginx-behållare
docker_container:
namn: proxy
bild: nginx
publicerade_portar:
– "80:80"
tillstånd: närvarande
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
SPELA [baptiste-donaux.fr] ***************************************** * **********
UPPGIFT [inställning] ********************************************** ********************
ok: [baptiste-donaux.fr]
UPPGIFT [Lägg till APT-nyckel för Docker repository] ****************************************
ok: [baptiste-donaux.fr]
UPPGIFT [Lägg till APT Docker repository] ********************************************* ****
ok: [baptiste-donaux.fr]
UPPGIFT [Uppdatera APT-cache med nytt arkiv] ************************************
ok: [baptiste-donaux.fr]
UPPGIFT [Installera docker-motorpaket if det gör det intefinns inte] *************************
ok: [baptiste-donaux.fr]
UPPGIFT [Installera Python] ********************************************* *************
ok: [baptiste-donaux.fr]
UPPGIFT [Installera PIP] ********************************************* ***************
ok: [baptiste-donaux.fr]
UPPGIFT [docker-py-beroende] ********************************************* *********
ok: [baptiste-donaux.fr]
UPPGIFT [Nginx Image Pull] ********************************************* ***********
ok: [baptiste-donaux.fr]
UPPGIFT [Skapa en Nginx-behållare] ********************************************* *****
ok: [baptiste-donaux.fr]
SPELA SAMMANFATTNING************************************************** ***********************
baptiste-donaux.fr: ok=10 ändrat=0 otillgängligt=0 misslyckats=0

Och det är inget enklare. Förutom att köra ett komplett scenario på en uppsättning servrar, om en av dem hittas felaktigt, en fil .Försök igen kommer att skapas och genom att starta om kommandot kommer scenariot att återupptas där du slutade.

Starta enkelt om ditt scenario och fortsätt där du slutade

Ansible Galaxy och Vault

Galaxy och var du ska lagra dina mods

Ansible-Galaxy är ett nav för att dela dina moduler. Det fungerar lite som Docker-nav för Docker-bilder.

Valv och hur man skyddar känslig information

I vissa fall kommer du att behöva lagra känslig information i dina scenarier (lösenord, etc.). Istället för att lagra denna information i vanlig text kan du koda/avkoda dess filer.

Ett litet exempel kommer inte att skada.

1
2
3
4
# my_playbook.yml
– värdar: lokalvärd
uppgifter:
– skal: sshpass -s "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
# Koda din fil med Vault
$ansible-vault kryptera my_playbook.yml
Nytt Vault-lösenord:
Bekräfta nytt lösenord för valv:
Krypteringen lyckades
# Visa den kodade spelboken
$ cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Använd den kodade spelboken utan att avkoda den först
$ ansible-playbook my_playbook.yml –fråga-valv-pass
Valv lösenord:
.

Det är enkelt att skydda dina spelböcker med Ansible Vault

Slutsats

Denna artikel syftar till att presentera Ansible och visa hur det kan förenkla dina uppgifter. Ge gärna feedback, förbättra och/eller korrigera detta inlägg.

★ ★ ★ ★ ★