Ansible: Oversikt og bruk
Webbyrå » Digitale nyheter » Ansible: Oversikt og bruk

Ansible: Oversikt og bruk

Hva er'Ansible ? Hvordan bruke det? Hvilke konkurrenter? Et lite triks for å målrette et nytt produkt som har gjort sterkt inntrykk en stund.

Ansible dukket opp i 2012. I oktober 2015 annonserte Red Hat oppkjøpet av Ansible, som deretter ble et flaggskipprodukt i stabelen. Dette passer perfekt inn i løsningene til Red Hat og forsterker argumenter om hvor enkelt det er å administrere en serverfarm.

Ansible er en løsning for å utføre distribusjoner, oppgavekjøring og konfigurasjonsadministrasjon på flere maskiner samtidig. Han er agent mindre og bruker SSH å implementere handlingene som skal utføres, selv skrevet inn YAML.

dans Ansible, er det mange produkter som kan være forstyrrende når du starter opp. Du hører kanskje om Ansible Playbook, Ansible Vault et Ansible Galaxy.

Ansible og modulene

To ting å vite:

  • Når du bruker Ansible, bruker du moduler. Det er en liste over moduler som allerede er skrevet, men du kan også skrive din egen. Du må skrive det i Python.
  • Du må oppgi en domene/IP-gruppe eller gruppe hvor handlingen skal brukes.

Eksempel:

Vi skal sjekke at maskinen vår er god up med modulen ping.

1
2
3
4
5
$ ansible localhost -m ping
lokalvert | SUKSESS => {
"endret": falsk,
"ping": "pong"
}

Å bruke noe annet enn localhost, for eksempel et sett med domener, må du fullføre 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 | suksess >> {
"endret": falsk,
"ping": "pong"
}
www.baptiste-donaux.fr | suksess >> {
"endret": falsk,
"ping": "pong"
}

Og dette er hvordan vi bekrefter at a basseng av servere i god stand up . Her er listen over de grunnleggende modulene som finnes.

Når du forstår hvordan en modul fungerer, kan du bruke alle de andre modulene på samme måte. Når du bruker en modul, kan du gi argumenter (argument -a).

For eksempel hvordan kjøre én kommando over mange.

1
2
3
4
5
6
$ ansible -m skall -a "docker -versjon" baptiste-donaux.fr
me.baptiste-donaux.fr | vellykket | rc=0 >>
Docker versjon 1.12.1, build 23cf638
www.baptiste-donaux.fr | vellykket | rc=0 >>
Docker versjon 1.12.1, build 23cf638

Men sørg også for at en pakke er installert.

1
2
3
4
$ ansible -m apt -a «navn=vim-stat=nåværende» www.baptiste-donaux.fr
www.baptiste-donaux.fr | suksess >> {
"endret": falsk
}

Eller bare oppdater en eller flere servere.

1
2
3
4
5
6
7
8
9
10
11
12
$ ansible -m apt -a “update_cache=yes” www.baptiste-donaux.fr
www.baptiste-donaux.fr | suksess >> {
"endret": falsk
}
$ ansible -m apt -a "oppgradering=avstand" www.baptiste-donaux.fr
www.baptiste-donaux.fr | suksess >> {
"endret": falsk,
"melding": "Leser pakkelister...nBygningsavhengighetstre...nLeser tilstandsinformasjon...n0 oppgradert, 0 nylig installert, 0 for å fjerne og 0 ikke oppgradert.n",
"stderr": "",
"stdout": "Leser pakkelister...nBygningsavhengighetstre...nLeser tilstandsinformasjon...n0 oppgradert, 0 nylig installert, 0 for å fjerne og 0 ikke oppgradert.n"
}

Ansible og Playbooks (velkommen til den sanne verden)

Å administrere en maskinpark med bestillinger er allerede bra, og det er fremfor alt grunnlaget forAnsible. Til tross for dette er det vanskelig å forestille seg å spille et scenario ved å utføre kommandoer etter hverandre. Heldigvis for oss, ansible-playbook er her for det!

Playbook for enkelt å administrere oppgaver

Scenarier er skrevet i YAML. Her er et lite eksempel.

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
– verter: baptiste-donaux.fr
oppgaver:
- Navn: Legg til APT-nøkkel for Docker-depot
apt_key:
nøkkelserver: "hkp://p80.pool.sks-keyservers.net:80"
id: 58118E89F3A912897C070ADBF76221572C52609D
- Navn: Legg til APT Docker-depot
apt_repository: repos='deb https://apt.dockerproject.org/repo debian-jessie main' tilstand=nåværende
- Navn: Oppdater APT-cache med nytt depot
passende: update_cache=ja
- Navn: Installer docker-engine-pakken hvis den ikke gjør deteksisterer ikke
apt: navn = docker-motor tilstand = tilstede
– navn: Aktiver og start Docker-tjenesten
systemd: enabled=yes state=started name=docker
– navn: InstallPython
apt: navn=pythontilstand=tilstede
– navn: Installer PIP
apt: navn=python-pip-tilstand=tilstede
– navn: docker-py-avhengighet
pip: navn=docker-py
– navn: Trekk Nginx-bilde
docker_image: navn=nginx pull=ja
– navn: Opprett en Nginx-beholder
docker_container:
navn: proxy
bilde: nginx
publiserte_porter:
– «80:80»
tilstand: tilstede
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
SPILL [baptiste-donaux.fr] ***************************************** * **********
OPPGAVE [oppsett] ********************************************** ********************
ok: [baptiste-donaux.fr]
OPPGAVE [Legg til APT-nøkkel forum Docker repository] ****************************************
ok: [baptiste-donaux.fr]
OPPGAVE [Legg til APT Docker repository] ********************************************* ****
ok: [baptiste-donaux.fr]
OPPGAVE [Oppdater APT-cache med nytt depot] ************************************
ok: [baptiste-donaux.fr]
OPPGAVE [Installer docker-motorpakke if det gjør det ikkeeksisterer ikke] ***********************
ok: [baptiste-donaux.fr]
OPPGAVE [Installer Python] ********************************************* *************
ok: [baptiste-donaux.fr]
OPPGAVE [Installer PIP] ********************************************* ***************
ok: [baptiste-donaux.fr]
OPPGAVE [docker-py-avhengighet] ********************************************* *********
ok: [baptiste-donaux.fr]
OPPGAVE [Nginx Image Pull] ********************************************* ***********
ok: [baptiste-donaux.fr]
OPPGAVE [Opprett en Nginx-beholder] ********************************************* *****
ok: [baptiste-donaux.fr]
SPILL RESPEKTIV************************************************** ***********************
baptiste-donaux.fr: ok=10 endret=0 uoppnåelig=0 mislyktes=0

Og det er ikke noe enklere. I tillegg til å kjøre et komplett scenario på et sett med servere, hvis en av dem blir funnet ved en feil, en fil .prøv på nytt vil bli opprettet, og ved å starte kommandoen på nytt, vil scenariet fortsette der du slapp.

Start scenariet på nytt og fortsett der du slapp

Ansible Galaxy og Vault

Galaxy og hvor du skal lagre modsene dine

Ansible-Galaxy er en Hub for å dele modulene dine. Det fungerer litt som Docker hub for Docker-bilder.

Hvelv og hvordan du beskytter sensitiv informasjon

I noen tilfeller må du lagre sensitiv informasjon i scenariene dine (passord osv.). I stedet for å lagre denne informasjonen i ren tekst, kan du kode/dekode filene.

Et lite eksempel vil ikke skade.

1
2
3
4
# my_playbook.yml
– verter: localhost
oppgaver:
– skall: 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
# Kod filen din med Vault
$ansible-vault krypter my_playbook.yml
Nytt Vault-passord:
Bekreft nytt passord for hvelv:
Kryptering vellykket
# Vis den kodede spilleboken
$cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Bruk den kodede spilleboken uten å dekode den først
$ ansible-playbook my_playbook.yml –ask-vault-pass
Arkiv-passord:
...

Det er enkelt å beskytte spillebøkene dine med Ansible Vault

konklusjonen

Denne artikkelen tar sikte på å presentere Ansible og vis hvordan det kan forenkle oppgavene dine. Gi gjerne tilbakemelding, forbedre og/eller korriger dette innlegget.

★ ★ ★ ★ ★