• Nebyly nalezeny žádné výsledky

Hlavní práce71414_xolea03.pdf, 4.5 MB Stáhnout

N/A
N/A
Protected

Academic year: 2022

Podíl "Hlavní práce71414_xolea03.pdf, 4.5 MB Stáhnout"

Copied!
128
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Vysoká škola ekonomická v Praze

Fakulta informatiky a statistiky

Využití platformy Ansible pro automatizaci IT infrastruktury

DIPLOMOVÁ PRÁCE

Studijní program: Aplikovaná informatika Studijní obor: Podniková informatika

Autor: Bc. Andrea Olexová

Vedoucí diplomové práce: doc. Ing. Alena Buchalcevová, Ph.D.

Praha, Červen 2020

(2)

Prohlášení

Prohlašuji, že jsem diplomovou práci Využití platformy Ansible pro automatizaci IT infrastruktury vypracovala samostatně za použití v práci uvedených pramenů a literatury.

V Praze dne 24. června 2020 ...

Andrea Olexová

(3)

Poděkování

Ráda bych poděkovala své vedoucí diplomové práce doc. Ing. Aleně Buchalcevové, Ph.D.

za odborné vedení a rady při psaní mé diplomové práce. Dále chci poděkovat kolegům ze společnosti Vodafone a.s., kteří hledají nové možnosti přístupu k vývoji a administraci IT systémů a já mohu být toho součástí, a také jmenovitě Ing. Markovi Hamšíkovi za pomoc a kontroly formátování práce a správnosti gramatiky.

(4)

Abstrakt

Diplomová práce se zabývá vytvořením metodiky pro využití platformy Ansible pro automatizaci IT infrastruktury (zkráceně MAIPA). Vytvořená metodika MAIPA vychází

z metodiky MMSP-AV, která je transformovaná pro automatizované řešení s využitím platformy Ansible také pomocí principů přístupů DevOps.

V práci jsou nejprve v souladu s dílčími cíli objasněny základní pojmy týkající se tématu diplomové práce. Následně jsou uvedena východiska pro tvorbu metodiky MAIPA a její samotná realizace. Součástí vytvořené metodiky MAIPA je dokumentace k práci s platformou Ansible, která popisuje její praktické nasazení na reálném řešení v telekomunikační organizaci.

Klíčová slova

platforma Ansible, automatizace, MMSP, DevOps, agilní vývoj, IT infrastruktura

JEL klasifikace

O14, O2, O3

(5)

Abstract

This diploma thesis deals with creating a methodology for using the Ansible platform in IT infrastructure automation (abbreviated MAIPA). The created methodology MAIPA is

based on customized methodology MMSP-AV, which is transformated for automation

solution of IT infrastructure with the Ansible platform through the best practises from DevOps.

Firstly, there are explained basic terms related to the diploma thesis in accordance with defined partial objectives. They are followed with approaches and realization of the MAIPA

methodology included description and implementation of the Ansible platform.

An indivisible part of the methodology MAIPA is User Guide for the Ansible platform, that describes real solution in telco organization.

Keywords

Ansible, automation, MMSP, DevOps, agile software development, IT infrastructure

JEL Classification

O14, O2, O3

(6)

Obsah

Úvod ... 17

Vymezení tématu práce a důvod výběru tématu ... 17

Cíle práce a použité metody ... 17

Předpoklady a omezení práce ... 18

Přínosy práce ... 18

1 Rešerše informačních zdrojů ... 19

1.1 Odborné publikace ... 19

1.2 Akademické práce ... 19

1.3 Internetové zdroje ... 21

2 Automatizace IT infrastruktury ... 22

2.1 IT infrastruktura ... 22

2.1.1 Charakteristika IT infrastruktury ... 22

2.1.2 Důvody pro automatizaci IT infrastruktury ... 23

2.1.3 Schéma a služby IT infrastruktury vhodné pro automatizaci ... 24

2.2 Trendy v automatizaci IT infrastruktury ... 25

2.3.1 Přístup DevOps ... 25

2.3.2 Dostupné konfigurační nástroje pro automatizaci IT infrastruktury ... 26

2.3.3 Jiné pomocné nástroje pro automatizaci IT infrastruktury... 27

2.5 Shrnutí ... 30

3 Platforma Ansible ... 32

3.1 Charakteristika platformy Ansible ... 32

3.2 Architektura platformy Ansible ... 33

3.2.1 Playbooky ... 36

3.2.2 Inventory ... 37

3.2.3 Moduly ... 37

3.2.4 Role ... 38

3.3 Shrnutí ... 39

4 Východiska pro definování metodiky MAIPA ... 40

4.1 Metodika MMSP ... 40

4.2 Metodika MMSP-AV ... 41

4.3 Eclipse Process Framework Composer (EPFC) ... 42

(7)

3.4 Shrnutí ... 43

5 Návrh metodiky MAIPA ... 44

5.1 Struktura metodiky MAIPA ... 44

5.2 Role metodiky MAIPA ... 45

5.2.1 Produktový vlastník... 46

5.2.2 Vedoucí týmu ... 47

5.2.3 Architekt ... 48

5.2.4 Analytyk ... 48

5.2.5 Programátor ... 49

5.2.6 Správce automatizace ... 51

5.2.7 Zainteresovaná strana ... 52

5.3 Životní cyklus metodiky MAIPA ... 52

5.3.1 Zahájení ... 53

5.3.2 Rozpracování ... 53

5.3.3 Konstrukce ... 54

5.3.4 Zavedení ... 55

5.4 Disciplíny metodiky MAIPA a jejich úlohy ... 56

5.4.1 Návrh produktové vize ... 56

5.4.2 Návrh architektury... 57

5.4.3 Identifikace požadavků ... 57

5.4.4 Příprava uživatelských příběhů ... 58

5.4.5 Detailní vymezení kvalitativních požadavků ... 59

5.4.6 Správa produktových požadavků ... 60

5.4.7 Prioritizace defektů ... 60

5.4.8 Vytvoření popisu implementace řešení ... 61

5.4.9 Správa uživatelské dokumentace ... 62

5.4.10 Návrh řešení ... 62

5.4.11 Vytvoření Buildu ... 63

5.4.12 Tvorba jednotkových testů ... 64

5.4.13 Provedení jednotkových testů ... 64

5.4.14 Implementace řešení ... 65

5.4.15 Plánování projektu... 65

(8)

5.4.16 Plánování konfiguračního řízení ... 66

5.4.17 Plánování iterace ... 67

5.4.18 Plánování testů ... 68

5.4.19 Moderování týmových schůzek ... 68

5.4.20 Řízení iterace ... 69

5.4.21 Zhodnocení výsledků iterace ... 70

5.4.22 Příprava testů automatizace ... 71

5.4.23 Provedení testů automatizace ... 71

5.4.24 Příprava výkonnostních testů ... 72

5.4.25 Provedení výkonnostních testů ... 73

5.4.26 Vyhodnocení testů ... 73

5.4.27 Monitoring nasazeného řešení ... 74

5.4.28 Akceptace implementovaného řešení ... 74

5.5 Pracovní produkty metodiky MAIPA ... 75

5.5.1 Produktová vize ... 75

5.5.2 Popis architektury ... 76

5.5.3 Seznam produktových požadavků ... 77

5.5.4 Seznam kvalitativních požadavků ... 77

5.5.5 Seznam uživatelských příběhů ... 78

5.5.6 Seznam chyb ... 79

5.5.7 Definice dokončenosti ... 80

5.5.8 Popis implementace řešení ... 80

5.5.9 Uživatelská dokumentace ... 81

5.5.10 Návrh funkcionality... 81

5.5.11 Plán automatizace ... 82

5.5.12 Seznam jednotkových testů ... 83

5.5.13 Výsledky jednotkových testů ... 83

5.5.14 Aplikace s automatizovaným řešením... 84

5.5.15 Zdrojový kód ... 84

5.5.16 Plán projektu ... 85

5.5.17 Konfigurační plán ... 85

5.5.18 Plán iterace ... 86

(9)

5.5.19 Seznam rizik ... 87

5.5.20 Plán testů ... 88

5.5.21 Zápis z týmové schůzky ... 88

5.5.22 Seznam testů automatizace... 89

5.5.23 Výsledky testů automatizace ... 89

5.5.24 Seznam výkonnostních testů ... 90

5.5.25 Výsledky výkonnostních testů ... 90

5.5.26 Akceptační protokol ... 91

5.6 Platforma Ansible ... 91

5.7 Uživatelská příručka pro práci s platformou Ansible ... 91

5.8 Shrnutí ... 92

6 Ověření metodiky MAIPA při nasazení platformy Ansible pro automatizaci správy testovací aplikace ... 93

6.1 Popis testovací aplikace ... 93

6.2 Důvody k nasazení automatizace ... 93

6.3 Použití metodiky MAIPA ... 93

6.4 Řešení úkolů pro automatizaci ... 102

6.4.1 Automatizace vzdálené (re)konfigurace agentů ... 102

6.4.2 Automatizace dolování informací ze zařízení ... 108

6.5 Vyhodnocení nasazené automatizace ... 110

6.6 Shrnutí ... 111

Závěr ... 112

Použitá literatura ... 113 Příloha A: Dokumentace k práci s platformou Ansible ... I Schéma infrastruktury ... I Instalace distro Ubuntu 18.04 pro Windows 10 ... II Stažení ... III Instalace ... III Inicializace a aktualizace nově instalovaného distra ... III Instalace Pythonu ... IV Instalace platformy Ansible ... IV První test funkčnosti ... VII Schéma zapojení zařízení ... VII

(10)

Nastavení inventory souboru ... VIII Nastavení konfiguračního souboru ansible.conf ... IX Ověření funkčnosti dostupnosti zařízení pomocí funkce ping ... X Nastavení Playbooků – práce se soubory pomocí modulů Copy a File ... XI Nastavení Playbooků – nastavení proměnných a práce s template ... XIII

(11)

11

Seznam obrázků

Obrázek 1: Zjednodušený pohled na komponenty IT infrastruktury (EMVIVE , 2017) ... 22

Obrázek 2: Schéma zapojení navrhovaného řešení (Zdroj: autorka) ... 24

Obrázek 3: DevOps a životní cyklus aplikací (Microsoft, 2020) ... 26

Obrázek 4: Porovnání využití nástrojů Chef, Puppet, Ansible a SaltStack v letech 2012-2017 (Johari, 2019) ... 27

Obrázek 5: Ukázka vedení projektu v aplikaci JIRA (Mott, 2015) ... 28

Obrázek 6: Výsledky popularity používání nástrojů pro práci v agilních týmech (VersionOne, 2019) ... 29

Obrázek 7: Charakteristika platformy Ansible (Ahmed, 2019) ... 33

Obrázek 8: Architektura platformy Ansible (Ahmed, 2019)... 34

Obrázek 9: Entitně-vztahový diagram (Hochstein a Moser, 2017) ... 35

Obrázek 10: Role metodiky MMSP a jejich zaměření (Rejnková, 2011) ... 41

Obrázek 11: Metodický rámec v EPFC (Mačurová, 2016) ... 42

Obrázek 12: Role metodiky MAIPA (Zdroj: autorka) ... 45

Obrázek 13: Schéma vztahů role Produktový vlastník pro metodiku MAIPA (Zdroj: autorka) ... 46

Obrázek 14: Schéma vztahů role Vedoucí týmu pro metodiku MAIPA (Zdroj: autorka) ... 47

Obrázek 15: Schéma vztahů role Architekt pro metodiku MAIPA (Zdroj: autorka) ... 48

Obrázek 16: Schéma vztahů role Analytik pro metodiku MAIPA (Zdroj: autorka) ... 49

Obrázek 17: Schéma vztahů role Programátor pro metodiku MAIPA (Zdroj: autorka) ... 50

Obrázek 18: Schéma vztahů role Správce automatizace pro metodiku MAIPA (Zdroj: autorka) ... 51

Obrázek 19: Schéma vztahů role Zainteresovaná strana pro metodiku MAIPA (Zdroj: autorka) ... 52

Obrázek 20: Nastavení inventory (Zdroj: autorka) ... 104

Obrázek 21: Nastavení proměnných host_vars pro jednotlivé agenty (Zdroj: autorka) ... 104

Obrázek 22: Konfigurační soubory pro nastavení zařízení (Zdroj: autorka) ... 105

Obrázek 23: Ansible playbook pro konfiguraci zařízení (Zdroj: autorka) ... 105

Obrázek 24: Log po spuštění playbooku ke konfiguraci zařízení v kontrolním módu (Zdroj: autorka) ... 106

Obrázek 25: Konfigurace agenta (Zdroj: autorka) ... 107

Obrázek 26: Konfigurační změna na agentovi1 (Zdroj: autorka) ... 107

Obrázek 27: Získání informací pomocí Ansible setup modulu (Zdroj: autorka) ... 108

Obrázek 28: Template report.j2 (Zdroj: autorka) ... 109

Obrázek 29: Playbook sysinfo.yml na získavání systemových informací (Zdroj: autorka) ... 109

Obrázek 30: Spuštění playbooku sysinfo.yml - LOG a výpis výstupu (Zdroj: autorka) ... 110

Obrázek 31: Výstup report.csv (Zdroj: autorka) ... 110 Obrázek 32: Schéma zapojení navrhovaného řešení (Zdroj: autorka) ... II Obrázek 33: Ubuntu verze 18.04 instalované ve Windows 10 (Zdroj: autorka) ... III Obrázek 34: Instalace Pythonu verze 2.7 a ověření instalace (Zdroj: autorka) ... IV Obrázek 35: Instalace platformy Ansible a její aktualizace v příkazovém řádku – 1. část (Zdroj:

autorka) ... V Obrázek 36: Instalace platformy Ansible a její aktualizace v příkazovém řádku – 2. část (Zdroj:

autorka) ... VI Obrázek 37: Ověření instalované verze platformy Ansible (Zdroj: autorka) ... VI Obrázek 38: Deinstalace platformy Ansible v příkazovém řádku (Zdroj: autorka) ... VII

(12)

12

Obrázek 39: Schéma zapojení pro první test funkčnosti navrhovaného řešení (Zdroj: autorka) .. VIII Obrázek 40: Výpis konfiguračního souboru hosts (Zdroj: autorka) ... IX Obrázek 41: Výpis konfiguračního souboru ansible.cfg (Zdroj: autorka) ... IX Obrázek 42: První test funkčnosti - ansible modul PING (Zdroj: autorka) ... XI Obrázek 43: Příklady použití modulu Copy a File v Playbooku (Zdroj: autorka) ... XII Obrázek 44: Spuštění Playbooku (Zdroj: autorka) ... XIII Obrázek 45: Nastavení proměnných pro agenty (Zdroj: autorka) ... XIV Obrázek 46: Použití modulu Template (Zdroj: autorka) ... XIV

(13)

13

Seznam tabulek

Tabulka 1: Členění služeb dle předmětu služby (Voříšek, 2008) ... 23

Tabulka 2: Porovnání nástrojů Chef, Puppet, Ansible a SaltStack (Johari, 2019) ... 27

Tabulka 3: Příklad procesu agilního vývoje s nástroji pro automatizaci (Zdroj: autorka) ... 31

Tabulka 4: Elementy v architektuře platformy Ansible (Zdroj: autorka dle (Hochstein a Moser, 2017)) ... 35

Tabulka 5: Prvky metodiky MAIPA včetně jejich stručného popisu (Zdroj: autorka) ... 45

Tabulka 6: Úloha Návrh produktové vize (Zdroj: autorka) ... 57

Tabulka 7: Úloha Návrh architektury (Zdroj: autorka) ... 57

Tabulka 8: Úloha Identifikace požadavků (Zdroj: autorka) ... 58

Tabulka 9: Úloha Příprava uživatelských příběhů (Zdroj: autorka) ... 59

Tabulka 10: Úloha Detailní vymezení kvalitativních požadavků (Zdroj: autorka) ... 59

Tabulka 11: Úloha Správa produktových požadavků (Zdroj: autorka) ... 60

Tabulka 12: Úloha Prioritizace defektů (Zdroj: autorka) ... 61

Tabulka 13: Úloha Vytvoření popisu implementace řešení (Zdroj: autorka) ... 61

Tabulka 14: Úloha Správa uživatelské dokumentace (Zdroj: autorka) ... 62

Tabulka 15: Úloha Návrh řešení (Zdroj: autorka) ... 63

Tabulka 16: Úloha Vytvoření Buildu (Zdroj: autorka) ... 63

Tabulka 17: Úloha Tvorba jednotkových testů (Zdroj: autorka)... 64

Tabulka 18: Úloha Provedení jednotkových testů (Zdroj: autorka) ... 65

Tabulka 19: Úloha Implementace řešení (Zdroj: autorka) ... 65

Tabulka 20: Úloha Plán projektu (Zdroj: autorka) ... 66

Tabulka 21: Úloha Plánování konfiguračního řízení (Zdroj: autorka) ... 67

Tabulka 22: Úloha Plánování iterace (Zdroj: autorka) ... 67

Tabulka 23: Úloha Plánování testů (Zdroj: autorka) ... 68

Tabulka 24: Úloha Moderování týmových schůzek (Zdroj: autorka) ... 69

Tabulka 25: Úloha Řízení iterace (Zdroj: autorka) ... 70

Tabulka 26: Úloha Zhodnocení výsledků iterace (Zdroj: autorka) ... 71

Tabulka 27: Úloha Příprava testů automatizace (Zdroj: autorka) ... 71

Tabulka 28: Úloha Provedení testů automatizace (Zdroj: autorka) ... 72

Tabulka 29: Úloha Příprava výkonnostních testů (Zdroj: autorka) ... 72

Tabulka 30: Úloha Provedení výkonnostních testů (Zdroj: autorka) ... 73

Tabulka 31: Úloha Vyhodnocení testů (Zdroj: autorka) ... 74

Tabulka 32: Úloha Monitoring nasazeného řešení (Zdroj: autorka) ... 74

Tabulka 33: Úloha Akceptace implementovaného řešení (Zdroj: autorka) ... 75

Tabulka 34: Pracovní produkt Produktová vize (Zdroj: autorka) ... 76

Tabulka 35: Pracovní produkt Popis architektury (Zdroj: autorka) ... 77

Tabulka 36: Pracovní produkt Seznam produktových požadavků (Zdroj: autorka) ... 77

Tabulka 37: Pracovní produkt Seznam kvalitativních požadavků (Zdroj: autorka) ... 78

Tabulka 38: Pracovní produkt Seznam uživatelských příběhů (Zdroj: autorka) ... 79

Tabulka 39: Pracovní produkt Seznam chyb (Zdroj: autorka) ... 79

Tabulka 40: Pracovní produkt Definice dokončenosti (Zdroj: autorka) ... 80

Tabulka 41: Pracovní produkt Popis implementace řešení (Zdroj: autorka) ... 81

Tabulka 42: Pracovní produkt Uživatelská dokumentace (Zdroj: autorka) ... 81

(14)

14

Tabulka 43: Pracovní produkt Návrh funkcionality (Zdroj: autorka) ... 82

Tabulka 44: Pracovní produkt Plán automatizace (Zdroj: autorka) ... 82

Tabulka 45: Pracovní produkt Seznam jednotkových testů (Zdroj: autorka) ... 83

Tabulka 46: Pracovní produkt Výsledky jednotkových testů (Zdroj: autorka) ... 83

Tabulka 47: Pracovní produkt Aplikace s automatizovaným řešením (Zdroj: autorka) ... 84

Tabulka 48: Pracovní produkt Zdrojový kód (Zdroj: autorka) ... 84

Tabulka 49: Pracovní produkt Plán projektu (Zdroj: autorka) ... 85

Tabulka 50: Pracovní produkt Konfigurační plán (Zdroj: autorka) ... 86

Tabulka 51: Pracovní produkt Plán iterace (Zdroj: autorka) ... 87

Tabulka 52: Pracovní produkt Seznam rizik (Zdroj: autorka)... 88

Tabulka 53: Pracovní produkt Plán testů (Zdroj: autorka) ... 88

Tabulka 54: Pracovní produkt Zápis z týmové schůzky (Zdroj: autorka) ... 89

Tabulka 55: Pracovní produkt Seznam testů automatizace (Zdroj: autorka) ... 89

Tabulka 56: Pracovní produkt Výsledky testů automatizace (Zdroj: autorka) ... 90

Tabulka 57: Pracovní produkt Seznam výkonnostních testů (Zdroj: autorka) ... 90

Tabulka 58: Pracovní produkt Výsledky výkonnostních testů (Zdroj: autorka) ... 91

Tabulka 59: Úloha Akceptace implementovaného řešení (Zdroj: autorka) ... 91

Tabulka 60: Automatizace správy testovací aplikace s prvky metodiky MAIPA (Zdroj: autorka) 102 Tabulka 61: Optimalizace zdrojů - automatizace (re)konfigurace u výměny 40 zařízení (Zdroj: autorka) ... 111

(15)

15

Seznam výpisů programového kódu

Výpis 1: Příklad jednoduchého playbooku (Red Hat, 2017)……….. 35

Výpis 2: Příklad jednoduchého inventory (Red Hat, 2020)………... 36

Výpis 3: Příklad jednoduchého inventory (Red Hat, 2020)………... 37

Výpis 4: Příklad jednoduchého Playbooku s definováním rolí (Red Hat, 2020)……….. 37 Výpis 5: Shell příkazy pro instalaci Ubuntu verze 18.04 ve Windows 10 v PowerShellu (Zdroj:

autorka)... III Výpis 6: Shell příkazy v Ubuntu verze 18.04 pro aktualizaci balíčku (Zdroj: autorka)…………... IV Výpis 7: Shell příkazy pro instalaci Pythonu verze 2.7 (Zdroj: autorka)……….. IV Výpis 8: Shell příkazy pro instalaci a aktualizace platformy Ansible 2.8 v Ubuntu verze 18.04 (Zdroj:

autorka)……….. V Výpis 9: Shell příkaz pro deinstalaci platformy Ansible (Zdroj: autorka)……… VI Výpis 10: Shell příkazy pro editaci a čtení souboru hosts (Zdroj: autorka)……….. VII Výpis 11: Shell příkazy pro editaci a čtení konfiguračního souboru ansible.cfg (Zdroj: autorka)… IX Výpis 12: Shell příkazy pro nastavení SSH klíčů, ověření SSH přihlášení bez platformy ansible, ověření ansible modulu PING (Zdroj: autorka)………. X

(16)

16

Seznam zkratek

API Application Programming Interface CEO Chief executive officer

DevOps Development & Operations DNS Domain Name System

EPFC Eclipse Process Framework Composer IP Internet Protocol

IS/ICT Information and Communication Technologies IT Information Technology

HW Hardware

MAIPA Metodika pro automatizac IT infrastruktury pomocí platformy Ansible MMSP Malé Softwarové projekty

MMSP-AV Malé Softwarové projekty – Agilní vývoj MND Man-Day (jednotka lidské práce)

SSH Secure Shell

SW Software

XP Agilní metodika Extrémní programování

(17)

17

Úvod

V dnešní době je vyvíjený stále větší tlak na rychlý vývoj a instalaci nových IT řešení, na vyšší efektivitu práce, na zvýšení kvality poskytovaných služeb, a naopak na snížení IT nákladů. V projektovém řízení se napříč všemi organizacemi postupně upouští od tradičních metodik, které jsou nahrazovány agilními metodikami. Trendem posledních let se ve vývoji IT infrastruktury stala také automatizace a virtualizace.

Výsledkem těchto trendů jsou rozsáhlé a komplikované aplikace s velkým objemem vstupních dat a stále přibývajících nových funkčních požadavků. Dané aplikace se stávají velmi bytelnými, což vede k tomu, že nikdo od vývojářů až po administrátory není schopen jejich bezchybného nastavení. Vznikají proto nástroje, které pomáhají snadno řídit rozsáhlá IT řešení, snižovat bezpečnostní rizika a uvolnit zdroje (čas, lidi, peníze). Jedním z nich je platforma Ansible, která umožňuje spravovat rozsáhlou IT infrastrukturu desítek i stovek zařízení od databázových clusterů, management serverů až po aplikační servery. Platforma Ansible může být jednou z odpovědí, jak automatizovat IT infrastrukturu, jak zvýšit kvalitu poskytovaných služeb a taky efektivitu práce, a v neposlední řadě snížit IT náklady.

Vymezení tématu práce a důvod výběru tématu

Tato diplomová práce se zaměřuje na využití platformy Ansible pro automatizaci IT infrastruktury. Důvodem volby tématu je potřeba formulovat ucelený postup práce

s platformou Ansible jako jednu z možností pro automatizaci a zjednodušení IT infrastruktury v praxi.

Mým cílem je navrhnout a implementovat řešení s danou platformou Ansible v rámci mé práce administrátora aplikací v telekomunikační firmě, protože jsem byla součástí několika projektů, které se týkaly implementací podobných nebo náročnějších řešení. To mi ukázalo možnosti, které tato platforma nabízí, a jelikož dávaly smysl, rozhodla jsem se, že chci získané znalosti využít pří psaní této diplomové práce a nejlépe inspirovat budoucí i stávající IT architekty a administrátory v automatizaci.

Cíle práce a použité metody

Hlavním cílem diplomové práce je navrhnout metodiku pro využití platformy Ansible pro automatizaci IT infrastruktury, dále v textu vedena pod zkratkou MAIPA, a ověřit ji v praxi.

(18)

18 Hlavní cíl je rozložen na následující dílčí cíle:

1. charakteristika platformy Ansible pro automatizaci IT infrastruktury;

2. využití platformy Ansible pomocí metodiky MAIPA pro automatizaci správy IT systému, který se používá pro testování telekomunikačních služeb;

3. vyhodnocení optimalizace zdrojů (čas, finance, lidi) v rámci nasazené automatizace;

4. vytvoření dokumentace implementovaného řešení.

Pro dosažení těchto cílů jsem zvolila především rešerše a analýzy z dostupných zdrojů o platformě Ansible, trendech v automatizaci a principech přístupu DevOps. Z metodik jsem

se zaměřila na metodiku MMSP a její rozšířenou verzi MMSP-AV, ze které metodika MAIPA vychází. Dále jsem použila metodu syntézy získaných poznatků a svých pracovních zkušeností tak, aby vytvořená metodika MAIPA byla použitelná v praxi.

Předpoklady a omezení práce

Zaměření této diplomové práce je na vytvoření metodiky MAIPA. Jejím cílem je popsat možnosti, které platforma Ansible nabízí.

Pro úspěšné pochopení je nevyhnutelná aspoň základní znalost administrace unixových systémů včetně práce s příkazovým řádkem, a také základní znalosti programovacích jazyků - Shell, Python a Yaml.

Metodika MAIPA vychází z principů přístupu DevOps, metodiky MMSP i její rozšířené verze MMSP-AV, která tvoří základ metodiky MAIPA a je transformovaná tak, aby byla přínosem pro tvorbu automatizovaných řešení pomocí platformy Ansible. Předpokladem pro plné porozumění je důležitá jejich orientace a znalosti.

Přínosy práce

Tato práce by mohla být užitečná zejména pro architekty a správce komplexních IT řešení.

Po prostudování této práce by měli získat poznatky aplikovatelné v praxi, především ve vývoji nebo správě IT infrastruktury a to v organizacích, které jsou

nakloněny automatizaci IT řešení. Současně mohou využít dokumentaci implementovaného řešení, která je v českém jazyce a je v době psaní této práce ojedinělá.

(19)

19

1 Rešerše informačních zdrojů

Tato kapitola se zaměřuje na přehled informačních zdrojů. Práci s platformou Ansible se věnuje málo dostupných odborných publikací a akademických prací. Naštěstí jsou dostupné některé kvalitní odborné publikace v anglickém jazyce, které ale bohužel nejsou nejaktuálnější, pro orientaci v dané problematice jsou nicméně postačující. Většina aktuálních zdrojů je dostupných na webových stránkách jako dokumentace k platformě Ansible a to v anglickém jazyce.

1.1 Odborné publikace

Platformu Ansible nejlépe popisuje příručka „Ansible : Up & Running : automating configuration management and deployment the easy way“ (Hochstein a Moser, 2017).

Tato publikace objasňuje, jak platforma Ansible funguje a čím se liší od ostatních podobných nástrojů pro konfiguraci a management informačních systémů. Pro konfiguraci platformy Ansible se na příkladech z praxe používá programovací jazyk Yaml. Jak je už z názvu patrné, jedná se o odbornou publikaci v anglickém jazyce.

Další použitou odbornou publikací je kniha „Zlepšování procesů při budování informačních systémů“ (Buchalcevová, 2018). Tato publikace popisuje možnosti, jak zlepšovat procesy při budování informačních systémů. Taky představuje normy, jakou je například mezinárodní norma ISO/IEC, standardy, dále popisuje rigorózní a agilní metodiky a jejich vazby.

Časopis „Computerworld: ucelený informační zdroj pro IT profesionály“ vydal v čísle 10 v roce 2016 dva zajímavé články. První s názvem „Využijte DevOps na maximum“ (Bertram, 2016), který popisuje, které chyby jsou nejčastější při implementaci principů DevOps a jak

se jich vyvarovat. Druhý článek „Využijte DevOps na maximum pomocí nástrojů od společnosti Atlassian“ (Husáková, 2016), seznamuje čitatele s různými produkty od společnosti Atlassian, které je možné využít při zavádění DevOps ve firmách na celém

světě. Jedná se o zajímavý pohled na přístup DevOps v praxi obou autorů.

1.2 Akademické práce

V době psaní této práce se mi nepovedlo najít žádnou diplomovou práci zabývající se platformou Ansible. Podařilo se mi najít dvě bakalářské práce, které popisují platformu Ansible a jsou zajímavým materiálem pro srovnání různých pohledů na využití platformy Ansible pro automatizaci. Žádná z nich ale bohužel nepopisuje metodiku pro práci s danou platformou.

(20)

20

První z těchto dvou bakalářských prací se nazývá „Automatizace pomocí Ansible ve Windows“ (Klíč, 2018) od autora Jiřího Klíče z Fakulty informačních technologií

Vysokého učení technického v Brně. Hlavní pozornost je v této práci věnována automatizaci

počítačů s OS Windows, a to pomocí sady nástrojů využívajících platformu Ansible, která vede k ulehčení správy a sledování trendů pro evidenci hardwaru a jeho stavu. Součástí

práce je stručný výklad o platformě Ansible a dále už následuje jen popis samotné automatizace.

Druhá bakalářská práce se nazývá „Automatizace správy síťových prvků pomocí Ansible“

(Hudec, 2015) od autora Miroslava Hudce z Fakulty elektrotechnické Českého vysokého učení technického v Praze. Cílem této práce bylo navrhnout a realizovat automatizaci procesu, který se zabývá konfigurací síťových zařízení MikroTik s využitím platformy Ansible. Tato práce se zaměřuje na automatizaci síťových prvků nikoliv aplikací. Podobně jako v předchozím případě se jedná o dobrý materiál popisující další možnosti využití

platformy Ansible pro automatizaci. Tato práce lépe vysvětluje platformu Ansible ve své teoretické části. Může být dobrým materiálem pro pochopení dané problematiky

v českém jazyce.

Pro účely této práce jsem využila diplomovou práci na téma „Přizpůsobení metodiky MMSP pro automatizované testování s využitím nástroje Selenium Driver“ (Skrčený, 2016), která se zabývá vytvořením metodiky pro malé softwarové projekty. Tato metodika se zaměřuje na automatizované testování pomocí nástroje Selenium WebDriver. Autorem je Bc. Vlastimil Skrčený z Fakulty informatiky a statistiky Vysoké školy ekonomické v Praze.

Vytvořená metodika vychází z metodiky MMSP, a je dobrým příkladem pro tvorbu metodiky. Autor k její publikaci používá nástroj Eclipse Process Framework Composer.

Další kvalifikační prací je diplomová práce s názvem „Testování aplikací s využitím nástroje Robot Framework“ (Mačurová, 2016). Autorkou je Bc. Kateřina Mačurová z Fakulty informatiky a statistiky Vysoké školy ekonomické v Praze. Tato diplomová práce má zaměření na tvorbu vlastní metodiky vycházející z metodiky MMSP pro testování aplikací s využitím nástroje Robot Framework. Autorka taky používá nástroj Eclipse Process Framework Composer. Danou práci považuji za dobré vodítko, jak se dívat na vlastní tvorbu

metodiky pro práci s nástrojem Ansible. Nástroj Robot Framework, jakožto nástroj pro testování, sama aktivně v práci využívám pro testování, a to v kombinaci s platformou

Ansible.

Posledními zdroji jsou kvalifikační práce zaměřené na metodiku MMSP. První z nich je diplomová práce „Lokalizace a přizpůsobení metodiky OpenUP“ (Rejnková, 2011), kterou napsala Bc. Petra Rejnková z Fakulty informatiky a statistiky Vysoké školy ekonomické v Praze. Přizpůsobením metodiky OpenUP autorka vytvořila a popsala novou Metodiku MMSP, kterou lze použít na školní i reálné projekty vývoje IS/ICT. Druhou kvalifikační prací je bakalářská práce „Testování softwaru v agilních projektech“ (Rojo,

(21)

21

2015). Autorem je Robert Rojo také z Fakulty informatiky a statistiky Vysoké školy

ekonomické v Praze. Ve své bakalářské práci navrhuje rozšíření metodiky MMSP pro testování softwaru v agilních projektech.

1.3 Internetové zdroje

Největší množství nejaktuálnějších materiálů pro platformu Ansible je dostupných na webových stránkách v anglickém jazyce. V těchto materiálech dominuje společnost Red

Hat, Inc. Jedná se o společnost produkující významnou komerční linuxovou distribuci, dále poskytující služby v oblasti konzultace, školení a certifikace. Společnost Red Hat, Inc.

využila platformu Ansible k vytvoření produktu s názvem Ansible Tower. Jedná se o aplikaci s grafickým rozhraním, která centralizuje a řídí IT infrastrukturu pomocí vizuálního panelu na základě přidělených rolí, dokáže plánovat úkoly a spravovat inventář. Je ve vlastním zájmu společnosti Red Hat, Inc. poskytovat co nejpřesnější a nejaktuálnější informace ohledně platformy Ansible, aby dostala její možnosti pro automatizaci IT infrastruktury do co nejširšího povědomí IT společností, a tím zvýšit prodejnost svého produktu Ansible Tower. Proto považuji níže zmiňované internetové zdroje za věrohodné a relevantní.

Nejdůležitějším internetovým zdrojem je dokumentace platformy Ansible na webové stránce https://docs.ansible.com (Red Hat Inc., 2019). Tyto stránky poskytují aktuální dokumentaci od instalace až po konfiguraci platformy Ansible včetně videí. Společnost Red Hat, Inc. provozuje taky oficiální stránky https://www.ansible.com (Red Hat Inc., 2019) a YouTube kanál https://www.youtube.com/user/RedHatVideos/search?query=ansible (Red Hat Inc., 2017), kde se nacházejí instruktážní videa, která se zaměřují na konfiguraci v praxi, tvorbu požadavků, spolupráci se společností Microsoft až například po automatizaci pomocí platformy Ansible pro telekomunikační společnosti.

Posledním internetovým zdrojem je web https://spicenter.vse.cz/metodiky/ (Buchalcevová, 2019), kde lze nalézt všechny potřebné informace k charakteristice metodiky MMSP, včetně návodů a příkladů pro její pochopení a jednodušší implementaci. Pro svoji diplomovou práci jsem zvolila detailnější popis metodik pro vývoj softwaru, a to Metodiku MMSP a Metodiku MMSP-AV. Z metodik pro testování softwaru jsem vybrala Medotiku Testování aplikací

s využitím nástroje MMSP Selenium (vychází z diplomové práce (Skrčený, 2016)), a Metodiku Testování aplikací s využitím nástroje Robot Framework (vychází z diplomové

práce (Mačurová, 2016)), vypracovaných v Eclipse Process Framework Composer.

(22)

22

2 Automatizace IT infrastruktury

Cílem této kapitoly je vysvětlit základní pojmy jakými jsou IT infrastruktura a její automatizace, IT služby, a také principy přístupu DevOps tak, aby čtenář získal dostatečnou představu o samotné problematice automatizace. V další části je popis trendů v automatizaci IT infrastruktury s ohledem na dostupné konfigurační a jiné pomocné nástroje, které lze použít při projektech zaměřených na automatizaci IT infrastruktury.

2.1 IT infrastruktura

V této podkapitole je definován základní pojem IT infrastruktury. První část popisuje

strukturu a služby IT infrastruktury. Dále jsou vysvětleny důvody pro automatizaci IT infrastruktury, je zde popsaná charakteristika schématu konkrétní IT infrastruktury, která

vychází z nasazeného a využívaného řešení v praxi, a specifikace IT služeb vhodných pro automatizaci pomocí platformy Ansible.

2.1.1 Charakteristika IT infrastruktury

IT infrastruktura je součástí každé organizace a je nutné na ní nahlížet jako na celek, který se skládá z několika IT komponent, kterými jsou HW a SW včetně aplikací a datových

úložišť, propojených komunikačními sítěmi, které integruje do podnikového prostředí a následně provozuje IT personál tak, aby byly zajištěné IT služby, které mohou koncoví

uživatelé stabilně využívat k výkonu své práce. IT infrastruktura pak slouží jako podpora vnitropodnikových procesů.

Na obrázku 1 je možné vidět zjednodušený pohled na IT infrastrukturu a její prvky:

Obrázek 1: Zjednodušený pohled na komponenty IT infrastruktury (EMVIVE , 2017)

(23)

23

Prof. Ing. Jiří Voříšek, CSc. popisuje v jedné ze svých publikací (Voříšek, 2008) různé varianty kategorizace IT služeb. Za hlavní klasifikační hledisko považuje předmět služby, dle kterého dělíme IT služby do dvou skupin viz tabulka 1.

ICT služby byznysu

(koncovým uživatelům) ICT služby rozvoje IS/ICT

informační vývoj softwaru (aplikace)

aplikační implementace aplikace

infrastrukturní integrace IS

podpůrná rozvoj technologické infrastruktury

smíšená poradenství, atd.

Tabulka 1: Členění služeb dle předmětu služby (Voříšek, 2008)

Dalšími kategoriemi jsou způsob spotřeby IT služby, typ příjemce IT služby, typ poskytovatele IT služby, a v neposlední řadě kategorizace IT služeb dle potřebných

zdrojů a znalostí poskytovatele. Pro účely mé diplomové práce je hlavní klasifikace dle předmětu IT služby plně postačující.

2.1.2 Důvody pro automatizaci IT infrastruktury

Každá společnost má svoji IT infrastrukturu, která se musí udržovat a modernizovat.

„Průzkum poradenské společnosti Vanson Bourne mezi evropskými IT manažery zjistil, že IT týmy tráví více než polovinu času zajišťováním provozu, údržbou a řešením problémů a pouhých 11 % uvádí, že je jejich infrastruktura vysoce automatizovaná, což snižuje pracnost správy a údržby.“ (Branscombo, 2019)

Přínosy automatizace IT infrastruktury podle JT Giri, který je aktuálně stále na pozici CEO společnosti nClouds, jsou tyto (Giri, 2017):

 snížení nákladů,

 lepší spolupráce vede ke zkrácení doby vývoje a nasazení IT řešení,

 pružnost v reagování na aktuální požadavky na trhu pomocí efektivních pracovních postupů,

 zvýšení přesnosti a spolehlivosti IT infrastruktury vyloučením lidského pochybení.

Žijeme v době, kdy IT infrastrukturu mění virtualizace. Jedná se o velmi oblíbenou úspornou aktivitu, kde je velký potenciál lépe využít dostupný HW na uspokojení vysokých nároků na dostupnost a kvalitu poskytovaných IT služeb. Takové aktivity vyžadují automatizované procesy, protože by jinak nemohly fungovat správně. Například provozování desítek

(24)

24

aplikací na několika fyzických serverech pomocí virtualizace nelze spravovat manuálně.

Vzniká tak prostor pro automatizační nástroje.

Dalšími důvody pro automatizaci IT infrastruktury pro konkrétní organizaci mohou být zvýšené bezpečnostní požadavky na správu dat, nebo například potřeba efektivnějšího vzdělávání zaměstnanců.

2.1.3 Schéma a služby IT infrastruktury vhodné pro automatizaci

Tato podkapitola popisuje vybrané schéma IT infrastruktury pro automatizaci pomocí platformy Ansible, které je zobrazeno na obrázku 2. V této podkapitole se též nachází popis vybraných služeb IT infrastruktury vhodných pro automatizaci platformou Ansible. Jedná se o schéma a popis již používaného řešení aplikace pro testování funkčnosti telekomunikačních služeb.

Z důvodu bezpečnosti IT infrastruktury bude platforma Ansible provozována na centrálním serveru, na kterém neběží samotná produkční testovací aplikace. Jednotliví agenti budou dostupní přes aplikační server, na kterém běží produkční testovací aplikace.

Obrázek 2: Schéma zapojení navrhovaného řešení (Zdroj: autorka)

Centrální server je dedikovaná pracovní stanice.

Aplikační server je server, na kterém běží produkční testovací aplikace, která testuje telekomunikační služby (hlasové a datové služby jako například: volání v mobilní a fixní síti, dostupnost DNS nebo NBIoT služby a aplikace).

(25)

25

Agenti jsou připojeni k aplikačnímu serveru pomocí síťové infrastruktury. Jsou to síťová zařízení, na kterých se provozují testy telekomunikačních služeb.

Služby IT infrastruktury vhodné pro automatizaci platformou Ansible pro navržené schéma IT infrastruktury na obrázku 2 mohou být všechny IT služby z tabulky 1. Může se jednat o tyto konkrétní služby:

informační IT služby – vývoj nových aplikací,

aplikační IT služby – dodání a implementace nové aplikace,

infrastrukturní IT služby – integrace IS se zajištěním informační bezpečnosti, služby správy dat, služby správy technologických zdrojů (tj. správa a monitoring serverů a aplikací),

podpůrné IT služby – školení uživatelů, požadavky na drobné změny aplikace,

smíšené IT služby – konzultační služby.

2.2 Trendy v automatizaci IT infrastruktury

Existuje mnoho platforem, které pomáhají automatizovat IT infrastrukturu. Za hlavní cíl automatizace je považováno snížení možností selhání, a také odstranění kolizních stavů při nasazení řešení v praxi. To vede k propojování týmů vývojářů a týmů administrátorů IT systémů, kteří využívají principy přístupu DevOps a různé nástroje pro efektivnější práci.

V této podkapitole je stručně charakterizován přístup DevOps, a jsou také představeny

některé z nástrojů, které jsou vhodné k používání při automatizaci jak samostatně, tak i současně v kombinaci s jinými nástroji.

2.3.1 Přístup DevOps

Přístup DevOps je kombinací principů, postupů a nástrojů, které pomáhají organizacím zvyšovat schopnost vyvíjet a poskytovat jejich IT služby. Není vždy vhodný pro každou organizaci, protože vyžaduje kulturní filosofii, která plně akceptuje všechny jeho principy.

Základním stavebním kamenem je propojení a spolupráce týmů vývojářů a operativy, kteří umí mezi sebou komunikovat při hledání způsobů, jak dojít ke společnému cíli, nebojí se inovovat, a jsou schopni převzít zodpovědnost.

Principy DevOps, jak je popisuje tým Microsoftu na svých webových stránkách (Microsoft, 2020):

Spolupráce, transparentnost a zajištění shody – všechny uvedené vlastnosti jsou klíčové pro správné fungování týmu.

Posun v rozsahu a zodpovědnostech – zapojení všech rolí ve všech fázích životního cyklu.

(26)

26

Kratší cykly vydávání – jednodušší plánování a správa rizik, zajištění lepší stability systému.

Průběžné vzdělávání – pomáhají v růstu a motivaci členů týmu.

Na obrázku 3 je zobrazen životní cyklus aplikací s přístupem DevOps. Z něj je patrné, že jednotlivé fáze lze rozdělit na plánování, vývoj, doručování a provoz, ve kterých je každá

role zapojená do všech fází. Všechny tyto vlastnosti a principy přístupu DevOps směřují k agilnímu vývoji SW a k agilním metodikám jako jsou například Scrum nebo Kanban.

Obrázek 3: DevOps a životní cyklus aplikací (Microsoft, 2020)

2.3.2 Dostupné konfigurační nástroje pro automatizaci IT infrastruktury

Platforma Ansible není jediný konfigurační nástroj pro automatizaci IT infrastruktury.

Mezi další možnosti patří nástroje Chef, Puppet nebo SaltStack. Všechny tyto platformy jsou navrženy pro nasazení, konfiguraci a správu serverů. Rozhodnutí, který z nich je nejlepší, ale není tak snadné. Zajímavé shrnutí nabízí Aayushi Johari na svém blogu (Johari, 2019), která vytvořila tabulku porovnávající dané platformy v pěti kategoriích viz tabulka 2.

Metrika Chef Puppet Ansible SaltStack

Dostupnost Jednoduchost nastavení

Obtížné Obtížné Jednoduché Obtížné

Jednoduchost řízení

Obtížné Obtížné Jednoduché Jednoduché

Škálovatelnost Vysoká Vysoká Vysoká Vysoká

(27)

27

Konfigurační jazyk DSL(Ruby) DSL(PuppetDSL) YAML(Python) YAML(Python)

Interoperabilita Vysoká Vysoká Vysoká Vysoká

Cena (zapojení do 100 uzlů v IT infrastruktuře za jeden rok)

$13700 $11200-$19900 $10000 $15000

Tabulka 2: Porovnání nástrojů Chef, Puppet, Ansible a SaltStack (Johari, 2019)

Z tabulky 2 vyplývá, že platforma Ansible v porovnání podobných nástrojů obstála nejlépe.

Pomáhá jí k tomu jednoduchost nastavení, jednoduchost řízení a v neposlední řadě také nejlepší cenová dostupnost v porovnání s její konkurenty, kteří z výstupů v tabulce 2 vycházejí jako dražší a složitější alternativy.

Cenou se v případě Ansible myslí cena za produkt Ansible Tower a jeho licenci od společnosti Red Hat, Inc. U ostatních nástrojů se také jedná o cenu za podobné typy

produktů pro podniková řešení. Moje diplomová práce popisuje komunitní platformu Ansible nikoliv produkt Ansible Tower. Komunitní verze platformy Ansible se dá bezplatně stáhnout a používat. Jedná se o soubor skriptů a konfigurací, který běží na unixovém prostředí. Organizace se na základě seznámení s touto verzí mohou rozhodnout, jestli investují do produktu Ansible Tower, který je kompletním produktem s GUI na straně klienta, které může používat běžný uživatel, nebo jim stačí komunitní verze.

Na obrázku 4 je možné vidět porovnání všech platforem s ohledem na jejich používání v IT oblasti v letech 2012 až 2017, dostaneme výsledky, ze kterých jasně vyplývá dominance platformy Ansible. Tyto výsledky nejsou žádným překvapením, pokud vezmeme v potaz předchozí výstupy v tabulce 2.

Obrázek 4: Porovnání využití nástrojů Chef, Puppet, Ansible a SaltStack v letech 2012-2017 (Johari, 2019)

2.3.3 Jiné pomocné nástroje pro automatizaci IT infrastruktury

V rámci různých cyklů agilního vývojového procesu lze použít produkty, které pokrývají mnoho IT potřeb. V této podkapitole budou některé z nich představeny a popsány.

(28)

28

Prvním produktem je Confluence. Jedná se o placený produkt, který se používá pro plánování v rámci projektů, a také jako nástroj pro dokumentaci. Confluence pak souvisí

s dalším placeným softwarem a to s Jirou, která je zobrazena na obrázku 5. Jira je aplikace s prvky agilního vývoje. Takovými prvky jsou například Scrum nebo Kanban boardy, které zobrazují reporty v reálném čase. Práce s nimi je velmi jednoduchá. V celosvětovém průzkumu popularity agilních metod State of Agile (VersionOne, 2019) se nástroj Jira stal nejpopulárnějším nástrojem používaným agilními týmy, jak je vidět na obrázku 6. Daného průzkumu se v roce 2019 se zúčastnilo 1319 respondentů z celého světa.

Obrázek 5: Ukázka vedení projektu v aplikaci JIRA (Mott, 2015)

(29)

29

Obrázek 6: Výsledky popularity používání nástrojů pro práci v agilních týmech (VersionOne, 2019)

V balíčku se ke Confluence a Jiře nabízí další placené aplikace, kterými jsou Bamboo (nástroj průběžné integrace) nebo HipChat (nástroj pro skupinový i osobní chat a sdílení souborů). Dané aplikace a jejich licence prodává společnost Atlassian, která se zaměřuje na vytváření užitečných softwarových nástrojů pro vývoj IT systémů. Je na trhu od roku

2001 a má více než 150 000 zákazníků. Jejich produkty lze považovat za profesionální a velmi oblíbené, protože se používají celosvětově. Jejich komunia má více než 2,6 miliónu

členů. Více informací je dostupných na jejich oficiálním webu https://www.atlassian.com/

(Atlassian, 2020).

Další zajímavou službou je GitHub. Ta se často využívá k verzování konfigurace v rámci

vývoje IT infrastruktury. Tento produkt je v omezenější formě dostupný zadarmo nebo v placené verzi s různými funkcemi navíc. Jedná se o nástroj, který má webovou

aplikaci, a také s ním lze pracovat v Unix prostředí pomocí Git příkazů.

Robot Framework je poslední zmíněný neplacený nástroj používaný k automatizovanému testování a postavený na principu testování řízeném klíčovými slovy. Používá programovací jazyk Python. Má definované knihovny, které lze použít, ale umožňuje napsání a používání vlastní knihovny s vlastními klíčovými slovy, pokud uživateli předdefinované knihovny nestačí. Nejčastěji se používá v editoru RED. Ten je „založený na Java IDE, který umožňuje rychlou a pohodlnou práci s nástrojem Robot Framework.“ (Mačurová, 2016).

(30)

30

2.5 Shrnutí

Neustále se zvyšující nároky na poskytování IT služeb jsou důvodem, proč podniky vynakládají velké finanční prostředky na modernizaci vlastní IT infrastruktury. Modernizace může zasahovat do všech komponent IT infrastruktury od HW a SW, komunikační sítě

až po vzdělávání IT specialistů, kteří nesou zodpovědnost za stabilní provoz IT infrastruktury jako celku.

S modernizací také souvisí automatizace. Důvodů k automatizaci IT infrastruktury je hned několik. Například se může jednat o úsporu IT zdrojů, vyloučení lidské chyby a tím zvýšení přesnosti a spolehlivosti IT infrastruktury, nebo zkrácení doby vývoje a nasazení nového IT řešení. Vznikají proto různé automatizační nástroje. Jedním z nich je platforma Ansible, pomocí které lze automatizovat vybrané činnosti IT služeb, jakými jsou například správa a monitoring serverů a aplikací, tak aby byly dodržené bezpečnostní pravidla organizace.

Dalším příkladem může být řízení konfigurace zařízení, které se pak může použít pro obnovu systémů. Platforma Ansible umožňuje získávat data ze zařízení, které mohou sloužit jako vstupy pro následnou analýzu dat. V neposlední řadě se může jednat i o automatizaci implementace nového systému v rámci vývoje aplikací.

Automatizace IT infrastruktury se velmi často spojuje s přístupem DevOps. Důvodem je velmi úzká spolupráce vývojového a operativního týmu, která většinou vede k rychlejšímu nalezení těch nejjednodušších a nejoptimálnějších řešení. K tomu přispívá transparentnost mezi týmy, která umožňuje dojít ke shodě už při definování požadavků, a tím zamezí

budoucím nesrovnalostem mezi chápáním a potřebami definovanými vývojáři, a očekávanými výstupy u operativy. Dochází tak k šetření zdrojů, které pak mohou

organizace využít jiným potřebným způsobem.

Zavádění principů přístupu DevOps si vyžaduje transformaci firemní kultury, kterou nelze jednoduše nahradit platformou pro automatizaci. Některé organizace jej proto nechtějí nebo nezvládají aplikovat. Pro automatizaci IT infrastruktury jsou ale tyto principy důležité.

Bez nich totiž může být automatizace velmi obtížná nebo i nereálná. Pokud ale organizace přistoupí k takovému kroku, tak mají mnoho možností a kombinací různých nástrojů, které lze při automatizaci IT infrastruktury využít. Při jejich výběru bychom se měli ptát na tyto základní otázky:

1. Potřebuji automatizovat?

2. Potřebuji platformu pro automatizaci IT infrastruktury? Dokážu danou platformu pro automatizaci plně/plošně využít?

3. Jaké mám zdroje (lidi, finance, čas)?

4. Používám již nějakou platformu pro automatizaci? Bude efektivní ji měnit? Bude efektivní ji víc rozšířit?

(31)

31

5. Jakou platformu a pomocné nástroje používají dodavatelé našich klíčových aplikací?

Bude možné je propojit? Budou schopné spolu komunikovat (například přes univerzální API)?

Pro automatizaci IT infrastruktury lze použít několik dostupných platforem, jako jsou například Chef, Puppet, Ansible nebo SaltStack. Tyto platformy řeší nasazení, konfiguraci a správu serverů. Spojení vývojářského týmu s operativou bývá nevyhnutelné a většinou se řídí podle principů DevOps.

Ze všech dostupných zdrojů je platforma Ansible v praxi nejvyužívanější, jak je vidět na obrázku 4, a to hlavně kvůli jednoduchosti nasazení a řízení, a taky kvůli ceně, která je

často rozhodující ve výběru dodavatele softwaru.

V rámci automatizace je možné využít několik dalších placených i neplacených produktů, které lze vzájemně propojit v procesu agilního vývoje. Často používané jsou například Jira a Confluence, které jsou důležité pro plánování a řízení projektů. Produkt Confluence lze také využít pro dokumentaci. Jedná se o webové aplikace, které jsou jednoduše propojitelné a pro uživatele nejsou nijak náročné. Verzování konfigurací je důležitou součástí automatizace kvůli přehlednosti a řešení kolizních stavů. Tady se nabízí nástroj GitHub.

V automatickém testování stojí za zmínku produkt Bamboo, který je součástí balíčku s aplikacemi Jira a Confluence, nebo Robot Framework, který je postavený na principu

testování řízeném klíčovými slovy.

V tabulce 3 je uveden příklad využití již zmíněných nástrojů pro automatizaci v rámci procesu agilního vývoje v praxi:

Nástroje pro automatizaci/fáze životního cyklu agilního vývojového procesu

JIRA Confluence GitHub Ansible Robot Framework

Plánování Analýza Design

Implementace Testování Provoz/Údržba

Tabulka 3: Příklad procesu agilního vývoje s nástroji pro automatizaci (Zdroj: autorka)

(32)

32

3 Platforma Ansible

Tato kapitola se zabývá platformou Ansible a její podrobnější charakteristikou. Platforma Ansible je určená pro automatizaci nasazení, konfiguraci a správy desítek až stovek serverů a aplikací.

Nejdřív je daná platforma charakterizována a následně je popsána její architektura. V dalších podkapitolách je blíže představena struktura dané platformy a syntaxe používaná ke psaní automatizovaných činností.

3.1 Charakteristika platformy Ansible

„Ansible je užitečný nástroj, který umožňuje vytvářet skupiny zařízení (například serverů), popsat jak by tyto zařízení měly být nakonfigurovány nebo jaké akce by na nich měly být provedeny. K provedení těchto úkolů je možné vydat všechny příkazy z centrálního umístnění.“ (Ahmed, 2019)

Tvůrcem platformy Ansible se v roce 2015 stal Michael DeHaan. Jeho hlavní myšlenkou bylo vytvořit jednoduchý nástroj, který kdyby se nepoužil třeba i měsíce, tak se k němu lze vrátit a stále si pamatovat, jak se s ním pracuje. To vede k jeho intuitivnosti a velmi snadnému používání na rozdíl od nástrojů Puppet a Chef. Jednoduchost zajišťuje používání programovacího jazyka Yaml a skoro žádné systémové nároky na agenty kromě funkčního bezpečnostního komunikačního protokolu SSH a programovacího jazyka Python.

Platforma Ansible je open-source software dále vyvíjený společností Red Hat, Inc., jak bylo popsáno v podkapitole 1.3 Internetové zdroje. Nejaktuálnější dokumentaci včetně balíčku pro instalaci lze najít na https://docs.ansible.com (Red Hat Inc., 2019).

Vlastnosti platformy Ansible (Hochstein a Moser, 2017):

 centralizované ovládání IT infrastruktury;

 agenti (servery) nepotřebují žádnou speciální konfiguraci, protože postačí funkční SSH a Python;

 konfiguračním jazykem je Yaml;

 možnost modelovat komplexní IT požadavky na desítky až stovky agentů;

 idempotentní operace, tj. možnost provádět tu samou operaci dvakrát i vícekrát bez poškození agenta;

 znovupoužití na jakékoliv nově vytvořené skupiny agentů.

(33)

33

Platforma Ansible umožňuje provádět (Hochstein a Moser, 2017):

Instalaci nových serverů, aplikací, virtuálních a cloudových zařízení ze šablony s možností zpětné kontroly stažení a instalace všech potřebných balíčků a kódů potřebných k jejich správnému nastavení.

Konfiguraci serverů, aplikací, virtuálních a cloudových zařízení dle potřeb.

Například aktualizace firmware nebo konkrétních balíčků a případně i částí kódu.

Řízení a administrace služeb, a zjednodušování správy IT služeb IT infrastruktury.

Zajištění bezpečnosti snížením bezpečnostních rizik pomocí automatizace bezpečnostní politiky společnosti (například častou je automatizace pravidelných změn hesel a přístupových práv uživatelů na jednotlivá zařízení/aplikace).

Všechny činnosti provázané s platformou Ansible jsou znázorněny na následujícím obrázku 7:

Obrázek 7: Charakteristika platformy Ansible (Ahmed, 2019)

3.2 Architektura platformy Ansible

Kvůli lepšímu porozumění funkčnosti platformy Ansible považuji za nevyhnutelné definovat alespoň základní prvky, jejichž názvy nejsou přeloženy z anglického jazyka.

Anglické názvy jsou používány i v dokumentaci a samotném kódu, což vede k lepší

(34)

34

přehlednosti a snazšímu porozumění pro čtenáře. Cílem této práce není zavádět novou terminologii v českém jazyce.

Architektura platformy Ansible je graficky znázorněna na obrázku 8 a skládá se ze čtyřech částí (Hochstein a Moser, 2017):

1) Inventory – „je jednoduchý textový soubor, kde jsou definována zařízení, tj. agenti, která bude platforma Ansible obsluhovat“ (Red Hat Inc., 2019).

2) API – je zkratka v anglickém jazyce pro Application Programming Interface, v překladu se jedná o softwarového prostředníka, který umožňuje dvěma aplikacím spolu komunikovat.

3) Moduly – platforma Ansible pracuje s knihovnou modulů, které lze spustit přímo na vzdálených agentech nebo prostřednictvím Playbooků (Playbook je elementární jednotkou v architektuře, jedná se o skript, který obsahuje seznam úkolů.). „Uživatelé si mohou napsat své vlastní moduly, kterými lze například řídit systémové prostředky, jako jsou služby, balíčky a soubory, nebo zpracovávat provádění systémových příkazů.“ (Red Hat Inc., 2019)

4) Pluginy – „rozšiřují funkcionalitu platformy Ansible, např. connection_plugins, které umožňují připojení na agenty a spouštění úkolů přímo na nich. Stejně jako moduly, tak i pluginy si mohou uživatelé napsat své vlastní.“ (Red Hat Inc., 2019)

Obrázek 8: Architektura platformy Ansible (Ahmed, 2019)

Platforma Ansible obsahuje základní elementy, které jsou zobrazeny v tabulce 4. Ty jsou stavebními jednotkami. Bez jejich pochopení nelze sestavit funkční řešení, proto jsou jim věnovány následující podkapitoly.

(35)

35 Elementy v architektuře platformy Ansible

Task - Nejmenší spouštěcí jednotka

- Příkaz k provedení

Playbook - Seznam úkolů

- „skript“ k provedení úkolů

Role - Nezávislá jednotka použitelná na vzdáleném

agentovi

- Sada playbooků, proměnných, šablon apod.

- „Balíček“, který se použije na vzdáleném agentovi

Module - Poskytuje specifickou funkcionalitu

- Seznam příkazů (například kopírování souborů nebo správa uživatelů apod.)

Tabulka 4: Elementy v architektuře platformy Ansible (Zdroj: autorka dle (Hochstein a Moser, 2017))

Příručka „Ansible : Up & Running : automating configuration management and deployment the easy way“ (Hochstein a Moser, 2017) ve své druhé kapitole popisuje jak tyto entity propojit a vytvořit tak entitně-vztahový diagram.

Obrázek 9: Entitně-vztahový diagram (Hochstein a Moser, 2017)

Diagram na obrázku 9 znázorňuje následující vztahové závislosti (Hochstein a Moser, 2017):

Playbook–Play: Tento vztah vyjadřuje závislost, kde skript k provedení úkolů obsahuje jeden nebo více úkolů.

Play–Host: Tento vztah vyjadřuje závislost, kde jeden úkol může být přirazen jednomu nebo skupině agentů.

Play–Task: Tento vztah vyjadřuje závislost, kde jeden úkol může obsahovat jeden a více příkazů k provedení.

Task–Module: Tento vztah vyjadřuje závislost, kde je každý příkaz spojený s přesně jedním modulem.

(36)

36

Spuštění Playbooků je obvykle prováděno z příkazového řádku. Na výstupu je zobrazen výsledek v podobě logu obsahujícího informaci, jestli byly provedené úkoly v pořádku nebo došlo k chybě. Výstupem je příkazová řádka ale může jim být i report například v textovém formátu. To závisí od nastavení úkolů k provedení.

3.2.1 Playbooky

Playbooky lze považovat za základní kámen nástroje Ansible. Tento skript obsahující seznam úkolů lze na základní úrovni použít ke správě konfigurací na vzdálených zařízeních.

Pokročilejším využitím může být rozsáhlá systémová aktualizace nebo delegování aktivit na jiné zařízení v zadaném pořadí. Úkoly mohou být prováděny synchronně i asynchronně.

Vlastnosti Playbooků:

 používá se syntaxe programovacího jazyka Yaml;

 formát je velmi jednoduchý, není snaha napodobovat složité skriptování;

 obsahuje jeden a více různých úkolů;

 úkoly mohou být určené pro různé skupiny agentů;

 úkoly mohou být spuštěny synchronně i asynchronně.

Výpis 1: Příklad jednoduchého playbooku (Red Hat, 2017) ---

- hosts: webservers vars:

http_port:80 max_clients: 200 remote_user: root tasks:

- name: ensure apache is at the latest version yum: name=heeptd state=latest

- name: write the apache config file

template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify:

- restart apache

- name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes

handlers:

- name: restart apache

service: name=httpd state=restarted

Složitější konfigurace a tipy jsou uvedeny v Příloze A: Dokumentace k práci s platformou Ansible.

(37)

37 3.2.2 Inventory

Inventory je jednoduchý textový soubor, který může být ve vícero formátech jako je INI nebo Yaml viz Výpis 2. „V daném souboru jsou definována zařízení mnohdy v různých skupinách – tj. agenti/skupiny agentů, které bude platforma Ansible obsluhovat.“ (Red Hat, 2019)

Výpis 2: Příklad jednoduchého inventory (Red Hat, 2020) --- INI file verion

mail.example.com

[webservers]

foo.example.com bar.example.com

[dbservers]

one.example.com two.example.com three.example.com

--- Yaml file version all:

hosts:

mail.example.com:

children:

webservers:

hosts:

foo.example.com bar.example.com dbservers:

hosts:

one.example.com twoo.example.com three.example.com

Složitější konfigurace a tipy jsou uvedeny v Příloze A: Dokumentace k práci s platformou Ansible.

3.2.3 Moduly

Platforma Ansible pracuje s knihovnou modulů, které lze spustit přímo na vzdálených agentech nebo prostřednictvím Playbooků jak je uvedeno ve Výpisu 3. Uživatelé si mohou psát své vlastní moduly, pokud v knihovně modulů nenajdou modul s nějakou specifickou funkcionalitou.

(38)

38 Výpis 3: Příklad jednoduchého inventory (Red Hat, 2020) --- execute modules from command line

ansible webservers -m service -a “name=httpd state=started“

ansible webservers -m ping

ansible webservers -m command -a “/sbin/reboot -t now“

--- execute modules from playbooks – example 1 - name: reboot the servers

action: command /sbin/reboot -t now

--- execute modules from playbooks – example 2 - name: reboot the servers

command: /sbin/reboot -t now

--- execute modules from playbooks – example 3 - name: restart webserver

service:

name: httpd state: restarted

Složitější konfigurace a tipy jsou uvedeny v Příloze A: Dokumentace k práci s platformou Ansible.

3.2.4 Role

Role poskytují možnost vytvořit vzájemně závislé nebo nezávislé skupiny proměnných, úkolů, souborů, šablon a modulů. Role taky zjednodušují psaní složitých Playbooků a jejich opětovné použití.

Výpis 4: Příklad jednoduchého Playbooku s definováním rolí (Red Hat, 2020) --- Playbook with role definition – example 1

- hosts: webservers roles:

- role: ‘/path/to/my/roles/common‘

--- Playbook with role definition – example 2 - hosts: webservers

roles:

- common

- role: foo_app_instance vars:

dir: ‘/opt/a‘

app_port: 5000

Odkazy

Související dokumenty

Jsou k dispozici připravené archivy s určitými regiony, pro účel ověření této práce je ale vhodnější stáhnout pouze určitý obdélníkový výřez pomocí API, které je

některá antibiotika mají baktericidní účinky = ničí bakterie (např. penicilin, cefaklor) některá antibiotika mají bakteriostatické účinky = brání v rozmnožování

že z levé srdeční komory vystupuje aorta (nejmohutnější tepna lidského těla), která se stáčí a vytváří vzestupnou aortu (zásobuje krví hlavu, krk a HK), poté

Fucas, l'~minent g6omStre auquel la doctrine des 6quations diff6rentielles dolt tant de progr~s, s'ap- puyant sans soup(;on sur l'interpr6tation dominante du M~moire

Nach einem Fundamentalsatze der Theorie der automorphen Func- tionen 1 existiert auf der einzelnen der beiden zu den Gleiehungen (7) und i9) gehorenden

Vypočítej, jaký výsledek bude v jednotlivých

Ha valamelyik helyre rossz számot ír, arra nem jár pont, de ha ezzel helyesen számol tovább, ak- kor a további pontok megadhatók. a) minden szám helyes beírása 3

[r]