前回はItamaeをインストールし,
リソースとは
レシピにはリソースと呼ばれる,
package "nginx" do
action :install # nginxパッケージをインストールする
version "1.4.6-1ubuntu3.3" # 特定のバージョンをインストールする
end
package "nginx" do
action :remove # nginxパッケージをアンインストールする
end
のようにpackage
リソースをインストールしたり,
package
リソースの場合,install
アクションがデフォルトになっているため,
package "nginx" # 暗黙的にinstallアクションになる
どのようなアクションや属性が用意されているかはドキュメントを参照してください。
Itamaeには様々なリソースが用意されていますが,
executeリソース
execute
リソースは任意のコマンド実行を表します。
runアクション
execute "touch /tmp/file-created-by-itamae" do
action :run # デフォルトなので省略可
end
任意のコマンドをリソースとして定義できるため,
繰り返し似たようなコマンドを書く場合や抽象化出来る場合は,
execute
リソースを利用する際は,
execute "touch /tmp/file-created-by-itamae" do
not_if "test -f /tmp/file-created-by-itamae"
# または
# only_if "test ! -f /tmp/file-created-by-itamae"
end
上記のようにonly_
またはnot_
を使うと,
fileリソース
file
リソースはサーバ上のファイルを表すリソースです。
createアクション
デフォルトはcreate
アクションで,
file "/etc/nginx/conf.d/app.conf" do
action :create # デフォルトなので省略可
content "..." # ファイルの内容
end
fileリソースをつかうと実行時にdiffが表示されます。--dry-run
オプションをつけた場合にも表示されるので,
editアクション
edit
アクションをつかうと,
file "/etc/ssh/sshd_config" do
action :edit
block do |content|
content.gsub!(/^Port .+$/, "Port 12322")
end
end
edit
アクションの場合にもdiffが出力されます。
remote_ fileリソース
createアクション
remote_
remote_file "/etc/my.cnf" do
action :create # デフォルトなので省略可
source "my.cnf" # このファイルを/etc/my.cnfに配置する(レシピがあるディレクトリからの相対パス)
end
content
をファイルに書けること以外,file
リソースと同じですが,source
を分離でき管理しやすくなります。source
は省略すると自動的に決定されます。source
を省略した場合は,
- (レシピがあるディレクトリ)
/files/ etc/ my. cnf - (レシピがあるディレクトリ)
/files/ my. cnf