Configure todos os hosts e, em seguida, crie uma lista de configurações para todos os hosts?

1

Eu implantei um grande número de hosts com Ansible - o que funcionou muito bem. Cada host recebeu suas configurações e configurações individuais.

Agora eu gostaria de gerar um arquivo de configuração para outro sistema que usa esses hosts. Para isso, eu preciso de cada host uma parte da configuração gerada (aquela que configura o banco de dados).

Aqui está um exemplo da situação com dois hosts com configurações diferentes e o outro sistema que usa uma parte da configuração gerada pelo Ansible:

host1

dbA configurado ansible

host2

dbQ configurado ansible

O outro sistema:

host1 = dbA

host2 = dbQ

Os valores são calculados de forma diferente ( dbQ em vez de dbB para host2 , por exemplo) se pertencerem a um cluster diferente e assim por diante, tornando impraticável apenas ler a configuração do host de host_vars . Acredito que precisaria fazer uma iteração sobre os hosts e deixar o Ansible descobrir os valores calculados para as variáveis, como ocorreria durante a implantação, mas não sei como colocar esse resultado em um modelo.

Por favor, avise:)

    
por AME 17.07.2014 / 09:36

1 resposta

1

Se eu entendi sua situação corretamente, você pode fazer isso usando uma combinação de set_fact e / ou um modelo que, em seguida, percorre todos os hosts. Por exemplo, supondo que você tenha uma tarefa definida como esta:

- name : Configure database
  command: /path/to/some/script {{ inventory_hostname }} {{ some_var }} {{ some_other_var }}

Você pode usar set_fact para associar esses valores ao host em questão:

- name: Stash the variables for later use
  set_fact:
    var_1 : {{ some_var }}
    var_2 : {{ some_other_var }}
    host_and_var : "{{ inventory_hostname }}-{{ some_var}}"
    etc.

Então, quando chegar a hora de criar seu arquivo de configuração, você terá uma ação de modelo ou local_action que gera o arquivo de configuração. O modelo conteria algo ao longo destas linhas:

{% for host in groups['some_host_group']|sort %}
{% if hostvars[host]["var_1"] is defined %}
{{ host }} = {{ hostvars[host]["var_1"] }}
{% endif %}
{% endfor %}
    
por 18.08.2014 / 23:08