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

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

Jak si ochočit Ansible

eduroam.cz správa a deployment pomocí Ansible

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

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

CFEngine 3 Nástroj pro hromadnou správu

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Životní cyklus IT systémů

Evoluce deploye Od FTP po automatický deploy

Cobbler, Puppet, Func

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.

WORKSHEET 1: LINEAR EQUATION 1

Instalace a konfigurace web serveru. WA1 Martin Klíma

Efektivní provoz koncových stanic

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

CFEngine 3 Nástroj pro hromadnou správu

IT ESS II. 1. Operating Systém Fundamentals

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

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

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

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

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

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

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

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

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

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

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 :

Jak importovat profily do Cura (Windows a

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

OS řady Microsoft Windows

Introduction to MS Dynamics NAV

Praktické zkušenosti s Azure DevOps

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

Úvod, jednoduché příkazy

Jak nainstalovat SQL Server 2005 Express Edition

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

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

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

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 :

System Center Operations Manager

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

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

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

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

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

Uživatelská příručka

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

Project 3 Unit 7B Kelly s problem

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

Petr Vlk KPCS CZ. WUG Days října 2016

Instalace Debianu pomocí debootstrap

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

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

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

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

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

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

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.

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

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

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 :

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

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

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE

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

WL-5480USB. Quick Setup Guide

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

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

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

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

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

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Digitální učební materiál

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

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

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

II_ _Listening Pracovní list č. 2.doc II_ _Listening Pracovní list č. 3.doc II_ _Listening Řešení 1,2.doc

Project Life-Cycle Data Management

Kdo jsme Čím se zabýváme Nabídka služeb pro veřejnou správu Ověřeno v praxi u tisíce uživatelů v podnikatelské a bankovní sféře Plně využitelné u

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

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

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

Triky s OpenSSH. 4. listopadu Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

CZ.1.07/1.5.00/

Gymnázium, Brno, Elgartova 3

apt-get install freeradius

První kroky s METEL IEC IDE

Hudba a hudební nástroje, knihy a čtení, filmy a chození do kina, divadla

VY_32_INOVACE_5 Anglický jazyk Vypracovala: Mgr. Marcela Minaříková Test 5-3 Opakování Theme 2 Birthday Vznik: listopad 2013 Číslo projektu:

Administrace OS Windows

Git. The information manager from hell. Robin Obůrka

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

ADC Young Creative. Brief MOBIL.CZ

Kód: Vzdělávací materiál projektu Zlepšení podmínek výuky v ZŠ Sloup. Present simple "to have, to be"

Introduction to Navision 4.00 Jaromír Skorkovský, MS., PhD.

2. Entity, Architecture, Process

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

Microsoft Lync WEB meeting

Transkript:

Martin Vicián martin.vician@nic.cz /ptvician vician.cz LinuxDays 7. října 2018 1 / 47 Obrázek: flamingtext.com

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

Pojmy Automatizace Orchestrace 3 / 47 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 / 47

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 / 47

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 / 47 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://www.vician.cz/pages/slides/ 7 / 47 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 / 47

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 / 47

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 / 47 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 / 47

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 / 47

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 / 47

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 / 47

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 / 47

Hiearchie skupin - znázornění [all] + -- [weasly] + -- ginny + -- [twins] + -- fred + -- george + -- [prefects] + -- percy + -- ron + -- [finishedschoolbeforefirstbook] + -- bill + -- charlie [ungrouped] + -- harry + -- hermione 16 / 47

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 / 47

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 / 47

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 / 47

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 / 47

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 / 47

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 / 47 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 / 47

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 / 47

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 / 47

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 / 47

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 / 47 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 / 47

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 29 / 47

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 30 / 47

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 31 / 47

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 32 / 47

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 33 / 47

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 }}" 34 / 47

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" 35 / 47

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 36 / 47 Obrázek: http://harrypotter.wikia.com/wiki/file:harry_potter_movie_pictures-professors.jpg

Syntaxe - apt: name=sudo state=present => - apt: name: sudo state: present state: latest nebo stable zajistí aktualizaci (i nežádoucí) 37 / 47 Obrázek: http://harrypotter.wikia.com/wiki/file:wingardium_leviosa.jpg

Git, git, git verzování merge requesty podepisování commitů, tagů,... deploy jenom z master CI pro kontrolu konvencí 38 / 47 Obrázek: https://medium.com/qbits/managing-github-project-boards-with-ansible-79139b7bb9d1

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 39 / 47 Obrázek: http://www.harrypotterpartyideas.com/the-props/monster-book-of-monsters-and-other-books

Vícenasobná hiearchie skupin [weasly] ginny [twins] fred george [prefects] bill charlie percy ron [weasly:children] twins prefects [finishedschoolbeforefirstbook] bill charlie lupin [hogwartsteacher] lupin dumbledore [werewolf] lupin proměnné dle pohledu skupiny 40 / 47

SSH Proxy [servers]...... [behind_proxy] omina.example.com [behind_proxy:vars] ansible_ssh_common_args='-o ProxyCommand=\ "ssh -W %h:%p -q root@nat.example.com"' 41 / 47

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 42 / 47

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 43 / 47

Delegate - include: 'lxchost.yml' delegate_to: '{{ run_on }}' aplikováno na celé lxchost.yml run_on musí byt v inventory použití: virtualizace, kontejnerizace 44 / 47 Obrázek: https://deskgram.org/p/1679187689125359923_6773086394

Ansible Tower Pozitiva: webové GUI pro ansible snadné spouštění na velkém množství severů intuitivní přehled stavů Negativa: ansible na serveru pro automatické spouštění ansible-vault https://youtu.be/toxodduozj8 45 / 47

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

47 / 47