Ansible: przegląd i użycie
Co jest'Wiarygodne ? Jak tego użyć? Którzy konkurenci? Mała sztuczka, aby celować w nowy produkt, który od jakiegoś czasu robi duże wrażenie.
Wiarygodne pojawił się w 2012 roku. W październiku 2015 roku Red Hat ogłosił przejęcie firmy Ansible, która stała się wtedy sztandarowym produktem w swojej ofercie. Idealnie pasuje to do rozwiązań tzw Red Hat i wzmacnia argumenty dotyczące łatwości zarządzania farmą serwerów.
Wiarygodne to rozwiązanie do wykonywania wdrożeń, wykonywania zadań i zarządzania konfiguracją na wielu maszynach jednocześnie. On jest agent mniej i użyj SSH do realizacji działań, które mają być przeprowadzone, sami wpisali YAM.
Dans Wiarygodne, istnieje wiele produktów, które mogą przeszkadzać na początku. Być może słyszałeś o Poradnik Ansible, Skarbiec ansibla et Galaktyka Ansibla.
Ansible i moduły
Dwie rzeczy, które należy wiedzieć:
- Kiedy używasz Wiarygodne, używasz modułów. Istnieje już lista modułów, które zostały już napisane, ale możesz także napisać własne. Będziesz musiał napisać to w Pythonie.
- Musisz podać domenę/grupę IP lub grupę, w której akcja ma zostać użyta.
Przykład:
Sprawdzimy, czy nasza maszyna jest dobra up z modułem świst.
1
2
3
4
5
|
$ ansible localhost -m ping
host lokalny | SUKCES => {
„zmieniony”: fałszywy,
"świst": „pong”
}
|
Aby użyć czegoś innego niż localhost, takich jak zestaw domen, należy uzupełnić plik /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 | sukces >> {
„zmieniony”: fałszywy,
"świst": „pong”
}
www.baptiste-donaux.fr | sukces >> {
„zmieniony”: fałszywy,
"świst": „pong”
}
|
I w ten sposób sprawdzamy, że a basen serwerów w dobrym stanie up . Oto lista obecnych podstawowych modułów.
Gdy zrozumiesz, jak działa moduł, możesz używać wszystkich innych modułów w ten sam sposób. Korzystając z modułu, możesz podać argumenty (argument -a).
Na przykład, jak uruchomić jedno polecenie na wielu.
1
2
3
4
5
6
|
$ ansible -m powłoka -a „docker – wersja” baptiste-donaux.fr
me.baptiste-donaux.fr | udany | rc=0 >>
Wersja Dockera 1.12.1, kompilacja 23cf638
www.baptiste-donaux.fr | udany | rc=0 >>
Wersja Dockera 1.12.1, kompilacja 23cf638
|
Ale upewnij się również, że pakiet jest zainstalowany.
1
2
3
4
|
$ ansible -m apt -a „nazwa = stan vima = obecny” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sukces >> {
„zmieniony”: fałszywy
}
|
Lub po prostu zaktualizuj jeden lub więcej serwerów.
1
2
3
4
5
6
7
8
9
10
11
12
|
$ ansible -m apt -a „update_cache=tak” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sukces >> {
„zmieniony”: fałszywy
}
$ ansible -m apt -a „uaktualnienie=dystans” www.baptiste-donaux.fr
www.baptiste-donaux.fr | sukces >> {
„zmieniony”: fałszywy,
„Wiadomość”: „Odczytywanie list pakietów…nBudowanie drzewa zależności…nOdczytywanie informacji o stanie…n0 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 0 nieaktualizowanych.n”,
“stderr”: „”,
„standardowe wyjście”: „Odczytywanie list pakietów…nBudowanie drzewa zależności…nOdczytywanie informacji o stanie…n0 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 0 nieaktualizowanych.n”
}
|
Ansible i Playbooks (witamy w prawdziwym świecie)
Zarządzanie flotą maszyn za pomocą zleceń jest już dobre, a to przede wszystkim podstawaWiarygodne. Mimo to trudno wyobrazić sobie rozgrywanie scenariusza poprzez wykonywanie poleceń jeden po drugim. Na szczęście dla nas ansible-poradnik jest tu po to!
Scenariusze są napisane w YAML. Oto mały przykład.
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
|
– gospodarze: baptiste-donaux.fr
zadania:
- Nazwa: Dodaj klucz APT do repozytorium Docker
apt_klucz:
serwer kluczy: „hkp://p80.pool.sks-keyservers.net:80”
id: 58118E89F3A912897C070ADBF76221572C52609D
- Nazwa: Dodaj repozytorium APT Docker
apt_repozytorium: repo=„deb https://apt.dockerproject.org/repo debian-jessie main” stan = obecny
- Nazwa: Zaktualizuj pamięć podręczną APT za pomocą nowego repozytorium
trafny: aktualizacja_cache=tak
- Nazwa: Zainstaluj pakiet docker-engine, jeśli nienie istnieje
apt: nazwa = stan silnika dokera = obecny
– name: Włącz i uruchom usługę Docker
systemd: enable=yes state=started name=docker
– nazwa: InstallPython
apt: nazwa=stan Pythona=obecny
– nazwa: Zainstaluj PIP
apt: nazwa=python-pip stan=obecny
– nazwa: zależność docker-py
pip: nazwa=docker-py
– nazwa: Pociągnij obraz Nginx
docker_image: nazwa = nginx pull = tak
– nazwa: Utwórz kontener Nginx
docker_container:
imię: pełnomocnik
obraz: nginx
opublikowane_porty:
– „80:80”
stan: obecny
|
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
ZAGRAJ [baptiste-donaux.fr] ***************************************** * ************
ZADANIE [ustawienia] ********************************************** ********************
ok: [baptiste-donaux.fr]
ZADANIE [Dodaj klucz APT dla Repozytorium Dockera] ****************************************
ok: [baptiste-donaux.fr]
ZADANIE [Dodaj repozytorium APT Docker] ******************************************** ****
ok: [baptiste-donaux.fr]
ZADANIE [Zaktualizuj pamięć podręczną APT za pomocą nowego repozytorium] ************************************
ok: [baptiste-donaux.fr]
ZADANIE [Zainstaluj pakiet docker-engine if tak nie jestnie istnieje] *********************
ok: [baptiste-donaux.fr]
ZADANIE [Zainstaluj Pythona] ********************************************* ************
ok: [baptiste-donaux.fr]
ZADANIE [Zainstaluj PIP] ********************************************* ****************
ok: [baptiste-donaux.fr]
ZADANIE [zależność docker-py] ****************************************** *********
ok: [baptiste-donaux.fr]
ZADANIE [Pobranie obrazu Nginx] ******************************************** *************
ok: [baptiste-donaux.fr]
ZADANIE [Utwórz kontener Nginx] ****************************************** *****
ok: [baptiste-donaux.fr]
PODSUMOWANIE PLAY************************************************ **********************
baptiste-donaux.fr: ok=10 zmieniono=0 nieosiągalny=0 nie powiodło się=0
|
A to nic prostszego. Oprócz uruchomienia kompletnego scenariusza na zestawie serwerów, jeśli jeden z nich okaże się błędny, plik .spróbować ponownie zostanie utworzony i po ponownym uruchomieniu polecenia scenariusz zostanie wznowiony od miejsca, w którym został przerwany.
Ansible Galaxy i Vault
Galaxy i miejsce przechowywania modów
Ansible-Galaxy to Hub do udostępniania modułów. Działa to trochę jak Centrum Dockera dla obrazów Dockera.
Vault i jak chronić poufne informacje
W niektórych przypadkach będziesz musiał przechowywać poufne informacje w swoich scenariuszach (hasło itp.). Zamiast przechowywać te informacje w postaci zwykłego tekstu, możesz kodować/dekodować ich pliki.
Mały przykład nie zaszkodzi.
1
2
3
4
|
# mój_playbook.yml
– gospodarze: localhost
zadania:
- powłoka: sshpass -p „fuuu” 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
|
# Zakoduj swój plik za pomocą Vault
$ansible-vault zaszyfruj my_playbook.yml
Nowe hasło do skarbca:
Potwierdź nowe hasło do skarbca:
Szyfrowanie powiodło się
# Wyświetl zakodowany podręcznik
$ cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Użyj zakodowanego podręcznika bez uprzedniego dekodowania
$ ansible-playbook my_playbook.yml –ask-vault-pass
Hasło skarbca:
...
|
Wnioski
Ten artykuł ma na celu przedstawienie Wiarygodne i pokaż, jak może uprościć Twoje zadania. Zachęcamy do przekazywania opinii, ulepszania i/lub poprawiania tego posta.