2014-12-15 17 views
0

패키지 버전에 databag을 사용하고 있습니다.요리사 서버에서 일괄 데이터를 제거 하시겠습니까?

databags/ 
    versions/ 
    0.1.1 
    0.1.2 
    0.1.3 
    0.2.1 
    0.2.2 
    ... 

버전이 더 이상 사용되지 않으면 이전 데이터 백 아이템을 제거하려고합니다. 예를 들어 정규식을 사용하여 데이터 백 항목을 대량 삭제할 수 있습니까? 같은 뭔가 :

knife data bag delete versions 0.1.* 

현재, 나는 서버를 조회하고 여러 칼 호출을 수반 결과, 반복해야합니다.

답변

0

나는 이것을 위해 repo 기반 데이터베이스를 사용할 것입니다.

knife data bag from file 'folder'을 수행하면이 폴더의 항목 (jsno 파일)으로 데이터베이스를 덮어 씁니다. Documentation here

그래서 파일 시스템의 각 항목에 대해서만 원하는 JSON과 깨끗한 폴더를 갖고 할 것 파일 시스템 도구를 사용하여 콘텐츠를 관리하고 단일 명령으로 끝날 것이다.

이미 파일 시스템에 당신의 databags가없는 경우 다음 databag 당 디렉토리와 knife data bag show BAG ITEM -F json > databag_folder/item.json (도움이 될 수 있습니다 칼 데이터 가방 쇼를 통해 반복) 각 항목을 만들 수

이미 어쩌면 거기를 만들 수 있습니다 이것에 대한 칼 플러그인의 종류,하지만 그것을 찾을 수 없습니다.

빠른 검색 후 편집 : http://docs.chef.io/chef/knife.html#id133이 명령은 databags 항목/요리 책을 삭제하는 패턴을 취할 수 있습니다. 이 같은

0

아마 뭔가 :

knife exec -E 'api.get("/data/versions").select{|v| v.start_with?('0.1')}.each{|v| api.delete("/data/versions/#{v}")'

+0

은 불행히도, 난 루비 구문은 실행 섹션에서 지원됩니다 생각하지 않습니다. –