2016-10-19 3 views
1

シェフの配列で変数を使用するにはどうすればいいですか?私は配列を持つ複数のフォルダを作成しようとしています。しかし、私のコードは動作しません:シェフの変数を配列に使用する

コード

variable1 = "/var/lib/temp" 
variable2 = "/opt/chef/library" 

%w{ #{variable1} #{variable2} }.each do |dir| 
    directory dir do 
     owner 'root' 
     group 'root' 
     mode '755' 
     recursive true 
     action :create 
    end 
end 

答えて

3

%w{ ... }構文は、単語の配列を宣言するためのもので、何ら補間は行われません。あなたは、既存の文字列の配列をしたいので、あなたはプレーン古い配列を宣言することによって、このようにそれを行うことができます。

[ variable1, variable2 ].each do |dir| 
    # ... 
end 

それとも、これに切り替えることができます。

%w[ /var/lib/temp /opt/chef/library ].each |dir| 
    # ... 
end 

2番目のフォームになりそれがあなたの意図なので、もっと意味があります。中間変数は必要ありません。

+0

あなたのお答えいただきありがとうございます。どのように私はそのコマンドでサブグループにユーザーグループを設定できますか? 'recursive true'は'/var/lib/temp'と '/ opt/chef/library'の下にあるサブフォルダのユーザグループを設定しません。 Linuxの 'chown -R user:group/var/lib/temp/* 'コマンドと等価なコマンドです。 – user3580316

+0

これは全く別の質問ですので、別のものとしてそれを分割するのが最適です。 – tadman

関連する問題