GNU/Linux >> Znalost Linux >  >> Linux

Porozumění loutkovým zdrojům, manifestům, modulům a třídám s příklady

V tomto tutoriálu vysvětlím zdroje, manifesty, moduly a třídy Puppet s příklady. Předpokládám také, že již máte nainstalované uzly Puppet master/agent a připravené k použití. Abyste mohli používat Puppet, musíte pochopit, jak puppet zachází se zdroji a jak se vytvářejí manifesty a moduly.

Předpoklady:

Jak jsem řekl dříve, musíte mít nainstalované a nakonfigurované uzly Puppet Master a Agent.

Puppet’s Declarative Domain Specific Language  (DSL)

  • Puppet má svůj vlastní deklarativní jazyk specifický pro doménu, který definuje STATES systému.
  • Kód loutky je zapsán v souboru s názvem MANIFESTY a uloženy s příponou .pp (např. site.pp je soubor hlavního manifestu)
  • Kód loutky obsahuje ZDROJE které ovlivňují prvky systému (jako je soubor, balíček, služba, uživatel, hostitel, rozhraní, exec atd…). Zdroje jsou základní jednotkou systémových konfigurací a každý zdroj popisuje aspekt systému.
  • Zdroje jsou seskupeny do CLASSES ( pojmenovaný blok kódů loutek), které jsou uloženy (uspořádány) v MODULECH a nejsou použity, dokud nejsou vyvolány.
  • Puppet Master vytvoří KATALOG (vygenerované na základě kódu a dat Puppet) a klienti je použijí.

Podívejme se podrobně na termíny Puppet.

Zdroje

Zdroj popisuje něco o stavu systému. Například, zda existuje určitý uživatel nebo soubor, nebo má být spuštěna nebo povolena služba nebo zda by měl být nainstalován balíček.

Formát zdroje:

resource_type { 'name_of_the_resource':argument => hodnota, other_arg => hodnota,}

Příklad 1:

file { 'test':cesta => '/tmp/test', content => 'Příklad obsahu', }

Příklad 2:

package { 'ntp':secure => present,}

Příklad 3:

service { 'ntpd':sure => running, enable => true,}

Zde je příkaz pro seznam typů zdrojů v Puppet:

 # / opt / puppetlabs / loutkový / bin / loutka zdroj --typesaugeascomputercronexecfilefilebucketgrouphostinterfacek5loginmacauthorizationmailaliasmaillistmcxmountnagios_commandnagios_contactnagios_contactgroupnagios_hostnagios_hostdependencynagios_hostescalationnagios_hostextinfonagios_hostgroupnagios_servicenagios_servicedependencynagios_serviceescalationnagios_serviceextinfonagios_servicegroupnagios_timeperiodnotifypackageresourcesrouterschedulescheduled_taskselbooleanselmoduleservicessh_authorized_keysshkeystagetidyuservlanwhityumrepozfszonezpool 

Manifesty

Jak již bylo řečeno, kód Puppet je zapsán v souboru Manifest spříponou .pp . Výchozí soubor hlavního manifestu se nachází na adrese:

# vim /etc/puppetlabs/code/environments/production/manifests/site.pp

Další soubory manifestu lze vytvořit v /etc/puppetlabs/code/environments/production/manifests/

Třídy

Třídy obsahují bloky kódu, které lze vyvolat odkudkoli v kódu. Třídy poskytují možnost opětovného použití kódu. Pokud znáte programovací jazyky jako Java nebo C++, pak je definování třídy v Puppet úplně stejné.

class class_name { ::::::::::Kód loutky jde sem:::::::::}

Nyní lze výše uvedenou třídu zahrnout do kódu Puppet, jak je uvedeno níže:

include class_name

Moduly

Moduly pomáhají organizovat sadu manifestů. Modul lze přidat pod /etc/puppetlabs/code/environments/production/modules. Velký loutkový kód lze distribuovat do více manifestů a organizovat pomocí modulů (v dolní části tohoto příspěvku se dozvíte, jak nainstalovat, nakonfigurovat a spustit službu Apache – kde je každá z těchto úloh rozdělena do různých tříd).

Dejte nám vědět, zkuste vytvořit manifest, abyste provedli jednoduchou operaci.

Můj první manifest v loutce

Příklad 1:Vytvoření nového souboru (v site.pp)

Krok 1: Přihlaste se k Puppet Server (Master Node) jako privilegovaný uživatel.

Krok 2: Přejděte na /etc/puppetlabs/code/environments/production/manifests

Krok 3: Upravte site.pp – soubor hlavního manifestu. Pokud žádný nenajdete, vytvořte jej.

# vim site.pp

Krok 4: Pojďme napsat Puppet kód pro vytvoření souboru v /tmp/ v uzlu Puppet agent. Kód je uveden níže,

file { "/tmp/myFile":secure => "prezent", vlastník => "root", group => "root", mode => "644", content => "Toto je můj první manifest vytvořit soubor v adresáři temp", }

Ve výše uvedeném kódu jsme použili soubor typ zdroje s argumenty jako zajistit , vlastník , skupina , režim a obsah . Soubor bude vytvořen v /tmp .

Krok 5 :Nyní je soubor manifestu připraven. Přejděte do uzlu Puppet Agent a proveďte níže uvedený příkaz.

[Agent]# /opt/puppetlabs/puppet/bin/puppet agent -t Info:Používání nakonfigurovaného prostředí 'production' Info:Získávání pluginfacts Info:Získávání informací o pluginu:Cachování katalogu pro puppetagent.test.in Info:Použití konfigurace verze '1471021726' Upozornění:/Stage[main]/Main/File[/tmp/myFile]/ensure:definovaný obsah jako '{md5}8eadb0a0feef0bc667702434f816d8e8' Upozornění:Použitý katalog za 0,09 sekund

Výše uvedený výstup říká, že katalog byl použit.

Poznámka :Agenti loutek automaticky kontaktují server Puppet, aby obdrželi katalog pro svou konfiguraci. Pokud ale nechcete čekat na automatickou synchronizaci, můžete provést výše uvedený příkaz.

Krok 6 :Zkontrolujte, zda byl soubor vytvořen s nezbytným obsahem.

# ls /tmp/myFile/tmp/myFile
# more /tmp/myFileToto je můj první manifest k vytvoření souboru v adresáři temp

Vytvoření prvního modulu

Pojďme vytvořit modul, který nainstaluje webový server Apache na uzly agentů.

Krok 1 :Změňte adresář na složku modulů.

# cd /etc/puppetlabs/code/environments/production/modules

Krok 2 :Vytvořme modul s názvem httpd . K tomu použijeme PuppetForge což vyžaduje dodržování konvence pojmenování. Například,

název organizace-název modulu

Při instalaci webového serveru Apache je balíček, který se má nainstalovat, httpd a moje konvence pojmenování bude taková, jaká je uvedena níže:

mypuppetorg-httpd

Krok 3 :Spusťte níže uvedený příkaz

# /opt/puppetlabs/puppet/bin/puppet module vygenerovat mypuppetorg-httpdPro tento modul potřebujeme vytvořit soubor metadata.json. Odpovězte prosím na následující otázky; pokud se otázka na tento modul nevztahuje, klidně ji nechte prázdnou. Puppet používá k verzi modulů sémantické verzování (semver.org). Jaká je verze tohoto modulu? [0.1.0]-->Kdo napsal tento modul? [mypuppetorg]-->Jaká licence spadá pod tento kód modulu? [Apache-2.0]-->Jak byste popsali tento modul jednou větou?--> Nainstaluje webový server Apache a nakonfiguruje jejKde je úložiště zdrojového kódu tohoto modulu?-->Kde se mohou ostatní dozvědět více o tomto modulu? -->Kam mohou ostatní přejít se žádostí o informace o tomto modulu?-->--------------------------------- -------{"name":"mypuppetorg-httpd","version":"0.1.0","author":"mypuppetorg","summary":"Nainstaluje webový server Apache a nakonfiguruje jej", "license":"Apache-2.0","source":"","project_page":null,"issues_url":null,"dependencies":[{"name":"puppetlabs-stdlib","version_requirement":">=1.0.0"}],"data_provider":null}----------------------------------- -----O generování těchto metadat; pokračovat? [n/Y]--> YUpozornění:Generování modulu v /etc/puppetlabs/code/environments/production/modules/httpd...Upozornění:Naplňování šablon...Dokončeno; modul vygenerovaný v httpd.httpd/Gemfilehttpd/Rakefilehttpd/exampleshttpd/examples/init.pphttpd/manifestshttpd/manifests/init.pphttpd/spechttpd/spec/classeshttpd/spec/classes/init_spec.rbhttpd/spec/spec_helper.rbhttpd/REAdME /metadata.json

Krok 4 :Bude vytvořen modul. Například httpd a jeho struktura je následující:

# ls httpd/ příklady  Gemfile  manifesty  metadata.json  Rakefile  README.md  spec

Krok 5 :Přizpůsobte modul

Krok 4 vytvoří adresářovou strukturu modulu a soubor hlavního manifestu (pro modul) s názvem init.pp . Prostě soubor otevřeme, abychom viděli, jak vypadá, a na konci souboru najdete prázdný httpd třída.

class httpd {}

Krok 6 :Pojďme vytvořit samostatnou třídu pro instalaci (install.pp), konfiguraci (configure.pp) a spouštění (start.pp) služby Apache.

Vytvoření podtřídy pro instalaci Apache: Vytvoříme nový soubor manifestu s názvem install.pp (název modulu třídy::install)

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
# vim manifests/install.pp

Zkopírujte a vložte níže uvedený kód:

# ==Třída:httpd::installclass httpd::install zdědí httpd {balíček { 'httpd':ensure => nainstalován,}}

Zde podtřída ‘install ‘ zdědí hlavní třídu httpd . Podívejte se také na syntaxi balíček , což znamená Typ loutky a zajistit atribut zajišťuje, že je zmíněný balíček nainstalován.

Vytvoření podtřídy pro konfiguraci httpd (configure.pp – název modulu třídy::configure)

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
# vim manifests/configure.pp

Zkopírujte a vložte níže uvedený kód, abyste zajistili, že httpd.conf soubor je správně chráněn.

  class httpd::configure zdědí httpd{        soubor { '/etc/httpd/conf/httpd.conf':                zajistit => soubor,                vlastník => 'root',  ro 4                                                     ',        }}

Vytváření podtřídy pro spuštění httpd služba (start.pp – název modulu třídy::start):

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
#  vim manifests/start.pp

Zkopírujte a vložte níže uvedený kód:

třída httpd::start dědí httpd{ service { 'httpd':zajistit     => běží, povolit     => true, hasstatus  => true, hasrestart => true, vyžadovat => Balíček['httpd'], } } 

Nyní máte vytvořené podtřídy.

  • install.pp – k instalaci httpd balíček
  • configure.pp – ke konfiguraci správných oprávnění pro httpd.conf soubor
  • start.pp – pro povolení a spuštění httpd služby.

Krok 7: Nyní bychom měli nechat hlavní třídu httpd abyste věděli o podtřídách (install , nakonfigurujte a začít ). Chcete-li to provést, stačí otevřít hlavní třídu modulu a zahrnout podtřídy.

# vim manifests/init.pp

Zahrnout prohlášení je následující:

class httpd {include httpd::installinclude httpd::configureinclude httpd::start}

Krok 8: Nyní jsme s třídami hotovi. Ale musíte říct Puppetovi, na kterých uzlech by měl být katalog implementován. Zde je návod, jak to udělat.

Přejděte do hlavního souboru manifestu (pod /etc/puppetlabs/code/environments/production/manifests )

# vim site.pp

Zkopírujte a vložte níže uvedený kód. Zde httpd je hlavní třída vytvořená pro správu webového serveru Apache.

výchozí uzel {include httpd}

A je to! Můžete počkat, až uzly Puppet Agent automaticky stáhnou katalog, nebo jej můžete spustit ručně. Přejděte do uzlu Puppet Agent a proveďte níže uvedený příkaz.

Krok 9:

[Agent]# /opt/puppetlabs/puppet/bin/puppet agent -t Info:Používání nakonfigurovaného prostředí 'production' Info:Získávání pluginfacts Info:Získávání informací o pluginu:Cachování katalogu pro puppetagent.test.in Info:Použití konfigurace verze '1472036234' Upozornění:/Stage[main]/Httpd::Install/Package[httpd]/ensure:created Upozornění:/Stage[main]/Httpd::Configure/File[/etc/httpd/conf/httpd.conf ]/mode:režim se změnil z '0600' na '0644' Upozornění:/Stage[main]/Httpd::Start/Service[httpd]/enure:zajistit, že bylo změněno 'zastaveno' na 'running' Info:/Stage[main]/ Httpd::Start/Service[httpd]:Neplánované obnovení služby[httpd] Upozornění:Použitý katalog za 5,88 sekund

Protože se jedná o váš první modul, možná budete chtít ověřit, zda je balíček nainstalován a služba správně spuštěna.

[Agent]# ot./min -qa|grep httpdhttpd-tools-2.4.6-40.el7.centos.4.x86_64httpd-2.4.6-40.el7.centos.4.x86_64
[Agent]# service httpd statusPřesměrování na /bin/systemctl status  httpd.servicehttpd.service – HTTP server Apache načten:načten (/usr/lib/systemd/system/httpd.service; povoleno; přednastaveno dodavatelem:zakázáno) Aktivní:aktivní (běží) od St 2016-08-24 17:29:29 IST; před 6 minutami

Závěr

A je to! Nyní víte, jak napsat své vlastní moduly Puppet pro instalaci, konfiguraci a povolení služby. Tento tutoriál je však pouze výchozím bodem při dělání zázraků s Puppet. Veselé loutkářství!


Linux
  1. Jak používat příkazy „cat“ a „tac“ s příklady v Linuxu

  2. Příkazy hlavy a ocasu v Linuxu vysvětleny s příklady

  3. Kurz rozbalení a rozbalení příkazů s příklady

  1. Jak komprimovat soubory a adresáře v systému Linux (s příklady)

  2. Průvodce FTP a SFTP pro začátečníky s 10 příklady

  3. Perl Array Reference a Dereference Tutorial s praktickými příklady

  1. Jak importovat a spravovat loutkové moduly v Katello

  2. Linux Zip a Unzip Command s příklady

  3. Naučte se příkazy Pgrep a Pkill s příklady v Linuxu