chef-solo&knife-soloメモ
個人メモのノリで書いているのでいろいろゆるしてほしい
chef-solo&knife-soloでhttpdを起動してwelcomeページを見るまでやります
神資料
参考書
chefとは
Ansibleみたいなサーバー環境構築ツールやで
プロビジョニングを実行するエージェント(chef-server)と、プロビジョニングされるマシン(chef-client)に別れるやで
個人で使うには手に余りすぎるし学習コスト高くて最近は敬遠されてるやで
chef-soloとは
エージェントが無くてもプロビジョニングしたい!というアナタの夢を叶えます
でもプロビジョニングしたいマシンにインスコしてsshで入ってマシン上で実行する必要があってめんどいよ!
knife-soloとは
お手元のPCからでもchef-soloを実行したい!というアナタの夢を叶えます
入手方法はかんたん、gem install knife-solo するだけです
knife-soloを使ってみよう
Dev Kitのインスコ
お手元のPCにDev Kitをインスコしましょう、これでいろいろついてきます
code:sh
$ chef -v
# Chef Development Kit Version: 2.4.17
# chef-client version: 13.6.4
# delivery version: master (73ebb72a6c42b3d2ff5370c476be800fee7e5427)
# berks version: 6.3.1
# kitchen version: 1.19.2
# inspec version: 1.45.13
※昔はchefが無くてもchef-soloだけでknife-soloを実行できたぽいが、今はchefが無いとcookbookを作れないっぽい
ディレクトリの準備
code:sh
# knife-testというリポジトリにします
mkdir knife-test && cd knife-test
# gemfile ほしい
bundle init
# gemfileに "knife-solo" と "berkshelf" たしとく
echo 'gem "knife-solo"\ngem "berkshelf"' >> Gemfile
# ./vendor/bundle以下にインストールして./binに実行ラッパーを置く
bundle install --path vendor/bundle --binstubs
# かくにん
bin/knife -v
# Chef: 13.8.0
これでお手元からknife soloが実行できるようになるゾ
VMの準備
VagrantなりDockerなりでプロビジョニング対象マシンを用意しましょう
自分は knife-test というホスト名のcentos7 Vagrant boxでいくよ
knife-soloでchef-soloをインスコさせる
code:sh
# cookbookのひな型を作る
bin/knife solo init
# knife-testにchef-soloをインスコ
bin/knife solo prepare knife-test
chefでcookbookを作る
なぜknife soloでcookbookを作れなくしたのぜ…
code:sh
# chefで"test-book"というcookbookを作る
cd site-cookbooks
chef generate cookbook test-book
cd ..
入れたいソフトウェアを書く
httpdを入れて起動します
chefのDSLを調べたりしながら…
code:site-cookbooks/test-book/recipes/default.rb
package "httpd" do
action :install
end
service "httpd" do
end
レシピを加える
自分でrun_listにレシピとして書き加えるんじゃ
code:nodes/knife-test.json
{
"run_list": [
],
"automatic": {
"ipaddress": "knife-test"
}
}
knife-soloでchef-soloを実行させる
やっと実行…
code:.sh
# 実行
bin/knife solo cook knife-test
# (中略)
# Converging 2 resources
# Recipe: test-book::default
# * yum_packagehttpd action install # - install version 2.4.6-67.el7.centos.6 of package httpd
# * servicehttpd action enable # - enable service servicehttpd # * servicehttpd action start # - start service servicehttpd かくにん
ブラウザからVMに割り当てたIPにアクセス
https://gyazo.com/9bf908a616dfc99949326be07757aca9
yattaze.