cesta ze saltstacku do ansible v bigdata prostredí › media › ansible.pdfcesta ze saltstacku do...

79
Cesta ze SaltStacku do Ansible v Bigdata prostˇ red´ ı Petr Krch @v1dlak, Radim Lipovˇ can @radimlipovcan 5. ˇ ıjna 2019 Bigdata system engineers

Upload: others

Post on 29-Jun-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Cesta ze SaltStacku do Ansible

v Bigdata prostredı

Petr Krch @v1dlak, Radim Lipovcan @radimlipovcan

5. rıjna 2019

Bigdata system engineers

Page 2: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 3: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

O kolik se toho starame

• 1735 fyzickych stroju

• 1988 systemu

• 20 clusteru

• 2 datacentra

• 7 adminu

• desıtky vyvojaru

2

Page 4: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

O kolik se toho starame

• 1735 fyzickych stroju

• 1988 systemu

• 20 clusteru

• 2 datacentra

• 7 adminu

• desıtky vyvojaru

2

Page 5: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Pred Ansible byl

Page 6: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 7: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 8: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 9: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 10: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 11: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 12: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 13: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 14: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 15: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Pojd’me to prepsat nebo prepsat

Page 16: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 17: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 18: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Motivace pro prechod

Page 19: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 20: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 21: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 22: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 23: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 24: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 25: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 26: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 27: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 28: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Salt

Until found:

• salt --state-verbose=true state.apply

• less log z mastera

• less log z miniona

9

Page 29: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Salt

Until found:

• salt --state-verbose=true state.apply

• less log z mastera

• less log z miniona

9

Page 30: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Salt

Until found:

• salt --state-verbose=true state.apply

• less log z mastera

• less log z miniona

9

Page 31: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Salt

Until found:

• salt --state-verbose=true state.apply

• less log z mastera

• less log z miniona

9

Page 32: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Ansible

Real-life example:

• ansible-playbook -i hosts/ops.ini fernet.yml -D

• **wild error appears**

10

Page 33: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Testovanı, debugging — Ansible

Real-life example:

• ansible-playbook -i hosts/ops.ini fernet.yml -D

• **wild error appears**

10

Page 34: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 35: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 36: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 37: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 38: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 39: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 40: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 41: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 42: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 43: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 44: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 45: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Rozhodovanı

• 3 mesıce.

• Vyrazne slovo mel nas dev.

• Hodne prototypu (naprıc tymy).

• Rychlost byl blocker.

14

Page 46: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Prechod do Ansible

Page 47: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Narocnost migrace do Ansible

• Nejtezsı bylo vydefinovanı standardu.

• Samotna migrace.

• Order vs require.

• Jinja vs Jinja

15

Page 48: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 49: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 50: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 51: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 52: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 53: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 54: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 55: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 56: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 57: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 58: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 59: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Ansible AWX

Page 60: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Mocny nastroj AWX

• Web UI.

• Vykon serveru.

• Git.

• Logovanı.

• Auditori.

• API.

• Slicing.

• Flow.

• Reporting.

22

Page 61: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Slice

23

Page 62: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Flow

START –> DEFAULT –> CLUSTERS –> DEVOPS –> ...

24

Page 63: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

AWX Report

25

Page 64: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Ansible workflow

Page 65: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

CI - Commity & Flow — Gitlab commits

26

Page 66: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

CI - Commity & Flow — Gitlab CI

27

Page 67: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

CI - Commity & Flow — Lint & Syntax

28

Page 68: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 69: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 70: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 71: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 72: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 73: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 74: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 75: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

CI - Docker prostredı pro Ansible & reporting do Mattermostu

30

Page 76: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 77: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Co dal?

Page 78: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

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

Page 79: Cesta ze SaltStacku do Ansible v Bigdata prostredí › media › Ansible.pdfCesta ze SaltStacku do Ansible v Bigdata prost red Petr Krch @v1dlak, Radim Lipov can @radimlipovcan 5

Ansible Workshop v Seznamu 8.-9.11.

kariera.seznam.cz

Security Engineer

System Engineer - Infrastructure

32