Chef ファイルの作成

提供: FreeBSD入門
移動: 案内検索
スポンサーリンク

Chef でファイルを作成する方法を説明します。

概要

Chefでファイルを作成するには、fileを使用します。

単にファイルを作成する

設定 recipes/default.rb

file "/tmp/foo.txt" do
        owner "root"
        group "wheel"
        mode "0600"
        action :create
end

実行例

user@vm:~/cookbooks % sudo chef-solo -o test
Starting Chef Client, version 11.6.0
[2013-12-07T20:42:13+09:00] WARN: Run List override has been provided.
[2013-12-07T20:42:13+09:00] WARN: Original Run List: []
[2013-12-07T20:42:13+09:00] WARN: Overridden Run List: [recipe[test]]
Compiling Cookbooks...
Converging 1 resources
Recipe: test::default
  * file[/tmp/foo.txt] action create
    - create new file /tmp/foo.txt
    - change mode from '' to '0600'
    - change owner from '' to 'root'
    - change group from '' to 'wheel'
 
Chef Client finished, 1 resources updated

作成されたファイルを確認します。

user@vm:~/cookbooks % ls -l /tmp/foo.txt
-rw-------  1 root  wheel  0 Dec  7 20:42 /tmp/foo.txt

ファイルをコピーする

設定 recipes/default.rb

file "/tmp/foo.txt" do
        owner "root"
        group "wheel"
        mode "0600"
        action :create
end
 
file "/tmp/ls" do
        owner   "root"
        group   "wheel"
        mode    "555"
        content ::File.open("/bin/ls").read
        action  :create
end

実行例

user@vm:~/cookbooks % sudo chef-solo -o test
Starting Chef Client, version 11.6.0
[2013-12-07T20:47:26+09:00] WARN: Run List override has been provided.
[2013-12-07T20:47:26+09:00] WARN: Original Run List: []
[2013-12-07T20:47:26+09:00] WARN: Overridden Run List: [recipe[test]]
Compiling Cookbooks...
Converging 2 resources
Recipe: test::default
  * file[/tmp/foo.txt] action create (up to date)
  * file[/tmp/ls] action create
    - create new file /tmp/ls
    - update content in file /tmp/ls from none to 3f9278
        (new content is binary, diff output suppressed)
    - change mode from '' to '0555'
    - change owner from '' to 'root'
    - change group from '' to 'wheel'
 
Chef Client finished, 1 resources updated
user@vm:~/cookbooks % cmp /tmp/ls /bin/ls
user@vm:~/cookbooks % cmp /tmp/ls /bin/ls

テンプレートでファイルを作成する

設定ファイルを配布するような場合に使えます。 テンプレートのファイルは、erb(eruby)で作成します。

設定 recipes/default.rb

template "/tmp/bar.txt" do
        owner   "root"
        group   "wheel"
        mode    "0444"
        source  "bar.txt.erb"
        variables({
                :msg    => "Hoge"
        })
        action  :create
end

テンプレートファイル templates/default/bar.txt.erb

<%= @msg %>

実行例

user@vm:~/cookbooks % sudo chef-solo -o test
Starting Chef Client, version 11.6.0
[2013-12-07T20:57:37+09:00] WARN: Run List override has been provided.
[2013-12-07T20:57:37+09:00] WARN: Original Run List: []
[2013-12-07T20:57:37+09:00] WARN: Overridden Run List: [recipe[test]]
Compiling Cookbooks...
Converging 1 resources
Recipe: test::default
  * template[/tmp/bar.txt] action create
    - create new file /tmp/bar.txt
    - update content in file /tmp/bar.txt from none to 4ae3cc
        --- /tmp/bar.txt        2013-12-07 20:57:37.000000000 +0900
        +++ /tmp/chef-rendered-template20131207-43558-1elh3ej
		2013-12-07 20:57:37.000000000 +0900
        @@ -0,0 +1 @@
        +Hoge
    - change mode from '' to '0444'
    - change owner from '' to 'root'
    - change group from '' to 'wheel'
 
Chef Client finished, 1 resources updated

作成されたファイルは、以下の通りです。

user@vm:~/cookbooks % cat /tmp/bar.txt
Hoge

関連項目




スポンサーリンク