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 

같은 백업 명령을 수행 할 수 있습니다 그러나 대안이 있다면 나는 생각했다.

---------------- 편집 ----------------------- 괜찮아 보이지만. 나는 뭔가를 얻지 못하고있다. 여기 미안 한 요리사 초보자. 문서에 따르면,이을 제공해야 says..I ..

백업 FalseClass, 정수

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

하지만 ..

오류이 오류를 얻고있다 : 인수의 잘못된 번호 (2에 대한 0..1)

죄송합니다, 저는 요리사 및 루비 구문이 생소합니다. 그냥 요리사를 데려 와서 혼자서 배웠습니다.

+0

'backup'은 인수로 'FalseClass' 또는'Integer' 중 하나를 취합니다. 그래서'backup 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 

그리고 내용 :이 나는 소스 myfile-tobackup.txt에서 /tmp에있는 이름의 백업을 가진 파일을 생성합니다 내가 3 백업의 최대를 만들 것을 의미합니다

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

.

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

제가 확인해 보겠습니다 :

지금은 내 요리 책의 레시피를 실행하여 내 요리 책을 실행할 수 있습니다

$ cat /tmp/backup 
this is version 1 

지금 내 템플릿 myfile-tobackup.txt.erb의 내용을 편집하고 설정할 수 있습니다 버전을 2로 변경합니다. /tmp/backup에 "this is version 2"가 포함되지만 이전 /tmp/backup/var/chef/backup (3 개의 파일이 보관 됨)에 백업됩니다.

+0

그런 상세한 설명을 주신 데 대해 감사드립니다! –

2

요리사가 자동 및 내부적으로 처리합니다. 기본적으로 우리는 모든 템플릿 파일의 버전을 유지합니다.이 파일은 backup property을 통해 사용자 정의 할 수 있습니다. 보통 /var/chef/backups 이하입니다.

backup 속성은 백업을 사용하지 않으려면 false이거나 유지할 백업 수를 설정하려면 정수 값을 사용합니다. 그것을 전달할 수 없습니다 true.

+0

나는 이것이 유망 해 보인다고 생각한다. 하지만 위의 내 문제로 나를 도울 수 있습니까? 나는 이것이 뭔가 기본적인 것을 알고있다. 나는 요리사를 데리러 왔기 때문에 나에게 인내심을 가지기를 바랍니다. –

+0

다시 친구에게 감사드립니다. 나는 그것을 코멘트에서 찾아 냈다. –