fbpx

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」ボタンを押下します。

010-signup-page

ユーザが所属するOrganizationの作成

ユーザが作成できたら、Organizationの作成を求められます。

020-create-new-org

必要事項を記入し「Create Organization」ボタンを押下します。

030-create-org

Chef Starter Kitのダウンロード

ユーザとそれが所属するOrganizationが作成できたら、ユーザとOrganizationの秘密鍵、knife.rbなどをアーカイブしたChef Starter Kitがダウンロードできるようになりますので、「Download Starter Kit」ボタンを押下します。

040-chef-manage-adm

ダウンロードの際、ユーザとOrganizationの秘密鍵がリセットされ新しく生成されます。この手順に沿っている場合はそれらの秘密鍵を取得していないので気にする必要はありません。「Proceed」ボタンを押下してください。

050-download-starter-kit

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活用ガイド コードではじめる構成管理』も参照してください。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA