Ming-der Wang
ming@log4analytics.com
TurboTeam 集先鋒科技
https://www.chef.io ( 7 year-old)
http://www.rightscale.com/blog/sites/default/files/Cloud%20Computing%20Trends%20DevOps%20Tools%20Use%202015.png
2015 的問卷
*Docker 算不算?
CHEF SERVER
NODES
Workstation
Workstation
Workstation
用 Git 來管理 chef-repo
用 Git 來管理
哪些該用 Chef ? 哪些該用 docker-compose ?
? <------------- 開發環境 ----------> ?
? <------------- Production ----------> ?
? <------------- gitlab? redmine? jenkins ----------> ?
chef gem install knife-solo
或
gem install knife-solo
照這個 Link 做 hands-on (15 分鐘)
$ vagrant init forumone/centos64-64
$ knife solo init chef-repo
$ vagrant up
$ vagrant ssh-config --host hogege >> ~/.ssh/config
$ ssh hogege
// 記得要 prepare your node (chef-server 叫 bootstraping)
$ knife solo prepare hogege
$ knife solo init chef-repo $ cd chef-repo
$ knife cookbook create hello -o site-cookbooks/
or $ cd site-cookbooks; chef generate cookbook hello (新方法)
照著 link (http://www.webcyou.com/?p=4776) 修改一下 hello cookbook
$ cat nodes/hogege.json
$ knife solo cook hogege
{
"run_list": [
"recipe[hello]"
]
}
$ git clone https://github.com/mingderwang/TaipeiDevOpsMeetup-chef.git
$ cd TaipeiDevOpsMeetup-chef
$ git checkout v2.0.1-log4-chef-server
$ git checkout -b chef-server
$ cat Berksfile
source "https://api.berkshelf.com"
cookbook 'chef-server', '= 2.1.6'
$ berks install
$ cat nodes/hogege.json
{
"run_list": [
"recipe[chef-server]",
"recipe[log4-chef-server]"
]
}
$ cd TaipeiDevOpsMeetup-chef/chef-repo
$ knife solo cook hogege
(if can't SSH)
$ cd TaipeiDevOpsMeetup-chef/
$ rm -r .vagrant
$ vagrant ssh-config --host hogege >> ~/.ssh/config
$ cat .chef/knife.rb
cookbook_path ["cookbooks", "site-cookbooks"]
node_path "nodes"
role_path "roles"
environment_path "environments"
data_bag_path "data_bags"
#encrypted_data_bag_secret "data_bag_key"
knife[:berkshelf_path] = "cookbooks"
Chef::Config[:ssl_verify_mode] = :verify_peer if defined? ::Chef
參考 https://blog.chef.io/2013/12/03/doing-wrapper-cookbooks-right/
(如何客製化你的 cookbook)
- 也將成為公司規定 -
絕對不要 git clone cookbook, 直接修改
$ knife cookbook create log4-ntp -o site-cookbooks
or
$ cd site-cookbooks
$ berks cookbook log4-ntp
$ cat Berksfile
source "https://api.berkshelf.com"
cookbook 'ntp', '~> 3.2.0'
$ cat metadata.rb
name 'log4-ntp'
maintainer 'YOUR_COMPANY_NAME'
maintainer_email 'YOUR_EMAIL'
license 'All rights reserved'
description 'Installs/Configures log4-ntp'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.1.0'
depends 'ntp'
default['ntp']['peers'] = ['ntp1.acmeco.com', 'ntp2.acmeco.com']
include_recipe 'ntp'
$ cat nodes/hogege.json
{
"run_list":[
"recipe[log4-ntp::default]"
]
}
$ knife solo cook hogege
(會的人, 10/28 可以來分享)
ming@log4analytics.com
DevOpsTaiwan.slack.com
(進入 slack 方法 -> devopstaiwan.com)