- bygger på Chef InSpec och Habitat
Hanterar servern
Använder knife för att kommunicera med servern och noderna
Kan använda chef-run för att köra ad-hoc på noder
chefdk är ett liknande paket byggt av communityn
Med knife kan man hämta community-skrivna kokböcker
knife supermarket search apt knife supermarket download aptly
{ "chef_type": "role", "json_class": "Chef::Role", "name": "webserver", "description": "The base role for systems that serve HTTP traffic", "default_attributes": { "apache2": { "listen_ports": [ "80" ] } }, "run_list": [ "recipe[apache2]", "recipe[apache2::mod_ssl]", "role[monitor]" ] }
{ "chef_type": "environment", "json_class": "Chef::Environment", "name": "dev", "description": "Dev Environment", "default_attributes": { "apache2": { "listen_ports": [ "80" ] } }, "cookbook_versions": { "couchdb": "= 11.0.0" } }
data_bags/ sample_bag_1/ sample_item_1_1.json sample_item_1_2.json sample_item_1_3.json sample_bag_2/ sample_item_2_1.json sample_item_2_2.json { // This is a comment "id": "ITEM_NAME", "anykey": "anyvalue" }
$ cat webserver/recipes/default.rb # # Cookbook:: webserver # Recipe:: default # # Copyright:: 2018, The Authors, All Rights Reserved. apt_update package 'apache2' template '/var/www/html/index.html' do source 'index.html.erb' end service 'apache2' do action [:enable, :start] end
package 'tar' do version '1.16.1' action :install endeller
package 'tar' do version '1.16.1' endeller
package 'tar'
bash 'extract_module' do cwd ::File.dirname(src_filepath) code <<-EOH mkdir -p #{extract_path} tar xzf #{src_filename} -C #{extract_path} mv #{extract_path}/*/* #{extract_path}/ EOH not_if { ::File.exist?(extract_path) } end
execute 'test-nagios-config' do command 'nagios3 --verify-config' action :nothing end template '/etc/nagios3/configures-nagios.conf' do # other parameters notifies :run, 'execute[test-nagios-config]', :delayed endeller
execute 'test-nagios-config' do command 'nagios3 --verify-config' action :nothing subscribes :run, 'template[/etc/nagios3/configures-nagios.conf]', :immediately end
Kommer från
Exempel:
$ cat cookbooks/starter/attributes/default.rb default["starter_name"] = "Sam Doe" override["system_name"] = "Chef Starter"
Läs mer: https://docs.chef.io/attributes.html
Exempel:
$ cat webserver/templates/index.html.erb <html> <head> <title>Learn Chef Demo</title> </head> <body> <h1>Hello Learn Chef</h1> <p>This is <%=node['hostname']%></p> </body> </html>
Listan av recept som ska exekveras kan anges
på kommandoraden:
chef-client --runlist "apache2,recipe[apache2::mod_ssl],role[webserver]"
på kommandoraden i cron
i en roll:
"run_list": [ "recipe[apache2]", "recipe[apache2::mod_ssl]", "role[webserver]" ]
Om ingen run_list anges, används senaste lyckade exekvering
Kör färdigt try-chef
Föreslå en lösning på felet i steg fem
curl: (7) Failed to connect to lb port 80: Connection refused
Skriv en enkel egen kokbok som t.ex.
Skaffa en chef-server