Jak používat prostředí loutek v systému Linux k bezpečné aktualizaci agenta

  • Vovich Masterovich
  • 0
  • 1261
  • 315
>

Objektivní

Vytvářejte a používejte prostředí loutek k testování nové konfigurace před aktualizací živého produkčního systému.

Verze operačního systému a softwaru

  • Operační systém: Jakákoli velká linuxová distribuce, např. Ubuntu, Debian, CentOS
  • Software: loutka a loutkář

Požadavky

Privilegovaný přístup k loutkovému hlavnímu serveru a uzlu loutkového klienta.

Konvence

  • # - vyžaduje, aby dané linuxové příkazy byly prováděny s oprávněním root buď přímo jako uživatel root, nebo pomocí sudo příkaz
  • $ - dané linuxové příkazy, které mají být provedeny jako běžný neprivilegovaný uživatel

Úvod

Většina loutkových instalací začíná život jako hlavní server, na kterém běží jedna větev. Hlavní obsahuje všechny manifesty a další konfiguraci pro všechny loutkové agenty, kteří jsou s ním synchronizováni. Toto je skvělé místo pro začátek, ale rychle přijde čas, kdy aktualizace potřebuje tlačit, což má potenciál rozbít produkční server. Doufat v nejlepší není nejlepší způsob, jak postupovat.
Loutka poskytuje nástroje k oddělení celých větví konfigurace. Říká se jim prostředí. Prostředí Puppet je způsob, jak dodat izolované skupině uzlů agenta s vlastní vyhrazenou konfigurací. Každé prostředí obsahuje celý konfigurační strom Puppet a lze ho považovat za samostatný server Puppet Master.

Jak se používají prostředí loutek?

Typickým scénářem pro prostředí, a který zkoumáme v této příručce, je vytvoření testovacího prostředí vedle produkčního prostředí, kde je vytvořena nová konfigurace loutek.
Jedním ze způsobů, jak otestovat novou konfiguraci v testovacím prostředí, je aktualizace kopie produkčního serveru, například snímek virtuálního počítače. Jakékoli problémy budou na testovacím stroji pozorovány a konfigurace loutky upravena tak, aby to napravila. Není však vždy možné mít testovací server ke kontrole změn v testovacím prostředí.
Další metodou, kterou zde prozkoumáme, je ruční spuštění loutkového agenta na produkčním serveru, ale použít několik možností, které způsobí, že se loutkový agent synchronizuje s testovacím prostředím, ale pouze ukáže, co by se stalo bez provedení skutečných změn. Tím se zvýrazní všechny chyby, ke kterým by došlo při úplné aktualizaci, aniž by to skutečně způsobilo výpadek.

Vytváření loutkových prostředí

V této příručce vytvoříme velmi jednoduchou loutkovou instanci s loutkovým mistrem a uzlem loutkového agenta. Hlavní server loutek bude nakonfigurován tak, aby měl dvě prostředí; testování a vývoj.
Tato příručka předpokládá, že máte server Puppet Master a uzel Loutkového agenta, který se může připojit k Puppet Master.
Na Puppet masteru vytvoříme dvě prostředí a v těchto prostředích vytvoříme velmi jednoduchý loutkový manifest, který vytvoří textový soubor na uzlu agenta.
Výchozí umístění konfigurace Puppet se mění podle toho, jakou distribuci používáte. Na Ubuntu 18.04LTS, verzi, která bude použita v této příručce, je umístění na / etc / loutka. Jiné distribuce (a oficiální dokumentace) jej mohou umístit na / etc / puppetlabs /. Jakmile se však nacházíte v hlavním konfiguračním adresáři loutek, jsou všechny podadresáře stejné pro všechny distribuce.

Instrukce

Vytvořte adresáře prostředí

Prostředí a jejich konfigurace existují pod / etc / loutka / kód / adresář. V systému Ubuntu 18.04 je tento adresář při instalaci prázdný, takže nejprve musíme vytvořit dva adresáře prostředí nejvyšší úrovně pomocí následujících dvou příkazů:
 # mkdir -p / etc / loutka / kód / prostředí / testování # mkdir -p / etc / loutka / kód / prostředí / vývoj 
Jakýkoli nový uzel agenta se automaticky připojí k rozvoj prostředí, pokud životní prostředí proměnná je nastavena na alternativu v [činidlo] část loutka. konf soubor v uzlu agenta.

Vytvoření dvou jednoduchých manifestů site.pp

The site.pp file je primární manifest, odkud agent loutky začíná vytvářet katalog požadovaného stavu stroje. Budeme vytvářet dva velmi jednoduché site.pp soubory ve dvou prostředích, která vytvářejí stejný soubor v uzlu agenta. Jediný rozdíl je v tom, že do souboru vložili jiný text.
První site.pp soubor bude produkčním prostředím na adrese: /etc/puppet/code/environments/development/manifests/site.pp Tento soubor by měl mít následující obsah:
soubor '/tmp/example.txt': ensure => present, mode => "0644", content => "z vývojového prostředí \ n", 
Vytvořte a naplňte tento soubor pomocí svého oblíbeného textového editoru.
Tento manifest zajišťuje přítomnost souboru na /tmp/example.txt a obsahuje text „From The Development Environment“ („\ n“ přidá nový řádek na konec souboru, což je osvědčený postup, a zastaví loutku zobrazovat varovnou zprávu, pokud není k dispozici).
Druhý manifest bude v testovacím prostředí na adrese: /etc/puppet/code/environments/testing/manifests/site.pp Tento soubor obsahuje následující položky:
soubor '/tmp/example.txt': zajistit => přítomný, režim => "0644", obsah => "z testovacího prostředí \ n", 
To je téměř totožné se souborem ve vývojovém prostředí, pouze s tím rozdílem, že text v souboru naznačuje, že pochází z testovacího prostředí.

Vyhodnocení nové konfigurace loutek z testovacího prostředí

Uzel agenta se ve výchozím nastavení synchronizuje pouze s vývojovým prostředím. Nejprve ručně instruujeme loutkového agenta, aby synchronizoval se serverem loutkového mistra a vytvořil a použil site.pp které jsme vytvořili ve vývojovém prostředí.
To se provádí pomocí následujícího příkazu:
 # loutkový agent - prostředí = výroba - test 
The --test Díky této možnosti loutkový agent provede katalog v popředí s podrobným protokolováním. Veškeré aktualizace nebo změny budou použity na uzel.
The --prostředí = výroba existuje možnost, aby bylo jasné, že synchronizujeme z produkčního prostředí. Obvykle by to bylo nakonfigurováno v hlavní konfiguraci loutkového agenta a nebylo by nutné jej zahrnout do příkazu.
Když je spuštěn výše uvedený příkaz, získáme následující výstup:
 Info: Používání "výroby" konfigurovaného prostředí Info: Načítání informací o pluginu Info: Načítání informací o pluginu: Načítání národních informací Info: Načítání faktů Info: Katalog ukládání do mezipaměti pro digital-2.net Info: Použití verze konfigurace '1527680694' Upozornění: / Fáze [hlavní] / Hlavní / Soubor [/tmp/example.txt] / zajistit: definovaný obsah jako „md5 59f9ce1d4aad5fd155db7ccc2478a93b“ Upozornění: Použitý katalog za 0,02 sekundy 
Tento výstup označuje tento soubor /tmp/example.txt nebyl přítomen, takže loutkový agent jej vytvořil podle pokynů v site.pp manifest. Následující běhy nebudou mít Oznámení: řádky jako /tmp/example.txt soubor existuje se správným obsahem.
Nyní, když stav uzlu agenta souhlasí s manifestem vývojového prostředí, můžeme otestovat, co by se stalo, kdybychom použili alternativní manifest z testovacího prostředí.
Abychom mohli novou konfiguraci otestovat a nepotvrdit, musíme spustit následující příkaz:
 # loutkový agent - prostředí = testování - test --noop 
Jak vidíte --životní prostředí možnost byla změněna na testování a zahrnuli jsme další možnost --noop. Tato možnost umožňuje agentovi provést běh nasucho. To znamená, že loutkový agent neprovede žádné skutečné změny v uzlu agenta, ale vytvoří veškerý výstup, jako by měl.
To nám umožňuje vyhodnotit, co by se stalo, kdyby byla na server použita nová konfigurace. V tomto případě vypadá výstup výše uvedeného příkazu takto:
 Info: Testování pomocí nakonfigurovaného prostředí Info: Načítání informací o pluginu Informace: Načítání informací o pluginu: Načítání národních informací Info: Načítání faktů Informace: Použití verze konfigurace '1527683748' Upozornění: /Stage[main]/Main/File[/tmp/example.txt ] / content: --- /tmp/example.txt 2018-05-30 12:19: 16.205774048 +0000 +++ / tmp / puppet-file20180530-21610-8ipzur 2018-05-30 12:35: 48.740982652 +0000 @@ -1 +1 @@ -Z vývojového prostředí + z testovacího prostředí Upozornění: /Stage[main]/Main/File[/tmp/example.txt]/content: current_value 'md5 59f9ce1d4aad5fd155db7ccc2478a93b', by mělo být 'md5 abbb8f68df144a5673d 62ae6c4a036ed' (noop) Upozornění: Třída [Hlavní]: Bylo by spuštěno 'obnovení' z 1 události Upozornění: Fáze [hlavní]: Bylo by spuštěno 'obnovení' z 1 události Upozornění: Aplikovaný katalog za 0,04 sekundy 
Nejzajímavější řádky zde jsou následující:
 -Z vývojového prostředí + z testovacího prostředí 
Ty jsou označeny symbolem mínus (-) co se mění za se symbolem plus (+) na co se mění. V tomto příkladu je to text v souboru.
Všechny tyto výstupy označují, že nová konfigurace by byla úspěšně použita a obsah /tmp/example.txt by byly upraveny. Pokud se jedná o požadovaný stav produkčního serveru, pak změny site.pp soubor lze bezpečně vytvořit v produkčním prostředí.


Identifikace chyby

Nová konfigurace loutek se ne vždy aplikuje bez chyby, a proto by měla být před použitím v produkčním systému vždy otestována. V této situaci vynutíme chybu úmyslnou chybou v testování site.pp soubor. Pokusíme se nastavit oprávnění souboru na 0944 což není platné oprávnění a způsobí chybu.
Nyní, když spustíme:
 # loutkový agent - prostředí = testování - test --noop 
Uvidíme následující výstup:
 Info: Testování pomocí konfigurovaného prostředí Info: Načítání informací o pluginu Informace: Načítání informací o pluginu: Načítání národních informací Info: Načítání faktů Chyba: Nepodařilo se použít katalog: Režim parametrů se nezdařil v souboru [/tmp/example.txt]: Specifikace režimu souboru je neplatné: „0944“ (soubor: /etc/puppetcode/environments/testing/manifests/site.pp, řádek: 1) 
Následující snímek obrazovky ukazuje tento výstup tak, jak by byl prezentován na příkazovém řádku:
Loutka označí případné chyby červeným tiskem.
Barvy nám okamžitě sdělily, že by při pokusu o použití nové konfigurace loutky z testovacího prostředí došlo k chybě. Jak jsme však použili --noop na produkčním serveru nebyly potvrzeny žádné chyby.

Závěr

Při spuštění produkčních systémů, které jsou spravovány Puppet, je vždy důležité otestovat každou novou konfiguraci, než se použije. Použití nástrojů, které Puppet poskytuje, k vytvoření alternativních prostředí, kde lze bezpečně vytvořit novou konfiguraci a vyhodnotit ji proti produkčním systémům, bude znamenat méně chyb a méně prostojů.
  • Předchozí
  • další



Zatím žádné komentáře

Sbírka užitečných informací o operačním systému Linux a nových technologiích
Nejnovější články, praktické tipy, podrobné recenze a průvodci. Ve světě operačního systému Linux se budete cítit jako doma