Afirmações e restrições

11

Estou construindo um modelo para criar um arquivo de configuração, e o serviço que consome esse arquivo impõe restrições aos comprimentos do identificador.

Se um identificador tiver mais de, digamos, 6 caracteres, o serviço passará pela aplicação da configuração, falhará e deixará o nó em um estado inconsistente.

Como posso executar uma asserção para acionar uma falha na transação de implantação, impedindo que o serviço dos nós de destino seja configurado incorretamente?

Minha circunstância em particular é o Salt, mas eu ficaria curioso para ver como outros sistemas resolvem o problema também.

Michael Mol
fonte
Bem, no chef, adicionarei uma regra de linting, rspec ou foodcritic, ou assegurarei que o identificador corresponda à receita. Nenhuma idéia de sal, eu não acho que há uma resposta gerenic como cada gerenciador de configuração tem a sua especificidade
Tensibai
Vou editar a resposta para ser um pouco menos específico.
Michael Mol
No momento, minha contemplação atual de uma solução Saltstack + Jinja seria uma macro que tenta ler de um arquivo que não pode existir. Outros renderizadores funcionariam de maneira diferente. Um renderizador Python, por exemplo, seria trivial; basta lançar uma exceção.
Michael Mol

Respostas:

7

No Ansible: você pode usar assertou failmodule.

- name: "Make sure web_sites is dictionary"
  fail: msg="web_sites should be dictionary"
  when: web_sites is not dict  


- name: "cluster_name should be shorter than 6 chars"
  assert: 
       that: cluster_name|len <= 6

No Puppet: há uma função de falha avaliada durante a fase de análise que causa falha de análise no servidor (consulte a pergunta no StackOverflow )

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
Věroš K.
fonte