chefレシピ記述色々
package
前回の記事でも使用したpackageの色々
nginxをインストール
version hogeを指定
package "nginx" do action :install version "hoge" end
actionの種類(一部)
- install パッケージをインストール
- upgrate レシピを実行した際に最新版にアップグレード
- remove パッケージ削除
gem_package
任意のgemのinstall
rakeをインストール
gem_package "rake" do action :install end
gemコマンドのパスを指定
versionも指定
gem_package "rake" do gem_binary "gem_file_path" version "0.0.1" action :upgrade end
テンプレートから設定ファイルの配置
templateはAttributeを利用したい場合に使用する
/etc/nginx/nginx.confにおかれたファイルを管理
template "nginx.conf" do path "/etc/nginx/nginx.conf" source "nginx.conf.erb" owner "root" group "root" mode 0644 end
pathは配布するディレクトリのパス
sourceはcookbook templates/default以下にある配布したいファイルを指定
owner, groupでそれぞれ所有者とグループを指定しmodeでパーミッションを指定
下記の様に省略も可能
template "/etc/nginx/nginx.conf" do owner "root" group "root" mode 0644 end
省略した場合chefがルールに従いファイルなどを選択します
Attributeを使用する
cookbook内のattributes内にファイルを作成
$ vi cookbooks/hoge/attributes/default.rb
default[:packages] = %w{zsh gcc make readline-devel}
$ vi cookbooks/hoge/recipes/default.rb
node[:packages].each do |package_name| package package_name do action :install end end
attributes/default.rbでdefault[:packages]に格納した値を
recipesで使用することができます。
recipes以外にもtemplates内のファイルでも使用出来るので
nginx.confのport番号等をattributesで管理も可能になります。
attributesでの変数への格納がdefaultなのは
roles/内のjsonファイルで上書きができるからです
service
サービス系packageの起動など
nginxの起動
status, restart, reloadが使えるよっていう指定をする
service "nginx" do action [ :enable, :start ] supports :status => true, restart => true, reload => true end
nginx.confが更新された場合にreloadする
上記に加えて下記を記述
template "/etc/nginx/nginx.conf" do notifies :reload, 'service[nginx]' end
service "nginx"を探してreload処理を行ってくれます。
file操作
ユーザ,グループ作成
ユーザhogeを作成
user "hoge" do comment "hoge" home "/home/hoge" shell "/bin/bash" password nil supports :manage_home => true end
グループhogeを作成
group "hoge" do gid 999 members ['hoge', 'test'] action :create end
gitレポジトリからファイル取得
/tmp/railsにgit://github.com/rails/rails.gitのmasterブランチからファイルを取得
git "/tmp/rails" do repository "git://github.com/rails/rails.git" reference "master" action :checkout user "root" group "root" end
シェルスクリプト実行
touch /tmp/hoge.txtをユーザhogeで実行実行
bash "create hoge.txt" do user "hoge" group "hoge" environment "HOME" => "/home/hoge" cwd "/home/hoge" code <<-EOH touch /tmp/hoge.txt EOH creates "/tmp/hoge.txt" end
cwdでカレントディレクトリを指定し
environmentで環境変数を設定
codeに実行するスクリプトを指定
createsで/tmp/hoge.txtがあった場合はスクリプトを実行しないことを指定
その他
その他に関してはこちらのドキュメントにいっぱいのってます。
実際に使用したものはメモてきにここに追記していこうかと思ってます