2017-03-28 5 views
0

シェフに上書きする前に既存のファイルをバックアップする指示がありますか?シェフでこれを行う方法

私はこのコードを持っています。

template "myfile" 
    source "myfile.erb" 
    <more properties> 
end 

myfileは既存の設定ファイルであり、テンプレートを使用するために上書きする必要があります。

ただし、テンプレートで上書きされる前に、既存のファイルをバックアップする必要があります。

私はこの

execute do 
    mv "myfile" "myfile.old" 
end 

template "myfile" 
    source "myfile.erb" 
    <more properties> 
end 

などのバックアップコマンドを行うことができます。しかし、代替がある場合、私は考えていました。

---------------- EDIT ----------------------- これはうまく見えますが、私は何かを得ていない。シェフの初心者はここにいる。 文書によれば、これを供給する必要がsays..I ..

バックアップFalseClassの、整数

template "myfile" 
    source "myfile.erb" 
    backup true, 1 
end 

しかし、私は...

ERRORこのエラーを取得しています:引数の数が間違っ(2の0..1)

申し訳ありませんが、私はシェフとルビーの構文に慣れていません。ちょうどシェフを迎えて、自分でそれを学びました。

+0

'backup'は引数として' FalseClass'か 'Integer'をとります。それで 'バックアップ1 'と呼んでください。これにより、/ var/chef/backupにファイルのバックアップが1つ保持されます。デフォルトは5です。 –

+0

ありがとうございます。私はドキュメンテーションと混同していました。コンマは私がそれをそのように供給しなければならないと思いました。 –

答えて

1

これはおそらくあなたを助けることができます。今、私は私を作成するつもりです

$ mkdir cookbooks 

:最初、私は私の料理本を保存するディレクトリ

:それは、ディレクトリの問題を回避+それがどのように動作するかをお見せするための明確な方法ですので、私は料理の本を使用します名前の料理は、作成、バックアップ

$ chef generate cookbook cookbooks/create-backup 

を私はまた、私はバックアップ

$ chef generate template cookbooks/create-backup myfile-tobackup.txt 
よファイルになります私の料理の内部にテンプレートを作成します。

これは私の料理の内部で何です:

tree cookbooks/create-backup/ 
$ cookbooks/create-backup/ 
|-- Berksfile 
|-- chefignore 
|-- metadata.rb 
|-- README.md 
|-- recipes 
| `-- default.rb 
|-- spec 
| |-- spec_helper.rb 
| `-- unit 
|  `-- recipes 
|   `-- default_spec.rb 
|-- templates 
| |-- default 
| `-- myfile-tobackup.txt.erb 
`-- test 
    `-- smoke 
     `-- default 
      `-- default_test.rb 

だけのレシピとテンプレートは、あなたのケースのために重要です。 私は今、私は(あなたが料理を実行する場合、このファイルが実行されます)レシピでdefault.rbを編集していますmyfile-tobackup.txt.erb

$ vi cookbooks/create-backup/templates/myfile-tobackup.txt.erb 
Content: 
this is version 1 

にいくつかの入力を入れます。

$ vi cookbooks/create-backup/recipes/default.rb 

とコンテンツ:

template '/tmp/backup' do 
    source 'myfile-tobackup.txt.erb' 
    backup 3 
end 

これは私がソースmyfile-tobackup.txtから/tmpで名前のバックアップでファイルを作成し、私は3つのバックアップの最大を作成することを意味します。

今、私は私の料理のレシピを実行することによって、私の料理を実行することができます。

$ chef-client --local-mode --runlist 'recipe[create-backup]' 

私がチェックされます:

$ cat /tmp/backup 
this is version 1 

を今、私は私のテンプレートmyfile-tobackup.txt.erbの内容を編集して設定することができますバージョン2に変更します。/tmp/backupには「これはバージョン2」が含まれますが、/tmp/backup/var/chef/backupにバックアップされています(3つのファイルが保存されます)。

+0

このような詳細な説明はありがとうございます! –

2

シェフがこれを自動的かつ内部的に処理します。デフォルトでは、すべてのテンプレートファイルのバージョンが5つあります。これはbackup propertyでカスタマイズできます。これらは通常/var/chef/backupsになります。

backupプロパティは、バックアップを無効にする場合はfalse、保持するバックアップの数を設定する場合は整数値をとります。あなたはそれを渡すことはできませんtrue

+0

これは有望そうだと思います。しかし、上記の私の問題を助けてくれますか?これは基本的なことだ私はちょうどシェフを拾ったので、うまくいけばあなたは私に忍耐強くなるでしょう。 –

+0

もう一度仲間に感謝します。私はコメントからそれを理解した。 –

関連する問題