Automatizáljunk Chef-fel gabor.magasvari@shiwaforce.com 2015. július 21

Automatizáljunk Chef-fel

Kezdjünk a fent említett recipes-el. Ezek azok a fájlok, melyek utasításai tartalmazzák, hogy a Chef kliensnek milyen beállításokat kell magán végrehajtania. Tetszőleges számú receptet készíthetünk elő, melyeket úgynevezett “cookbook”-ok segítségével foghatjuk össze. Ebből is látszik, hogy egy kliens/szerver alapú kommunikációról beszélünk. Ezenfelül a Chef támogatja a standalone módot, amikor szerver elérés nélkül az utasításokat közvetlenül a gépen futtatjuk le a chef-solo eszközzel.

A chef szerver telepítésére cikkünk nem tér ki, hiszen rendkívül kidolgozott telepítési leírás érhető el az oldalukon: http://docs.chef.io/install_server.html

Nézzünk egy egyszerű példát egy fájl elkészítésére, majd határozzuk meg ennek tartalmát és jogosultságát.

Legyen a fájl neve teszt.txt és a tartalma:

Hello World!

Majd hivatkozzunk erre a fájlra a cookbook_file resource alatt és állítsuk be, hogy a /tmp/ könyvtár alá kerüljön:

cookbook_file '/tmp/teszt.txt' do
source 'teszt.txt'
owner 'root'
group 'root'
mode '0644'
end

Futtassuk le a chef-client-et a kliensen:

root@chef01-demo-client:~# chef-client
Starting Chef Client, version 12.3.0
resolving cookbooks for run list: ["shiwaforce::hello_world"]
Synchronizing Cookbooks:
- shiwaforce
Compiling Cookbooks...
Converging 1 resources
Recipe: shiwaforce::hello_world
* cookbook_file[/tmp/teszt.txt] action create
- create new file /tmp/teszt.txt
- update content in file /tmp/teszt.txt from none to 7f83b1
--- /tmp/teszt.txt 2015-07-10 15:32:28.765523308 +0200
+++ /tmp/.teszt.txt20150710-12162-8u7b8e 2015-07-10 15:32:28.765523308 +0200
@@ -1 +1,2 @@
+Hello World!
- change mode from '' to '0644'
- change owner from '' to 'root'
- change group from '' to 'root'
Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 5.871312342 seconds

Az eredményben is látszik, hogy a fájl létrejött, és a tartalma is megjelenik. Valamint jól látszik hogy a jogosultságokat is beállította a fájlon az előre kért módon.

Az eredményt így ellenőrizhetjük le:

root@chef01-demo-client:~# cat /tmp/teszt.txt
Hello World!

Lássuk mi történik akkor, ha kézzel hozzányúlunk a fájl tartalmához:

root@chef01-demo-client:~# echo "Kovetkezo sor" >> /tmp/teszt.txt && cat /tmp/teszt.txt
Hello World!
Kovetkezo sor

Futtassuk le újfent a chef kliens részét:

root@chef01-demo-client:~# chef-client
Starting Chef Client, version 12.3.0
resolving cookbooks for run list: ["shiwaforce::hello_world"]
Synchronizing Cookbooks:
- shiwaforce
Compiling Cookbooks...
Converging 1 resources
Recipe: shiwaforce::hello_world
* cookbook_file[/tmp/teszt.txt] action create
- update content in file /tmp/teszt.txt from 331dd9 to 03ba20
--- /tmp/teszt.txt 2015-07-10 15:51:46.098052723 +0200
+++ /tmp/.teszt.txt20150710-12810-1n6kie4 2015-07-10 15:52:06.580415541 +0200
@@ -1,3 +1,2 @@
Hello World!
-Kovetkezo sor
Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 6.332635026 seconds

Az eredményből látszik, hogy a kézzel hozzáadott string-et kivette, és visszaállította az eredeti állapotot.

Ellenőrizzük még egyszer:

root@chef01-demo-client:~# cat /tmp/teszt.txt
Hello World!

Rövid cikkünk alapján is látszik, hogy a segítségével bonyolult folyamatok automatizálását is magabiztosan elvégezhetjük. Remélem kedvet kaptatok a cikk kapcsán, hogy kipróbáljátok Ti is a Chef-et.

Folytatása következik.