Definir variáveis para todos os hosts no inventário dinâmico Ansible

5

É possível definir variáveis de host para todos os hosts usando um inventário dinâmico?

Atualmente, posso produzir um inventário que me permite atribuir variáveis a hosts específicos, mas o que eu quero alcançar é algo assim:

{
    "_meta": {
        "hostvars": {
            "all": {
                "my_global_random_variable": "global_random_value"
            }
        }
    },
    "web_servers": {
        "children": [],
        "hosts": [
            "web_server1",
            "web_server2"
        ],
        "vars": {}
    },
    "database_servers": {
        "children": [],
        "hosts": [
            "database_server1"
        ],
        "vars": {}
    }
}

Qual deve me permitir acessar o "my_global_random_variable" de qualquer contexto como se eu tivesse definido essa variável em um arquivo vars.

    
por user3245821 29.09.2016 / 12:37

3 respostas

1

Acabei usando um plug-in de pesquisa em vez do inventário para recuperar minhas variáveis.

Mais informações sobre pesquisas: link

    
por 20.10.2016 / 11:29
1

Variáveis definidas por dynamic inventory são inventory variables . Quando uma variável é definida em vários locais, Ansible define o valor a seguir precedência variável :

  role defaults [1]
    inventory vars [2]
    inventory group_vars
    inventory host_vars
    playbook group_vars
    playbook host_vars
    host facts
    play vars
    play vars_prompt
    play vars_files
    registered vars
    set_facts
    role and include vars
    block vars (only for tasks in block)
    task vars (only for the task)
    extra vars (always win precedence)

Variáveis definidas no inventário têm uma baixa precendência relativa. Portanto, não há necessidade de usar dynamic inventory para conseguir isso. Basta definir a variável, por exemplo, no nível da função.

    
por 30.09.2016 / 19:39
0

Eu queria fazer isso e parece funcionar com o seguinte (adaptado para o seu exemplo):

{
    "all": {
        "vars": {
            "my_global_random_variable": "global_random_value"
        }
    },
    "web_servers": {
        "children": [],
        "hosts": [
            "web_server1",
            "web_server2"
        ],
        "vars": {}
    },
    "database_servers": {
        "children": [],
        "hosts": [
            "database_server1"
        ],
        "vars": {}
    }
}

Possivelmente não é uma prática recomendada, mas mantém as coisas simples.

    
por 16.01.2017 / 12:54

Tags