Carregue tudo com Faca

5

Digamos que você tenha um repositório padrão do Chef com diretórios da seguinte forma:

cookbooks
data_bags
environments
roles

Existe uma maneira de fazer upload de tudo de uma vez? Caso contrário, você precisa fazer isso:

knife cookbook upload -a
knife data bag from file data_bags/*.json
knife environment from file environments/*.rb
knife role from file roles/*.json

Talvez existam ferramentas de terceiros para fazer esse tipo de coisa?

    
por Steve Bennett 05.09.2012 / 09:43

5 respostas

4

Verifique se você está usando o ruby 1.9 e, em seguida, instale o essencial da faca

$ gem install knife-essentials

Em seguida, adicione o seguinte a ~ / .chef / knife.rb

repo_mode 'everything'
versioned_cookbooks true
chef_repo_path 'PATH/TO/chef-repo'

Depois, você pode fazer o download / upload de todo o seu servidor, ou apenas partes dele. O download colocará muitos arquivos .json no seu chef-repo, bom para backups que encontrei.

$ knife download /
$ knife upload /
$ knife upload /clients

Observe também que, se você tiver funções armazenadas como arquivos ruby (por exemplo: roles/*.rb ), precisará convertê-las para json. Então você pode baixá-los novamente do servidor do chef como json. Por exemplo:

  1. knife role from file roles/*.rb
  2. knife download roles/

Este método também é usado para atualizar do servidor do chef 10 para o 11 .

    
por 06.05.2013 / 16:17
5

Você pode escrever um script simples para fazer isso:

#!/bin/sh

for file in 'ls cookbooks';do
 [ -d $file ] && knife cookbook upload cookbooks/$file
done
for file in 'ls data_bags | grep \.json$';do
 knife data bag from file data_bags/$file
done
for file in 'ls environments | grep \.rb$';do
 knife environment from file environments/$file
done
for file in 'ls roles | grep \.json$';do
 knife role from file roles/$file
done

depois, chame-o usando ./script.sh, isso fará tudo automaticamente.

    
por 05.09.2012 / 16:51
2

Eu escrevi um pequeno plugin chamado sync-all descrito abaixo que também faz isso: link

    
por 01.02.2013 / 18:56
1

Atualmente, os documentos dizem que você deve simplesmente knife upload / . Existem outras possibilidades nos documentos.

    
por 23.01.2015 / 20:01
1

Do repositório do chef.

Se você executar knife upload . , ele enviará tudo.

    
por 20.03.2017 / 10:40

Tags