cesta ze saltstacku do ansible v bigdata prostredí › media › ansible.pdfcesta ze saltstacku do...
TRANSCRIPT
Cesta ze SaltStacku do Ansible
v Bigdata prostredı
Petr Krch @v1dlak, Radim Lipovcan @radimlipovcan
5. rıjna 2019
Bigdata system engineers
Obsah
1. Pred Ansible byl
2. Kudy se vydat?
3. Motivace k prechodu
4. Prechod do Ansible
5. Ansible AWX
6. Workflow
7. Co dal?
1
O kolik se toho starame
• 1735 fyzickych stroju
• 1988 systemu
• 20 clusteru
• 2 datacentra
• 7 adminu
• desıtky vyvojaru
2
O kolik se toho starame
• 1735 fyzickych stroju
• 1988 systemu
• 20 clusteru
• 2 datacentra
• 7 adminu
• desıtky vyvojaru
2
Pred Ansible byl
SaltStack v podanı Admins6
• Architektura master-slave.
• Vsechno na masterech.
• Lokalne
• Gitfs
• Syncthing pro synchronizaci mezi mastery.
• Napojenı na Git pouze na jednom
SaltMasteru (push/pull). :-(
3
SaltStack v podanı Admins6
• Architektura master-slave.
• Vsechno na masterech.
• Lokalne
• Gitfs
• Syncthing pro synchronizaci mezi mastery.
• Napojenı na Git pouze na jednom
SaltMasteru (push/pull). :-(
3
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
Master! Slave. Sync?
1. Tym 7 bigdata engineeru.
• Dojde vıcero pozadavku (RT, issues v GitLabu), napr. dva z toho pro fernet cluster.
2. Vsichni: ssh saltmaster1.{loc1|loc2}• vim salt/env/pillar/clusters/fernet/init.sls
• Pro prvnıho zadny problem...
3. Ostatnı majı radost:
4. Jak vyresit problem workflow s mastery?
• Vzdy jeden na masteru. 7
• Pouze jeden z tymu bude delat na saltu. 7
• Synchronizace typu ”kdo prave dela?”7
• Prejıt na client-Gitlab model. 4
4
SaltStack v2
e x t p i l l a r :
# pro t e s t o v a n i s e branch PILLARu meni zde
# − g i t : robot−s a l t . dev : base g i t @ g i t l a b : d e j v / s a l t 2 . g i t
# − g i t : d e j v / hadoop : base g i t @ g i t l a b : a6 / v2 . g i t
# − g i t : d i g r i / vodka : base g i t @ g i t l a b : a6 / v2 . g i t
# − g i t : master : base g i t @ g i t l a b : a6 / v2 . g i t
− g i t : m i n i / prometheus : base g i t @ g i t l a b : a6 / v2 . g i t
g i t f s r e m o t e s :
− g i t @ g i t l a b : admins6 / s a l t s t a t e s −v2 . g i t :
− r o o t : base
# − base : m i n i / prometheus
# − base : s imunek /jmx−e x p o r t e r−node−manager
− g i t @ g i t l a b : s a l t / szn−f o r m u l a s . g i t
− g i t @ g i t l a b : s a l t / e l a s t i c s e a r c h . g i t
− g i t @ g i t l a b : s a l t / k a f k a . g i t5
Pojd’me to prepsat nebo prepsat
SWOTka
SaltStack• Rozjety vlak.
• Rychlost.
• Spustenı state.apply z minionu.
• Autorizace pres mastera (root).
• Spustena vec je k nezastavenı.
• Zije jeste komunita?
Ansible• Jednodussı vyvoj.
• Vetsı komunita.
• Jednodussı autorizace.
• Ucıcı krivka.
• Horsı skalovanı.
6
SWOTka
SaltStack• Rozjety vlak.
• Rychlost.
• Spustenı state.apply z minionu.
• Autorizace pres mastera (root).
• Spustena vec je k nezastavenı.
• Zije jeste komunita?
Ansible• Jednodussı vyvoj.
• Vetsı komunita.
• Jednodussı autorizace.
• Ucıcı krivka.
• Horsı skalovanı.
6
Motivace pro prechod
Materialy
Z pohledu novacka v Saltu, ktery ma zkusenosti s Ansiblem.
Ansible
• Oficialnı dokumentace. 4
• Youtube materialy. 4
• Github aktivita (2019). 4
Saltstack
• Oficialnı dokumentace. 4
• Youtube materialy. 7
• Github aktivita (2019). 7
7
Materialy
Z pohledu novacka v Saltu, ktery ma zkusenosti s Ansiblem.
Ansible
• Oficialnı dokumentace. 4
• Youtube materialy. 4
• Github aktivita (2019). 4
Saltstack
• Oficialnı dokumentace. 4
• Youtube materialy. 7
• Github aktivita (2019). 7 7
Materialy
Z pohledu novacka v Saltu, ktery ma zkusenosti s Ansiblem.
Ansible
• Oficialnı dokumentace. 4
• Youtube materialy. 4
• Github aktivita (2019). 4
Saltstack
• Oficialnı dokumentace. 4
• Youtube materialy. 7
• Github aktivita (2019). 7
7
Materialy
Z pohledu novacka v Saltu, ktery ma zkusenosti s Ansiblem.
Ansible
• Oficialnı dokumentace. 4
• Youtube materialy. 4
• Github aktivita (2019). 4
Saltstack
• Oficialnı dokumentace. 4
• Youtube materialy. 7
• Github aktivita (2019). 7
7
Materialy
Z pohledu novacka v Saltu, ktery ma zkusenosti s Ansiblem.
Ansible
• Oficialnı dokumentace. 4
• Youtube materialy. 4
• Github aktivita (2019). 4
Saltstack
• Oficialnı dokumentace. 4
• Youtube materialy. 7
• Github aktivita (2019). 7
7
Testovanı, debugging — Salt
Real-life example:
• Hezky den v Brne, 6:30 rano...
• chcete nasadit novou featuru a vrtate se v automatizaci.
• salt state.apply
• **wild error appears**
8
Testovanı, debugging — Salt
Real-life example:
• Hezky den v Brne, 6:30 rano...
• chcete nasadit novou featuru a vrtate se v automatizaci.
• salt state.apply
• **wild error appears**
8
Testovanı, debugging — Salt
Real-life example:
• Hezky den v Brne, 6:30 rano...
• chcete nasadit novou featuru a vrtate se v automatizaci.
• salt state.apply
• **wild error appears**
8
Testovanı, debugging — Salt
Real-life example:
• Hezky den v Brne, 6:30 rano...
• chcete nasadit novou featuru a vrtate se v automatizaci.
• salt state.apply
• **wild error appears**
8
Testovanı, debugging — Salt
Until found:
• salt --state-verbose=true state.apply
• less log z mastera
• less log z miniona
9
Testovanı, debugging — Salt
Until found:
• salt --state-verbose=true state.apply
• less log z mastera
• less log z miniona
9
Testovanı, debugging — Salt
Until found:
• salt --state-verbose=true state.apply
• less log z mastera
• less log z miniona
9
Testovanı, debugging — Salt
Until found:
• salt --state-verbose=true state.apply
• less log z mastera
• less log z miniona
9
Testovanı, debugging — Ansible
Real-life example:
• ansible-playbook -i hosts/ops.ini fernet.yml -D
• **wild error appears**
10
Testovanı, debugging — Ansible
Real-life example:
• ansible-playbook -i hosts/ops.ini fernet.yml -D
• **wild error appears**
10
Testovanı, debugging — Ansible
Until found:
• ansible-playbook -i hosts/ops.ini fernet.yml -D -v
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vv
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vvv
• Vazne vopravdu vsechno vypis -vvvv.
11
Testovanı, debugging — Ansible
Until found:
• ansible-playbook -i hosts/ops.ini fernet.yml -D -v
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vv
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vvv
• Vazne vopravdu vsechno vypis -vvvv.
11
Testovanı, debugging — Ansible
Until found:
• ansible-playbook -i hosts/ops.ini fernet.yml -D -v
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vv
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vvv
• Vazne vopravdu vsechno vypis -vvvv.
11
Testovanı, debugging — Ansible
Until found:
• ansible-playbook -i hosts/ops.ini fernet.yml -D -v
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vv
• ansible-playbook -i hosts/ops.ini fernet.yml -D -vvv
• Vazne vopravdu vsechno vypis -vvvv.
11
Sprava prıstupu - Saltmaster
Saltmaster vs Ansible s pouzitım Ed25519 klıcu.
Pro master (SaltStack)
• Prıstup na master = prıstup na vse.
• Po pridanı miniona se jiz nemusıme
”starat”.
Proti masteru (SaltStack)
• Prıstup na master = prıstup na vse.
• Mohu se dostat i jinam, nez bych mel.
• DevOps na master jednoduse pustit nelze.
• Nutnost udrzovanı stejne verze naprıc
distry.
12
Sprava prıstupu - Saltmaster
Saltmaster vs Ansible s pouzitım Ed25519 klıcu.
Pro master (SaltStack)
• Prıstup na master = prıstup na vse.
• Po pridanı miniona se jiz nemusıme
”starat”.
Proti masteru (SaltStack)
• Prıstup na master = prıstup na vse.
• Mohu se dostat i jinam, nez bych mel.
• DevOps na master jednoduse pustit nelze.
• Nutnost udrzovanı stejne verze naprıc
distry.
12
Sprava prıstupu - Saltmaster
Saltmaster vs Ansible s pouzitım Ed25519 klıcu.
Pro master (SaltStack)
• Prıstup na master = prıstup na vse.
• Po pridanı miniona se jiz nemusıme
”starat”.
Proti masteru (SaltStack)
• Prıstup na master = prıstup na vse.
• Mohu se dostat i jinam, nez bych mel.
• DevOps na master jednoduse pustit nelze.
• Nutnost udrzovanı stejne verze naprıc
distry.
12
Sprava prıstupu - Saltmaster
Saltmaster vs Ansible s pouzitım Ed25519 klıcu.
Pro master (SaltStack)
• Prıstup na master = prıstup na vse.
• Po pridanı miniona se jiz nemusıme
”starat”.
Proti masteru (SaltStack)
• Prıstup na master = prıstup na vse.
• Mohu se dostat i jinam, nez bych mel.
• DevOps na master jednoduse pustit nelze.
• Nutnost udrzovanı stejne verze naprıc
distry.
12
Sprava prıstupu - Ansible s pouzitım Ed25519 klıcu.
Saltmaster vs Ansible s pouzitım Ed25519 klıcu
Pro klıce (Ansible)
• Omezenı dle klıcu prımo na stroj.
• Integrace dev, devops do provozu.
• No gods, no masters.
Proti klıcu (Ansible)
• Bez bezıcıho ssh se nepohneme.
• Nutnost pracovat z klienta/AWX
(pozdeji).
• Mnohem pomalejsı nez minion-master.
13
Sprava prıstupu - Ansible s pouzitım Ed25519 klıcu.
Saltmaster vs Ansible s pouzitım Ed25519 klıcu
Pro klıce (Ansible)
• Omezenı dle klıcu prımo na stroj.
• Integrace dev, devops do provozu.
• No gods, no masters.
Proti klıcu (Ansible)
• Bez bezıcıho ssh se nepohneme.
• Nutnost pracovat z klienta/AWX
(pozdeji).
• Mnohem pomalejsı nez minion-master.
13
Sprava prıstupu - Ansible s pouzitım Ed25519 klıcu.
Saltmaster vs Ansible s pouzitım Ed25519 klıcu
Pro klıce (Ansible)
• Omezenı dle klıcu prımo na stroj.
• Integrace dev, devops do provozu.
• No gods, no masters.
Proti klıcu (Ansible)
• Bez bezıcıho ssh se nepohneme.
• Nutnost pracovat z klienta/AWX
(pozdeji).
• Mnohem pomalejsı nez minion-master.
13
Rozhodovanı
• 3 mesıce.
• Vyrazne slovo mel nas dev.
• Hodne prototypu (naprıc tymy).
• Rychlost byl blocker.
14
Prechod do Ansible
Narocnost migrace do Ansible
• Nejtezsı bylo vydefinovanı standardu.
• Samotna migrace.
• Order vs require.
• Jinja vs Jinja
15
Jinja vs Jinja
1 s t a r t
2 {% f o r mount i n t a r g e t . mnts | s o r t %}3 {{ mount }}4 {% e n d f o r %}5 end
Ansible
1 s t a r t
2 /mnt/ d i s k 1
3 /mnt/ d i s k 2
4 /mnt/ d i s k 3
5 end
SaltStack
1 s t a r t
2
3 /mnt/ d i s k 1
4
5 /mnt/ d i s k 2
6
7 /mnt/ d i s k 3
8
9 end16
Adresarova struktura - puvodnı myslenka
Vychozı struktura
Puvodnı planovanı pri zacatku repozitare.
/
filter plugins
host vars
hosts
library
module utils
roles
playbook.yml
another playbook.yml
Hlavnı zdroje
https://docs.ansible.com/ansible/latest/user guide/playbooks best practices
https://github.com/ansible/ansible-examples
17
Adresarova struktura - puvodnı myslenka
Vychozı struktura
Puvodnı planovanı pri zacatku repozitare.
/
filter plugins
host vars
a6awx
hosts
inventory
library
module utils
roles
[action, cfg, cron, check, sw, sys]-.*
playbook.yml
another playbook.yml
18
Adresarova struktura - stav repozitare
Stav k 03.10.2019
Hlavnı branch: stagning Stable branch: master
Commit statistics for staging Jan 28 - Oct 03
Total: 1938 commits Average per day: 7.8 commits Authors: 38
19
Adresarova struktura - soucasny stav
Realita
Po 10 mesıcıch od zalozenı repozitare.
/
group vars
hosts
molecule
roles
structure template
vaulted vars
gitlab-ci.yml
report.py
merge-staging-to-master.sh
playbooky & wiki cast repa
Hlavnı zdroj
Oficialnı Ansible dokumentace, best practices ze vsech zdroju. 20
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277
21
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277
21
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277 21
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277 21
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277 21
Problemy se skalovanım
Pojd’me si pustit komplexnejsı playbookansible-playbook -i hosts/ops.ini fernet.yml -D
--vault-password-file=.vault password prod -C fernet-worker[1:N]
Mezitım v htopu
1 node0:00:40.527
10 nodes0:02:07.157
20 nodes0:09:03.304
40
0:15:22.817
100
0:31:16.337
Cely cluster 620
1:52:49.277 21
Ansible AWX
Mocny nastroj AWX
• Web UI.
• Vykon serveru.
• Git.
• Logovanı.
• Auditori.
• API.
• Slicing.
• Flow.
• Reporting.
22
Slice
23
Flow
START –> DEFAULT –> CLUSTERS –> DEVOPS –> ...
24
AWX Report
25
Ansible workflow
CI - Commity & Flow — Gitlab commits
26
CI - Commity & Flow — Gitlab CI
27
CI - Commity & Flow — Lint & Syntax
28
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Ansible lint & syntax
• Ansible Lint
• Prvnı faze obrany pred nesvary.
• Trailing whitespace.
• Pouzitı raw modulu.
• Vyuzitı curlu mısto uri modulu.
• ansible-lint *.yml nad repozitarem.
• Ansible Syntax
• Dalsı tier pred nami samymi.
• Kontrola proveditelnosti playbooku.
• Syntakticky check playbooku a rolı.
• Napr. v playbooku zustala role, ktera byla odebrana.
• ansible-playbook -i hosts/ops.ini *.yml --syntax-check --verbose nad
repozitarem
• ansible-playbook -i hosts/dev.ini *.yml --syntax-check --verbose nad
repozitarem
29
CI - Docker prostredı pro Ansible & reporting do Mattermostu
30
CI - Docker prostredı pro Ansible & reporting do Mattermostu
• Testovanı rolı pomocı Molecule.
• Jednotlive role jsou spousteny v Dockeru (Debian 9).
• Testuje se pouze subset, nektere vzhledem k prostredı nelze radne otestovat.
• Celkove 6 slices, 20 rolı.
31
Co dal?
Co dal?
Ansible A6
Cycle
PLAN
D
O
CH
ECK
ACT
• Rychlejsı CI pipeline pro vyvoj.
• Vyuzıt API AWX pro automatizaci
dry-runu.
• Prechod z RT systemu na MR.
• Salt jiz neorchestruje, ale stale je ready.
32
Ansible Workshop v Seznamu 8.-9.11.
kariera.seznam.cz
Security Engineer
System Engineer - Infrastructure
32