No Chef, como eu acesso os atributos definidos no ambiente JSON dos arquivos de atributos do livro de receitas?

5

Eu tenho um sistema de chef em que temos vários ambientes e temos atributos definidos no ambiente JSON.

Estou tendo problemas para acessar esses arquivos e receitas de receitas do livro de receitas.

    
por paul bruno 26.01.2012 / 20:25

3 respostas

2

Como é o seu arquivo de ambiente? Você está definindo atributos padrão ou de substituição? Se você estiver definindo o padrão, observe que esse é um nível de prioridade bastante baixo na cadeia de atributos, portanto, pode ser substituído por uma receita ou uma função.

A precedência dos atributos é a seguinte, de baixa para alta:

  1. atributos padrão aplicados em um arquivo de atributos
  2. atributos padrão aplicados em um ambiente
  3. atributos padrão aplicados em uma função
  4. atributos padrão aplicados em um nó diretamente em uma receita
  5. normal ou definir atributos aplicados em um arquivo de atributos
  6. normal ou definir atributos aplicados em um nó diretamente em uma receita
  7. substituir atributos aplicados em um arquivo de atributos
  8. substituir atributos aplicados em uma função
  9. substituir atributos aplicados em um ambiente
  10. substituir atributos aplicados em um nó diretamente em uma receita

Acima de:

por 30.01.2012 / 03:47
1

Por fim, consegui usar o atributo do ambiente na receita do Chef. Vamos dizer que temos um ambiente como este:

{
  "name": "QA",
  "description": "QA environment",
  "cookbook_versions": {
  },
  "json_class": "Chef::Environment",
  "chef_type": "environment",
  "default_attributes": {
    "comp_rsyslog": {
      "filetag_env": "compqa"
    }
  },
  "override_attributes": {
  }
}

E precisamos usar o atributo filetag_env no arquivo de configuração do modelo do serviço para passar o atributo do ambiente.

A maneira como eu faço no arquivo conf erb é como:

$InputFileTag <%= node['comp_rsyslog']['filetag_env'] %>,<%= node['rsyslog']['filetag1'] %>

O <%= node['rsyslog']['filetag1'] %> é definido no arquivo do atributo da receita:

default['rsyslog']['filetag1'] = 'comp_service'

O resultado será um arquivo em /etc/rsyslog.d/comp_service.conf com um conteúdo como:

$InputFileTag compqa,comp_service.
    
por 05.11.2015 / 11:18
0

A ordem correta é agora, conforme do site de documentação do chef :

  1. Um atributo padrão localizado em um arquivo de atributos do livro de receitas
  2. Um atributo padrão localizado em uma receita
  3. Um atributo padrão localizado em um ambiente
  4. Um atributo padrão localizado na função
  5. Um atributo force_default localizado em um arquivo de atributos do livro de receitas
  6. Um atributo force_default localizado em uma receita
  7. Um atributo normal localizado em um arquivo de atributos do livro de receitas
  8. Um atributo normal localizado em uma receita
  9. Um atributo de substituição localizado em um arquivo de atributos do livro de receitas
  10. Um atributo de substituição localizado em uma receita
  11. Um atributo de substituição localizado em uma função
  12. Um atributo de substituição localizado em um ambiente
  13. Um atributo force_override localizado em um arquivo de atributo do livro de receitas
  14. Um atributo force_override localizado em uma receita
  15. Um atributo automático identificado por Ohai no início da execução chef-cliente
por 15.04.2015 / 10:54