Skip to content

Instantly share code, notes, and snippets.

@bonyiii
Created June 9, 2010 19:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bonyiii/431999 to your computer and use it in GitHub Desktop.
Save bonyiii/431999 to your computer and use it in GitHub Desktop.
Chef setup
# Chef telepítés.
# Itt lehet infókat találni arról, hogy kell telepíteni chef -et.
# Először ezt csináljuk végig.
#http://github.com/veszig/chef-overlay
#http://wiki.opscode.com/pages/viewpage.action?pageId=1180116
#http://github.com/opscode/chef-repo
###
# Szever
mkdir -p /root/.chef/checksums
bear-chef ~ # cat > /root/.chef/knife.rb <<\EOF
log_level :info
log_location STDOUT
node_name "chef-webui"
client_key "/etc/chef/webui.pem"
validation_client_name "chef-validator"
validation_key "/etc/chef/validation.pem"
chef_server_url "http://127.0.0.1:4000"
cache_type "BasicFile"
cache_options( :path => "/root/.chef/checksums" )
cookbook_path [ "/var/lib/chef/cookbooks" ]
EOF
# Tesztként
knife client list
# Válasz
[
"bear-chef.home",
"chef-validator",
"chef-webui"
]
# Létrehozunk egy bonyiii user -t akivel majd lehet a szervert nyesztetni
knife client create bonyiii -f /root/bonyiii.key
# FONTOS amikor feldobja a vim -et vagy a defult szerkesztőt és egy json filet ajánl fel szerkesztésre
# az "admin: false" -t cseréljük le "true" -ra egyébként a knife nem tudja végrehajtani a parancsainkat.
{
"public_key": null,
"name": "bonyiii",
"json_class": "Chef::ApiClient",
"admin": true,
"chef_type": "client"
}
###
# Fejlesztői Kliens (Desktop)
# Átmásoljuk a szerverről a kulcsot a fejlesztői gépre (Desktop), jelen esetben: bear.home.
scp ~/.chef/bonyiii.key bonyiii@bear.home:/home/bonyiii/.chef/bonyiii.key
# Meg az ellenőrző kulcsot itt most már úgy hívják, hogy
scp root@192.168.15.113:/etc/chef/validation.pem /home/bonyiii/.chef/validation.pem
# A gépen ahol a cookbook -okat készítem (Desktop) az egy sorral feljebb létrehozott kliens kulcsot használom
knife client create bonyiii -f /root/bonyiii.key
bonyiii@bear:/> mkdir -p /home/bonyiii/.chef
bonyiii@bear:/> cat > /home/bonyiii/.chef/knife.rb <<\EOF
log_level :info
log_location STDOUT
node_name "bonyiii"
client_key "/home/bonyiii/.chef/bonyiii.key"
# Ezek nem kelletek ha van rendes key
#validation_client_name "chef-validator"
#validation_key "/home/bonyiii/.chef/validation.pem"
chef_server_url "http://192.168.15.103:4000"
cache_type "BasicFile"
cache_options( :path => "/home/bonyiii/.chef/checksums" )
cookbook_path [ "/home/bonyiii/public_html/chef/cookbooks", "/home/bonyiii/public_html/chef/site-cookbooks" ]
EOF
###
# Normál Kliens
# Két lehetőség van vagy a szerver validation.pem -jét másoljuk át a kilensre
scp /etc/chef/validation.pem root@192.168.15.106:/etc/chef/validation.pem
# Majd ezután elindítjuk/újra indítjuk a klienst és az regisztrálja magát a szerveren
# Ha elindult a log fájlt az /etc/chef/client.rb -ben meghatározott helyen találjuk (/var/log/chef/client.log)
# Ezt mondja majd:
[Wed, 09 Jun 2010 20:52:21 +0200] INFO: Daemonizing..
[Wed, 09 Jun 2010 20:52:21 +0200] INFO: Forked, in 16196. Priveleges: 0 0
[Wed, 09 Jun 2010 20:52:24 +0200] INFO: Starting Chef Run
# Nem találta a kliens kulcsot ezért regisztrálta magát a szerveren
[Wed, 09 Jun 2010 20:52:26 +0200] INFO: Client key /etc/chef/client.pem is not present - registering
[Wed, 09 Jun 2010 20:52:26 +0200] WARN: HTTP Request Returned 404 Not Found: Cannot load node bear-ap1.home
# Nincs mit csinálnia
[Wed, 09 Jun 2010 20:52:28 +0200] WARN: Node bear-ap1.home has an empty run list.
# Kész
[Wed, 09 Jun 2010 20:52:29 +0200] INFO: Chef Run complete in 5.650111 seconds
# Ezután törölhetjük az /etc/chef/validation.pem -et a kliensről. A szerveren marad!
# vagy
knife client create bear-ap1 -f /root/bear-ap1.pem
# és ezt másolom át a kliensre
scp /root/bear-ap1.pem root@192.168.15.106:/etc/chef/client.pem
# Én az első móddszert szoktam használni.
###
# site-cookbooks
# http://wiki.opscode.com/display/chef/Cookbooks
# A knife.rb -ben megadani a site-cookboobs path -et
# A szerveren egy könyvtárba kerül összemásolásra a két helyről származó fájlok. Tehát ha van egy gentoo csomagom a cookbooks -ban
# és van egy a site-cookbooksban akkor a fájlokat összemásolja a szerveren de ehhez semmit nem kell állítani szerver oldalon.
###
# Shef
# ruby-debug -hoz hasonló felületet ad kliensen szépen végig lehet játszni, hogy mit történik amikor a chef parancsokat szépen kiadogatjuk.
###
# Troubleshooting
##
# Induló nehézségek
# A rabbitmq -val szívtam az elején ami fontos, hogy vagy legyen dns vagy az /etc/hosts fájlban a 127.0.0.1 -hez legyen a hostnév is hozzáadva pl: bear-chef
# illetve ha összefossa magát indításnál (egész pontosan a database... résznél)
# úgy lehet tesztelni, hogy nem -detached módban indítjuk parancssorból:
rabbitmq-server
# A rabbitmq érzékeny a host névre fontos hogy minden verzióban benne legyen az /etc/hosts fájlban pl:
127.0.0.1 bear-chef.home bear-chef localhost
# akkor a /var/lib/rabbitmq/mnesia/rabbit könvtárat töröljük (ami az adatbázis tehát ez elveszik) újra lehet indítani
# A chef indiítása előtt még couchdb -t is el kell indítani
/etc/init.d/couchdb
# https://gist.github.com/1318efbb8bd55575593e
# Vészi Gábor teszt scriptjei
/usr/bin/rabbitmqctl list_vhosts | grep ^/chef$
# Azt kell, mondja hogy:
/chef
##
# "Unathorized"?
# Ha azt mondja, hogy "Unathorized" amikor a home desktop ról akarunk csatlakozni a knife -al, hogy parancsokat hajtsunk végre akkor egy tipp:
# Az alján van, hogy
#http://wiki.opscode.com/display/chef/Knife
#"Unauthorized 401" errors can be caused by the clock on your client machine and server not being the same. Try synchronising them, and see if that helps. If it doesn't help, try resetting the chef validation as described in this blog article.
#http://blog.ibd.com/scalable-deployment/reseting-the-opscode-chef-server-validation-keypem/
# Na nekem óra szinkronizáció miatt még nem szállt el egyszer sem.
# A kliensről nyitok egy ssh csatornát és belépek a kócsdébére (couchdb)
bonyiii@bear:~/> ssh root@192.168.15.103 -L 5984:localhost:5984
# Ezután böngészővel a http://localhost:5984/_utils címen lehet elérni a kócsdébét
# kikerestem azt a bejegyzést amelynél a name field értéke bonyiii ez a "d2fc0f02-71c6-4254-9c6f-3ab85462d68a" id -jű elem volt éppen de ez nyilván változik új telepítésnél.
# és az admin false -t átböktem true -ra innentől kezdve működött!
bonyiii@bear:/> knife client list
[
"bonyiii",
"chef-validator",
"chef-webui"
]
##
# Elindul de mégsem, könyvtár jogosultság probléma
# A chef-server elindul, de a merb már nincs benne a ps faux -ban.
# A követekező dolgokat nézzük meg:
# A /var/log/couchdb/couch.log mit mond
# A /var/lib/couchdb legyen couchdb:couchdb userhez rendelve
# A /var/lib/couchdb/.chef_design legyen couchdb:couchdb userhez rendelve
# A chef könyvtárait azért nem kell ellenőrzni - elvileg - mert az /etc/init.d/chef-server-api script startnál ellenőrzi a jogosultságokat.
# Meg lehet próbálni parncssorból elindítani:
##
#chef http.rb undefined method `closed?' for nil:NilClass
# chef-server indításakor az fenti hibaüzenet jelentkezik.
# Valószínűleg nem tud kapcsolódni a couchdb -hez (vagy valami máshoz)
# openvz alatt fordult elő, valamiért a localhost -ot nem asszociálta a 127.0.0.1 -el ???
# ekkor az /etc/chef/server.rb meg lehet adni a couchdb elérési útvonalát (arra is jó ez a direktíva pl másik szerveren van)
couchdb_url "http://127.0.0.1:5984"
# további configurációs beállítások:
#http://wiki.opscode.com/display/chef/Chef+Configuration+Settings#ChefConfigurationSettings-filecachepath
##
# chef 0.9.6
# ERROR: Re-raising exception: SystemStackError - stack level too deep
# /usr/lib/ruby/gems/1.8/gems/chef-0.9.6/bin/../lib/chef/node.rb:403:in `to_json'
# A megoldás dev-ruby/json-1.2.2 -t kell használni.
# Chef requires json 1.4.2 or earlier. A bug in json 1.4.3 causes the error you are experiencing. This issue has been documented in the installation instructions for Chef on our wiki: http://wiki.opscode.com/display/chef/Installation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment