128
Maciej Lasyk DevopsKRK meetup #9 Kraków 2016-04-14 Ansible + Rundeck = śpij adminie, śpij

Rundeck & Ansible

Embed Size (px)

Citation preview

Page 1: Rundeck & Ansible

Maciej Lasyk

DevopsKRK meetup #9

Kraków 2016-04-14

Ansible + Rundeck = śpij adminie, śpij

Page 2: Rundeck & Ansible

Dołącz do projektu Fedora!

http://fedoraproject.org/en/join-fedora

Page 3: Rundeck & Ansible

https://fedoramagazine.org/flock-2016-krakow-poland/

Page 4: Rundeck & Ansible

Ansible & Rundeck?

→ monolityczne instalacje (np. CI)

→ a gdyby tak developerzy sami zarządzali CI?

→ i do tego są potrzebne narzędzia

→ ansible jest prosty

→ rundeck jest jeszcze prostszy

Page 5: Rundeck & Ansible

Ansible & Rundeck?

→ monolityczne instalacje (np. CI)

→ a gdyby tak developerzy sami zarządzali CI?

→ i do tego są potrzebne narzędzia

→ ansible jest prosty

→ rundeck jest jeszcze prostszy

Page 6: Rundeck & Ansible

Ansible & Rundeck?

→ monolityczne instalacje (np. CI)

→ a gdyby tak developerzy sami zarządzali CI?

→ i do tego są potrzebne narzędzia

→ ansible jest prosty

→ rundeck jest jeszcze prostszy

Page 7: Rundeck & Ansible

Ansible & Rundeck?

→ monolityczne instalacje (np. CI)

→ a gdyby tak developerzy sami zarządzali CI?

→ i do tego są potrzebne narzędzia

→ ansible jest prosty

→ rundeck jest jeszcze prostszy

Page 8: Rundeck & Ansible

Ansible & Rundeck?

→ monolityczne instalacje (np. CI)

→ a gdyby tak developerzy sami zarządzali CI?

→ i do tego są potrzebne narzędzia

→ ansible jest prosty

→ rundeck jest jeszcze prostszy

Page 9: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 10: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 11: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 12: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 13: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 14: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 15: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 16: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 17: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 18: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 19: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 20: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 21: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 22: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 23: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 24: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 25: Rundeck & Ansible

Model współpracy dev ↔ ops

Page 26: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 27: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 28: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 29: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 30: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 31: Rundeck & Ansible

Czym jest Ansible?

→ prosty orkiestrator

→ tworzymy playbooki

→ posiada inventory hostów

→ używa ssh

→ pod spodem Python

→ przykładowy playbook I inventory

Page 32: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 33: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 34: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 35: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 36: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 37: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 38: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 39: Rundeck & Ansible

Czym jest Rundeck?

→ “Turn your operations procedures into self-service jobs.”

→ “Safely give others the control and visibility they need.”

→ "...it's the swiss army knife for ops."

→ biblioteka procedur

→ scheduler

→ łatwa integracja z systemami do incydentów

→ po CI / buildzie nadchodzi deployment

→ GUI & API

Page 40: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 41: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 42: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 43: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 44: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 45: Rundeck & Ansible

Czym jest Rundeck?

→ stworzony w Javie + Grails + Jetty + Bootstrap

→ początki w roku 2010

→ Apache license v2.0

→ Copyright 2010 DTO Solutions

→ “DevOps and Automation Specialists”

→ “RunDeck is a command dispatcher with a

modern web console. It lets you easily run commands

across a set of nodes.”

Page 46: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 47: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 48: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 49: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 50: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 51: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 52: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 53: Rundeck & Ansible

Główne koncepty Rundecka

→ projekt (kontener jobów, node'ów I konfiguracji)

→ job (sekwencja komend, skryptów)

→ workflow (sekwencja jobów)

→ nodes (hosty dostępne przez SSH)

→ wykonanie (uruchomienia jobów)

→ użytkownicy

→ uprawnienia

→ API

Page 54: Rundeck & Ansible

Wysokopoziomowe zalety Rundecka

→ Formalizacja procedur w spójnej formie

→ Przejrzysty dashboard

→ Logowanie, audyt, widoczność

→ Elastyczna granulacja uprawnień

→ Interfejs współpracy pomiędzy zespołami

Page 55: Rundeck & Ansible

Wysokopoziomowe zalety Rundecka

→ Formalizacja procedur w spójnej formie

→ Przejrzysty dashboard

→ Logowanie, audyt, widoczność

→ Elastyczna granulacja uprawnień

→ Interfejs współpracy pomiędzy zespołami

Page 56: Rundeck & Ansible

Wysokopoziomowe zalety Rundecka

→ Formalizacja procedur w spójnej formie

→ Przejrzysty dashboard

→ Logowanie, audyt, widoczność

→ Elastyczna granulacja uprawnień

→ Interfejs współpracy pomiędzy zespołami

Page 57: Rundeck & Ansible

Wysokopoziomowe zalety Rundecka

→ Formalizacja procedur w spójnej formie

→ Przejrzysty dashboard

→ Logowanie, audyt, widoczność

→ Elastyczna granulacja uprawnień

→ Interfejs współpracy pomiędzy zespołami

Page 58: Rundeck & Ansible

Wysokopoziomowe zalety Rundecka

→ Formalizacja procedur w spójnej formie

→ Przejrzysty dashboard

→ Logowanie, audyt, widoczność

→ Elastyczna granulacja uprawnień

→ Interfejs współpracy pomiędzy zespołami

Page 59: Rundeck & Ansible

http://www.slideshare.net/dev2ops/rundecks-history-and-future

Page 60: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 61: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 62: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 63: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 64: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 65: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 66: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 67: Rundeck & Ansible

Niskopoziomowe zalety Rundecka

→ Spora liczb pluginów I integracji

→ webhooki

→ Jira, IRC

→ Pagerduty, Slack, Hipchat, Redmine

→ Puppet, Salt, Ansible, Chef

→ Nexus, Jenkins

→ AWS EC2, S3

→ Paczki w popularnych dystrybucjach

Page 68: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 69: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 70: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 71: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 72: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 73: Rundeck & Ansible

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Rundeck vs Jenkins?

Page 74: Rundeck & Ansible

Rundeck vs Jenkins?

→ Jenkins is for Development (software builds)

→ Rundeck is for Operations (executing operational tasks)

→ Both are complementary

→ Rundeck has nodes (hosts) and inventory concept

→ Rundeck executes jobs / workflows on nodes (inventory)

→ Rundeck has ad-hoc commands (you can run those on nodes)

→ Rundeck provides you with fain – grained ACLs

Page 75: Rundeck & Ansible

Rundeck and Jenkins

http://rundeck.org/news/2014/01/08/Jenkins-is-for-development-Rundeck-is-for-operations.html

Page 76: Rundeck & Ansible

Architektura Rundecka

http://rundeck.org/docs/administration/installation.html

Page 77: Rundeck & Ansible
Page 78: Rundeck & Ansible
Page 79: Rundeck & Ansible
Page 80: Rundeck & Ansible
Page 81: Rundeck & Ansible

Lab for demo

https://github.com/docent-net/sesja-linuksowa-2016-rundeck

Page 82: Rundeck & Ansible

Rundeck: przegląd

→ konfiguracja ogólna

→ projekt

→ job

→ nodes

→ command

Page 83: Rundeck & Ansible

Rundeck: przegląd

→ konfiguracja ogólna

→ projekt

→ job

→ nodes

→ command

Page 84: Rundeck & Ansible

Rundeck: przegląd

→ konfiguracja ogólna

→ projekt

→ job

→ nodes

→ command

Page 85: Rundeck & Ansible

Rundeck: przegląd

→ konfiguracja ogólna

→ projekt

→ job

→ nodes

→ command

Page 86: Rundeck & Ansible

Rundeck: przegląd

→ konfiguracja ogólna

→ projekt

→ job

→ nodes

→ command

Page 87: Rundeck & Ansible

Rundeck adhocs

demo (bez ansible'a)

Page 88: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 89: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 90: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 91: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 92: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 93: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 94: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 95: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 96: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 97: Rundeck & Ansible

Rundeck & Ansible

→ Use Rundeck only as GUI, API and scheduler

→ Bring Rundeck inventory to common with Ansible

→ Remember that Rundeck is stupid

→ Create workspace for jobs

→ Clean up this workspace automatically

→ Only run ansible-playbooks

→ Good practices (in my opinion)?

→ Common provisioning core jobs

→ Common “playbook-runner” job

→ Integrate Rundeck & Ansible debug

Page 98: Rundeck & Ansible

Rundeck & Ansible

run job on localhost node

this job actually invokes ansible-playbookon choosen hosts

Page 99: Rundeck & Ansible

Rundeck & Ansible

demo

Page 100: Rundeck & Ansible

Rundeck & Ansible plugin

I'm new to both Rundeck and Ansible so I expect

there to be room for improvements.

Only basic features have been implemented

in this first pass, so I can play around with both tools.

Liking it very much so far! :)

https://github.com/Batix/rundeck-ansible-plugin

Page 101: Rundeck & Ansible

Rundeck API

→ nieoficjalny wrapper pythonowy:

https://github.com/marklap/rundeckrun

→ rundeck_api_helper.py

→ apitoken.policy vs JSESSIONID

Page 102: Rundeck & Ansible

Rundeck API

→ nieoficjalny wrapper pythonowy:

https://github.com/marklap/rundeckrun

→ rundeck_api_helper.py

→ apitoken.policy vs JSESSIONID

Page 103: Rundeck & Ansible

Rundeck API

→ nieoficjalny wrapper pythonowy:

https://github.com/marklap/rundeckrun

→ rundeck_api_helper.py

→ apitoken.policy vs JSESSIONID

Page 104: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 105: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 106: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 107: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 108: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 109: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 110: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 111: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 112: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 113: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 114: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

Page 115: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

provisioning jobs, rundeck maintenance

Page 116: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?(aka Ocado – use case)

provisioning jobs, rundeck maintenance

maintenance of own app clusters

creating app clusters

costs supervision

Page 117: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 118: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 119: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 120: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 121: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 122: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?

Dobre praktyki utrzymania Rundecka w środowisku dev – ops?

→ **nie** edytujcie jobów na codzień w UI

→ joby definiujcie w repo i importujcie (np. przez wrapper API)

→ dzielcie się między sobą swoimi jobami / template'ami

→ trzymajcie logikę w Ansible'u (Puppecie / cokolwiek) – nie

w definicjach jobów rundeckowych

→ testujcie automatycznie wykonanie swoich jobów

→ przekręcajcie często całą instancję Rundecka (powtarzalność)

Page 123: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?Rundeck per zespół? Czemu nie

Page 124: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?Rundeck per zespół? Czemu nie

Page 125: Rundeck & Ansible

To jak z tą współpracą DEV ↔ OPS?Rundeck per zespół? Czemu nie

Page 126: Rundeck & Ansible

Jak chciałem to podsumować?

Page 127: Rundeck & Ansible

Jak chciałem to podsumować?

Page 128: Rundeck & Ansible

Maciej Lasyk

DevopsKRK meetup #9

Kraków 2016-04-14

Ansible + Rundeck = śpij adminie, śpij

Dzięki :)