Chef Starter Kitの活用 #opschef_ja #getchef_ja
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
Chef Starter Kitとは
Chef Starter Kitとは、Enterprise ChefにユーザとOrganizationを作成した際にダウンロードできる、chef-repoとユーザとOrganizationの秘密鍵、knife.rbなどをアーカイブしたものです。これを用いることで、Workstationにchef-repoをセットアップする手順が大幅に簡略化できます。
Chef Starter KitはEnterprise Chef 11以降の新しいWeb UIでダウンロードできます。
Enterprise Chefへのユーザ登録
では、Chef Starter Kitをダウンロードしてみましょう。そのためにはEnterprise Chefへのユーザ登録が必要です。2014年10月現在のHosted版Enterprise Chefや、オンプレミス版Enterprise Chef 11、12RCのいずれも同じ手順で行えます。ここではオンプレミス版Enterprise Chef 12RC5を検証に用いました。
また、公式ドキュメントはSet up your Chef environmentになります。
まずEnterprise ChefのWeb UIのトップページにアクセスします。サインアップ画面になるので、必要事項を記入し「Get Started」ボタンを押下します。
ユーザが所属するOrganizationの作成
ユーザが作成できたら、Organizationの作成を求められます。
必要事項を記入し「Create Organization」ボタンを押下します。
Chef Starter Kitのダウンロード
ユーザとそれが所属するOrganizationが作成できたら、ユーザとOrganizationの秘密鍵、knife.rbなどをアーカイブしたChef Starter Kitがダウンロードできるようになりますので、「Download Starter Kit」ボタンを押下します。
ダウンロードの際、ユーザとOrganizationの秘密鍵がリセットされ新しく生成されます。この手順に沿っている場合はそれらの秘密鍵を取得していないので気にする必要はありません。「Proceed」ボタンを押下してください。
「chef-starter.zip」ファイルがダウンロードできます。
Chef Starter Kitの利用
ダウンロードしたchef-starter.zipをWorkstationに転送しましょう。
% scp chef-starter.zip ubuntu@192.168.122.100:
ubuntu@192.168.122.100's password:
chef-starter.zip 100% 14KB 14.2KB/s 00:00
%
chef-starter.zipファイルを展開します。
ubuntu@ws:~$ unzip chef-starter.zip
Archive: chef-starter.zip
inflating: chef-repo/README.md
creating: chef-repo/cookbooks/
creating: chef-repo/cookbooks/starter/
creating: chef-repo/cookbooks/starter/templates/
creating: chef-repo/cookbooks/starter/templates/default/
inflating: chef-repo/cookbooks/starter/templates/default/sample.erb
creating: chef-repo/cookbooks/starter/recipes/
inflating: chef-repo/cookbooks/starter/recipes/default.rb
creating: chef-repo/cookbooks/starter/files/
creating: chef-repo/cookbooks/starter/files/default/
inflating: chef-repo/cookbooks/starter/files/default/sample.txt
inflating: chef-repo/cookbooks/starter/metadata.rb
creating: chef-repo/cookbooks/starter/attributes/
inflating: chef-repo/cookbooks/starter/attributes/default.rb
inflating: chef-repo/cookbooks/chefignore
warning: skipped "../" path component(s) in chef-repo/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/templates/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/templates/default/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/recipes/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/files/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/files/default/../
warning: skipped "../" path component(s) in chef-repo/cookbooks/starter/attributes/../
creating: chef-repo/.chef/
creating: chef-repo/roles/
inflating: chef-repo/.chef/knife.rb
inflating: chef-repo/Vagrantfile
inflating: chef-repo/roles/starter.rb
inflating: chef-repo/.chef/d-higuchi.pem
inflating: chef-repo/.chef/creationline-validator.pem
ubuntu@ws:~$
このように、chef-repoのディレクトリ構造を基本とし、秘密鍵、knife.rb、サンプルのCookbook、Role、Vagrantfileが用意できました。わざわざ手動で準備する手間が省けています。
ubuntu@ws:~$ tree -a chef-repo
chef-repo
|-- .chef
| |-- creationline-validator.pem
| |-- d-higuchi.pem
| `-- knife.rb
|-- README.md
|-- Vagrantfile
|-- cookbooks
| |-- chefignore
| `-- starter
| |-- attributes
| | `-- default.rb
| |-- files
| | `-- default
| | `-- sample.txt
| |-- metadata.rb
| |-- recipes
| | `-- default.rb
| `-- templates
| `-- default
| `-- sample.erb
`-- roles
`-- starter.rb
10 directories, 12 files
ubuntu@ws:~$
knife.rbには必要事項が既に設定されています。
ubuntu@ws:~/chef-repo$ cat .chef/knife.rb
# See http://docs.getchef.com/config_rb_knife.html for more information on knife configuration options
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "d-higuchi"
client_key "#{current_dir}/d-higuchi.pem"
validation_client_name "creationline-validator"
validation_key "#{current_dir}/creationline-validator.pem"
chef_server_url "https://manage.opscode.local/organizations/creationline"
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
ubuntu@ws:~/chef-repo$
問題なくChef Serverと通信ができています。
ubuntu@ws:~/chef-repo$ knife client list
creationline-validator
ubuntu@ws:~/chef-repo$ knife raw /
{
"name": "creationline",
"full_name": "CREATIONLINE,INC.",
"guid": "********************************"
}
ubuntu@ws:~/chef-repo$
早速gitの管理下に置いて、Infrastructure as Codeを始めましょう。
ubuntu@ws:~$ git config --global user.name 'd-higuchi'
ubuntu@ws:~$ git config --global user.email 'd-higuchi@creationline.com'
ubuntu@ws:~$
ubuntu@ws:~$ cd chef-repo
ubuntu@ws:~/chef-repo$
ubuntu@ws:~/chef-repo$ git init
Initialized empty Git repository in /home/ubuntu/chef-repo/.git/
ubuntu@ws:~/chef-repo$
ubuntu@ws:~/chef-repo$ git add *
ubuntu@ws:~/chef-repo$ git commit -m 'initial commit'
[master (root-commit) 75d4159] initial commit
9 files changed, 246 insertions(+)
create mode 100644 README.md
create mode 100644 Vagrantfile
create mode 100644 cookbooks/chefignore
create mode 100644 cookbooks/starter/attributes/default.rb
create mode 100644 cookbooks/starter/files/default/sample.txt
create mode 100644 cookbooks/starter/metadata.rb
create mode 100644 cookbooks/starter/recipes/default.rb
create mode 100644 cookbooks/starter/templates/default/sample.erb
create mode 100644 roles/starter.rb
ubuntu@ws:~/chef-repo$
まとめ
Chef Starter Kitの登場により、Workstationにchef-repoをセットアップする手順が大幅に簡略化でき、すぐにChef Serverを利用できるようになりました。
chef-repoとInfrastructure as Codeについては書籍『Chef活用ガイド コードではじめる構成管理』も参照してください。