Martin Vicián vician.cz /ptvician OpenAlt 4. listopadu Obrázek: flamingtext.

Podobné dokumenty
Martin Vicián /ptvician vician.cz. LinuxDays 7. října Obrázek: flamingtext.com 1 / 47

Jak si ochočit Ansible

eduroam.cz správa a deployment pomocí Ansible

Linux na desktopu Pro Běžně Frustrované Uživatele

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Automatizace správy linuxové infrastruktury pomocí Katello a Puppet LinuxDays

Cobbler, Puppet, Func

Životní cyklus IT systémů

CFEngine 3 Nástroj pro hromadnou správu

WORKSHEET 1: LINEAR EQUATION 1

Instalace a konfigurace web serveru. WA1 Martin Klíma

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Efektivní provoz koncových stanic

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

USING VIDEO IN PRE-SET AND IN-SET TEACHER TRAINING

Instrukce pro vzdálené připojení do učebny 39d

Jak importovat profily do Cura (Windows a

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií DIPLOMOVÁ PRÁCE

Cíl workshopu. - seznámit uživatele s prostředím OpenStack - procvičit základní úkony v OpenStack:

POSLECH. M e t o d i c k é p o z n á m k y k z á k l a d o v é m u t e x t u :

CFEngine 3 Nástroj pro hromadnou správu

POSLECH. Anglický jazyk 9. třída Mgr. Martin Zicháček. Jazyk Úroveň Autor Kód materiálu. Z á k l a d o v ý t e x t :

IT ESS II. 1. Operating Systém Fundamentals

Introduction to MS Dynamics NAV

RPM,YUM - bleskove zaklady Jiri Kubina Ver. 1.0 unor 2006

v. 2425a Jak si na PC vypěstovat HTTP (WWW, Web) server a jak ho používat (snadno a rychle) by: Ing. Jan Steringa

CZ.1.07/1.5.00/ Zefektivnění výuky prostřednictvím ICT technologií III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

My Year Manager is Vedoucí našeho ročníku je. P.E. is on Tělocvik mám v

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

SIMATIC WinCC Data Monitor. Siemens s.r.o.

Jak nainstalovat SQL Server 2005 Express Edition

Úvod, jednoduché příkazy

Uživatelská příručka

Úvod do Operačních Systémů

Project 3 Unit 7B Kelly s problem

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

P2D Život postgresového serveru bez ručních zásahů. Jakub Jedelský

Czech Republic. EDUCAnet. Střední odborná škola Pardubice, s.r.o.

System Center Operations Manager

IBM Connections pro firmy s Lotus Notes/Domino. Petr Kunc

Evoluce deploye Od FTP po automatický deploy

POSLECH. M e t o d i c k é p o z n á m k y k z á k l a d o v é m u t e x t u :

Právní formy podnikání v ČR

Gymnázium, Brno, Elgartova 3

Zvýšení zabezpečení počítače

VY_32_INOVACE_06_Předpřítomný čas_03. Škola: Základní škola Slušovice, okres Zlín, příspěvková organizace

Gymnázium, Brno, Elgartova 3

Střední odborná škola a Střední odborné učiliště, Hořovice

OpenNebula pro začátečníky SUT Tomáš Kukrál

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

Gymnázium, Brno, Elgartova 3

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

CAD library. Spuštění aplikace. Práce s aplikací. Popis okna

Travis CI. 8. března InstallFest Travis CI. Miro Hrončok. Co je CI. K čemu CI. Co je potřeba k CI. Co je Travis CI.

Knihovní systém Koha pro každého. Ilustrovaný návod na instalaci. Bohdan Šmilauer, 2013

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

WL-5480USB. Quick Setup Guide

Kompetenční centrum F5 v prostředí cloudu

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava

Digitální učební materiál

Knot DNS workshop. CZ.NIC Labs Daniel Salzman / daniel.salzman@nic.cz Jan Kadlec / jan.kadlec@nic.cz

Materiál slouží k procvičení znalosti přítomného času prostého, tvorbě vět a otázek.

apt-get install freeradius

Gymnázium, Brno, Elgartova 3

Gymnázium, Brno, Elgartova 3

Petr Vlk KPCS CZ. WUG Days října 2016

První kroky s METEL IEC IDE

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

Obsah&/&Content& Všeobecné)podmínky)(v)češtině)) Terms)and)Conditions)(in)english)) )

HP-USS: IT tak, jak potřebujete Karel Kotrba ředitel Enterprise Services HP ČR

Správa linuxového serveru: Zprovoznění Ruby aplikací s RVM, Thin a Nginx

7.VY_32_INOVACE_AJ_UMB7, Tázací dovětky.notebook. September 08, 2013

Microsoft Lync WEB meeting

1. Maple - verze. 2. Maple - prostredi. Document Mode vs. Worksheet Mode

EU peníze středním školám digitální učební materiál

Jak resetovat heslo administrátora Rychlý průvodce HIKVISION TECHNICAL SUPPORT TEAM

PS 1 - LEKCE 2. Lekce: 2.1 Předložky - in, at, for. - KNIHOVNA. Cvičení: V parku. Cvičení: V práci. Tom is in the park.

OS řady Microsoft Windows

Projekt MŠMT ČR: EU peníze školám

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Gymnázium, Brno, Elgartova 3

Ransomware, včera dnes a zítra. Igor Hák ESET software spol. s r.o.

Fakulta elektrotechnická. Tutoriál k softwarovému projektu. Michal Ciasnocha, Stanislav Kokaisl, Jan Mathauser, Milan Molda, Daniel Puncman

Gymnázium, Brno, Elgartova 3

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

AGROKONZULTA ŽAMBERK S. R. O. Popis instalace. Optimalizace krmivové základny

Petr Velan. Monitorování sítě pomocí flow case studies

Gymnázium, Brno, Elgartova 3

Gymnázium, Brno, Elgartova 3

Content management: organizace informací na webových stránkách. Petr Boldiš Studijní a informační centrum Česká zemědělská univerzita v Praze

CZ.1.07/1.5.00/

5.VY_32_INOVACE_AJ_UMB5, Vztažné věty.notebook. September 09, 2013

ADC Young Creative. Brief MOBIL.CZ

Administrace OS Windows

Mobilní malware na platformě Android Přednáška 2. Ing. Milan Oulehla

2. Entity, Architecture, Process

Příručka aplikace KMix. Gaurav Chaturvedi Vývojář: Christian Esken Vývojář: Helio Chissini de Castro Vývojář: Brian Hanson

FILM REVIEW. Vytvořeno v rámci projektu Gymnázium Sušice Brána vzdělávání II

Názvosloví aminů (pokud aminoskupina je hlavní skupinou)

Transkript:

Martin Vicián martin.vician@nic.cz vician.cz /ptvician @vician@mastodon.social OpenAlt 4. listopadu 2018 1 / 41 Obrázek: flamingtext.com

Motivace 2 / 41 Video: youtu.be/dvqnftqu57s, Gif: gph.is/2n4va7l

Pojmy Automatizace Orchestrace 3 / 41 Obrázek: youtu.be/dvqnftqu57s, http://harrypotter.wikia.com

Orchestrace Cíl Konfigurace, správa a deploying všech serverů najednou Iaas (Infrastructure as a service) Propojení se službami poskytujícími "zdroje" (Amazon, OpenStack, DigitalOcean,...) A admini nebudou mít co žrát. Řešení Puppet Chef CFEngine3 SaltStack (OpenSuse) Ansible (RedHat)... 4 / 41

Ansible Open source v Pythonu. Komunikace probíhá přes SSH spojení: šifrované, "bezpečné", pomalé. Nepotřebuje nainstalovaného agenta: Puppet je výborný, ale stejně potřebujete Ansible, abyste jej jednoduše a najednou nainstalovali. (Věroš Kaplan) Potřebuje Python3 (resp. Python2 pro některé moduly ) Popisujeme stav stroje - jak má vypadat. Idempotentní by design (stejná akce = stejný stav). Formáty/jazyky: ini, YaML, Jinja2. 5 / 41

Instalace a konfigurace Instalace: Ubuntu 18.04: 2.5.1 pip: 2.7.0 Cesta konfiguračního souboru (dle priority): $ANSIBLE_CFG./ansible.cfg $HOME/ansible.cfg /etc/ansible/ansible.cfg 6 / 41 Obrázek: https://cs.wikipedia.org/wiki/ansible_(software)

Příprava prostředí Zdroj inspirace Praktické příklady Jessee Keating: Mastering Ansible - Second edition https://xmv.cz/ansible sudo apt install git python-pip sudo pip install ansible git clone https://gitlab.labs.nic.cz/\ mvician/ansible-introduction-examples cd ansible-introduciton-examples Soubory pro spuštění:./??-run.sh Slajdy: https://vician.cz/slides/ 7 / 41 Zdroj obrázku: www.packtpub.com

Inventory konfigurace: inventory = hosts přepínače: -i/--inventory INVENTORY_PATH typické cesty: soubor: hosts složka: inventory/* seznam strojů spravovaných Ansiblem ini formát proměnné určující spojení (konvence) - např.: ansible_connection: local, smart, ssh, paramiko, docker ansible_user ansible_port... sdružení strojů do skupin ansible localhost -m ping 8 / 41

Proměnné v inventory muj-pocitac ansible_connection=local server.example.com ansible_port=9022 turris.example.com ansible_user=root tajnyserver.tajnadomena.tld ansible_host=1.1.1.1 muj-arch-desktop ansible_python_interpreter=/usr/bin/python2 desktop-doma.example.com ansible_ssh_common_args=' \ -o ProxyCommand="ssh -W %h:%p -q root@turris.example.com"' https://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventoryparameters 9 / 41

Playbook složka: playbooks (konvence) seznam stavů/úkolů omezuje se množina serverů z inventory lineární procházení úkolů standardně se vykonává úkol po úkolu na daných strojích yaml - všude stejný počet mezer/tabulátorů Spuštění: ansible-playbook -i 02-hosts playbooks/02-hello-word.yml 10 / 41 Obrázek: how-i-met-your-mother.wikia.com

Struktura playbooku playbooks/03-playbook.yml: - hosts: all tasks: - debug: msg: Hello world! - debug: msg: And again! Spuštění: ansible-playbook -i 03-hosts playbooks/03-playbook.yml nebo:./03-run.sh 11 / 41

Skupiny strojů Hosts ginny [twins] fred george [prefects] bill charlie percy ron Playbook - hosts: twins tasks: - debug: msg: "Weasleys' Wizard Wheezes!!!" - hosts: prefects tasks: - debug: msg: Am I also head-boy? ansible-playbook -i 04-hosts playbooks/04-playbook-limit.yml 12 / 41

Limit strojů - hosts: all:!percy tasks: - debug: msg: "Where is Percy?" - hosts: twins tasks: - debug: msg: "Oh, are you a prefect, Percy?" - hosts: percy tasks: - debug: msg: "Oh, shut up! " ansible-playbook -i 05-hosts playbooks/05-playbook-more.yml 13 / 41

Runtime limit Playbook - hosts: all tasks: - debug: msg: "I'm Fred or George?" Hosts fred george [all:vars] ansible_connection=... ansible-playbook -i 06-hosts playbooks/06-limit.yml \ --limit twins 14 / 41

Hiearchie skupin [weasly] ginny [twins] fred george [prefects] bill charlie percy ron [weasly:children] twins prefects Playbook - hosts: weasly tasks: - debug: msg: "We are..." Run ansible-playbooks \ -i 07-hosts \ playbooks/07-groups.yml 15 / 41

Hiearchie skupin - znázornění ansible-inventory-grapher -q -i 07-hosts all dot -Tpng \ display png:- https://github.com/willthames/ansible-inventory-grapher 16 / 41

Výstupy - hosts: localhost tasks: - shell: date register: currenttime - debug: msg: "Current time is: {{ currenttime.stdout }}" ansible-playbook -i 08-hosts playbooks/08-stdout.yml 17 / 41

Výstupy ok: [localhost] => { "msg": { "changed": true, "cmd": "date", "delta": "0:00:00.001941", "end": "2018-06-27 12:57:20.775504", "failed": false, "rc": 0, "start": "2018-06-27 12:57:20.773563", "stderr": "", "stderr_lines": [], "stdout": "St čen 27 12:57:20 CEST 2018", "stdout_lines": [ "St čen 27 12:57:20 CEST 2018" ]}} 18 / 41

Změny - hosts: localhost tasks: - debug: msg: "No change" register: gringotts - debug: msg: "Was changed" when: gringotts is changed - debug: msg: "Success" when: gringotts is success ok: [localhost] => { "gringotts": { "changed": false, "failed": false, "msg": "No change" } } ansible-playbook -i 09-hosts playbooks/09-changed.yml 19 / 41

Návratový kód - hosts: kingscross tasks: - shell: sl register: hogwartsexpress - debug: msg: "Hogwarts Express isn't installed!" when: hogwartsexpress.rc == 2 ansible-playbook -i 10-hosts playbooks/10-return.yml 20 / 41

Návratový kód https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html - hosts: kingscross tasks: - shell: sl register: hogwartsexpress failed_when: hogwartsexpress.rc == 2 21 / 41

Root? No, thank you! Přihlašujeme se pomocí SSH klíčů. Hosts localhost ansible_user=lab Playbook - hosts: localhost tasks: - shell: whoami ansible-playbook -i 11-hosts playbooks/11-sudo.yml \ --become --ask-become-pass 22 / 41 Obrázek: http://www.techprone.com/

He-who-must-not-be-named - hosts: ron tasks: - name: Rat name debug: msg: "My rat is called Scabbers." - name: Mirror of Erised debug: msg: "I would like to win Quidditch World Cup." ansible-playbook -i 12-hosts playbooks/12-names.yml 23 / 41

Inventory./inventory/gryffindor johnson wood [harrysyear] weasley granger./inventory/hufflepuff diggory [harrysyear] macmillan./inventory/ravenclaw lovegood [harrysyear] patil./inventory/slytherin flint [harrysyear] malfoy crabbe goyle ansible-playbook -i 13-inventory playbooks/13-inventory.yml 24 / 41

Inventory Ansible "jen" sloučí všechny soubory v adresáři ansible-playbook -i 13-inventory playbooks/13-inventory.yml \ -l gryffindor - hosts: gryffindor tasks:... Obojí selže, ale 13-inventory/all funguje: [all:vars] ansible_connection=local 25 / 41

Roles slučujeme úkoly do logických celků sdílíme role (roles_path =\ roles:shared)././ansible.cfg./hosts./playbooks/hello.yml./roles/hello/tasks/main.yml./roles/myrole/tasks/main.yml./shared/users/tasks/main.yml./shared/sshd/tasks/main.yml tasks/main.yml: - name: first debug: msg: Hello World! playbooks/hello.yml: - hosts: localhost roles: - hello - users ansible-playbook -i 15-hosts playbooks/15-roles.yml 26 / 41

Variables V inventory ansible_port,... group_vars host_vars v rolích vychozí vynucné dočasné v úkolech v playboocích ansible-playbook -i 16-hosts playbooks/16-variables.yml 27 / 41 Obrázek: https://www.ebay.co.uk/itm/12x-harry-potter-potion-bottles-/312069127320

Variables - hiearchy https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variableprecedence-where-should-i-put-a-variable Proměnná musí být definovaná! when: variable is not defined msg: "{{ variable default('zapomnnel jsem definovat') }}" ansible-playbook -i 17-hosts playbooks/17-variables.yml typicky: proměnné do rolí role/myrole/defaults/main.yml změny v host_vars a group_vars 28 / 41

Variables - hiearchy 29 / 41

TOP Modules https://docs.ansible.com/ansible/latest/modules/modules_by_category.html ping apt, yum, apt_key, apt_repo,... pip systemd sysctl user git copy template uri 30 / 41

Files https://docs.ansible.com/ansible/latest/modules/copy_module.html roles/gryffindor/tasks/main.yml roles/gryffindor/files/fat-lady-password.txt - copy: src: fat-lady-password.txt dest: /etc/gryffindor-door/fat-lady-password.txt owner: percy group: percy mode: 0644 31 / 41

Templates https://docs.ansible.com/ansible/latest/modules/template_module.html https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html roles/teachers/tasks/main.yml roles/teachers/templates/.jinja2 - copy: src: herbology.jinja2 dest: /etc/herbology.txt owner: dumbledore group: dumbledore mode: 0644 Teacher: {{ teacher }} {% for item in... %} - {{ item }} {% endfor %} ansible-playbook -i 19-hosts playbooks/19-templates.yml 32 / 41

Loops https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html - debug: msg: "I'm {{ item }} Weasley." with_items: [ Fred, George ] - debug: msg: "I'm {{ item }} Weasley." with_items: - Fred - George - debug: msg: "I'm {{ item }} Weasley." with_items: "{{ twins_names }}" ansible-playbook -i 20-hosts playbooks/20-loops.yml 33 / 41

Handlers https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlersrunning-operations-on-change roles/gryffindor/tasks/main.yml roles/gryffindor/handlers/main.yml - copy: dest: /etc/gryffindor-door/fat-lady-password.txt content: "{{ password }}" notify: fatlady reload notify jen při změně ansible-playbook -i 21-hosts playbooks/21-handlers.yml 34 / 41

Tasks include roles/users/tasks/main.yml roles/users/tasks/user.yml main.yml: - name: Process each user include: user.yml with_items: "{{ users }}" user.yml: - user: name: "{{ item }}" 35 / 41

Tagy https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html tagovat lze: task v roli roli v playbooku - hosts: all roles: - {role: users, tags: users} - {role: sshd, tags: sshd} ansible-playbook example.yml --tags "users,sshd" 36 / 41

Konvence nepoužívat roli common (není jasné, co dělá) závislosti řešit na úrovni playbooku a ne v rolích jeden playbook pro jednu činnost citlivá data dohromady separátně v playbooks žádné tasks každá role má README.md proměnné jsou v defaults playbooky neobsahují duplikátní role proměnné obalené mezerami: {{ promenna }} proměnné s prefixem názvu role 37 / 41 Obrázek: http://harrypotter.wikia.com/wiki/file:harry_potter_movie_pictures-professors.jpg

Sdílime role! ansible-galaxy: https://galaxy.ansible.com/ (spíš inspirace, pozor na bezpečnost) git submoduly s tagovanými čísly verzí ansible.cfg: roles_path = roles:companyroles:galaxy-roles 38 / 41 Obrázek: http://www.harrypotterpartyideas.com/the-props/monster-book-of-monsters-and-other-books

Ansible vault ansible.cfg: vault_password_file = vault.sh #!/bin/sh DN="$(dirname "$0")" gpg2 --batch --use-agent --decrypt "$DN"/pass.gpg \ 2> /dev/null ansible-vault [create edit view] file group_vars/all/secure.yml host_vars/harry/diary.yml 39 / 41

Become - hosts: localhost tasks: - name: gitlab projects git: repo: "ssh://git@gitlab.com/project" dest: "/home/{{ ansible_env['user'] }}/project" become: no ansible-playbook playbooks/gitproject.yml --become \ --ask-become-pass 40 / 41

Otázky? 41 / 41 Obrázek: www.quora.com