2017-01-06 9 views
2

これはシェフの料理本を書く初めての試みです。私は自動的にgitをインストールし、新しいディレクトリ(git_repo/)を作成し、そのディレクトリに変更し、gitリポジトリに初期化し、次にgitリポジトリに接続するレシピを作成しようとしています。ノード。私はgitをインストールしてディレクトリを作ったが、git_repoにディレクトリを変更するためのレシピの書き方は分からない。私が持っているコードはシェフのディレクトリを変更するレシピ

package 'git' do 
    action :install 
end 

directory '/home/git_repo' do 
    mode 0755 
    owner 'root' 
    group 'root' 
    action :create 
end 

execute 'change' do 
    command "sudo cd git_repo" 
end 

この特別なアクションの実行のほかに使用するより良いリソースタイプがありますか?もしそうなら、誰かがそれについて詳しく説明できますか?

+0

参考sudoを使う必要はありません。 'chef-client'がするすべてのことは、特に指定しない限り、スーパーユーザー権限で行われます。 – StephenKing

答えて

4

プロパティcwdとしてexecuteリソース:

cwd:コマンドが実行されるから、現在の作業ディレクトリ。 (可能性が非常に高い二シェフの実行に失敗するだろう。このよう

execute 'init' do 
    command "git init" 
    cwd "/home/git_repo" 
end 

のでgit initは以下となります。次の宣言を使用し、作業ディレクトリとしてgit_repo/ディレクトリ内からコマンドを実行するために

、あなたはcreatesプロパティを使用して、このリソースをguard必要があります)成功しない:

creates:ファイルが既に存在する場合、コマンドがファイルを作成できないようにします。一般的な注意点としては

execute 'init' do 
    command "git init" 
    cwd "/home/git_repo" 
    creates "/home/git_repo/.git" 
end 

あなたが本当に空のリポジトリを初期化したい場合は、私は、わかりません。リポジトリを複製するだけの場合は、gitリソースを使用してください。

+0

答えをありがとう!私はあなたが言ったことを考慮に入れます。 –

関連する問題