Project

General

Profile

Ubuntu Chef

Installation Chef Server

Links https://docs.chef.io/install_server.html

  • download chef-server https://downloads.chef.io/chef-server
  • Install deb Pakage
    # dpkg -i chef-server-core_12.16.*_amd64.deb
    
  • hostname setzen (/etc/hosts, /etc/hostname)
  • Chef Basis Konfiguration
    # chef-server-ctl reconfigure
    # chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename USER_NAME.pem
    # chef-server-ctl org-create SHORT_NAME 'FULL_ORGANISATION_NAME' --association_user USER_NAME --filename ORGANIZATION_VALIDATOR.pem
    
    • USER_NAME.pem und ORGANIZATION_VALIDATOR.pem wird im Verzeichnis angelegt. Die Files müssen gesichert werden.
  • Optional Install Managed
    # chef-server-ctl install chef-manage
    # chef-server-ctl reconfigure
    # chef-manage-ctl reconfigure
    

Chef Workstation installieren

  • create empty git dir "chef-repo"
    wget http://github.com/opscode/chef-repo/tarball/master
    tar -zxf master
    mv chef-boneyard-*/* chef-repo/
    rm master
    
  • Initiale Konfig des Chef Repos
    mkdir chef-repo/.chef
    
  • copy USER_NAME.pem vom Chef Server nach ./chef-repo/.chef
  • chef-repo/.chef/knife.rb anlegen
     touch .chef/knife.rb
    
Beispiel knife.rb:
current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "USER_NAME" 
client_key               "#{current_dir}/USER_NAME.pem" 
chef_server_url          "https://chef-server/organizations/SHORT_NAME" 
cookbook_path            ["#{current_dir}/../cookbooks"]

Testen

cd chef-repo
knife client list #(wird nicht funktionieren, wegen private Cert auf Server)
knife ssl fetch #holt das private Cert vom Chef Server und speichert es im Client
knife client list # (jetzt sollte es tun)

Bootstrap Node

bootstrap auf den chef workstation ausführen

knife bootstrap $IP|$HOSTNAME -x $USER -P $PWD --sudo --node-name $NODE_NAME --bootstrap-proxy $PROXY_URL
  • --bootstrap-proxy -> nur wenn ein Proxy benötigt wird (auf dem Client per wget runter geladen)

Cookbook erstellen,hochladen und deployen

Link: https://www.digitalocean.com/community/tutorials/how-to-create-simple-chef-cookbooks-to-manage-infrastructure-on-ubuntu