include_vars o que realmente significa

0

Eu basicamente quero levar informações dinâmicas do meu host remoto, seja ele redhat ou debian, e, consequentemente, executar um arquivo específico que seria instalar pacotes http com base no sabor do sistema operacional.

[root@ansi1 ansible]# cat include.yml
---
 - hosts: all
   tasks:
   - name: Getting os info
     include_vars: "{{ ansible_os_family }}.yml"

   - include: setup-RedHat.yml
     when: ansible_os_family == 'RedHat'
[root@ansi1 ansible]#
[root@ansi1 ansible]#
[root@ansi1 ansible]#
[root@ansi1 ansible]# cat setup-RedHat.yml
---
 - hosts: all
   tasks:
   - name: htttp install
     yum: name=httpd state=present

ansible-playbook include.yml

Erro:

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/etc/ansible/setup-RedHat.yml': line 2, column 4, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
 - hosts: all
   ^ here


The error appears to have been in '/etc/ansible/setup-RedHat.yml': line 2, column 4, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
 - hosts: all
   ^ here
    
por Mohd 09.06.2017 / 06:57

2 respostas

2

Quando você usa o módulo include em uma seção tasks , não é possível incluir um manual, só é possível incluir uma lista de tarefas. Isso significa que seu arquivo setup-RedHat.yml deve conter apenas o seguinte:

- name: htttp install
  yum: name=httpd state=present

- name: more tasks...
    
por 18.07.2017 / 23:21
0
A diretiva

include_vars destina-se a obter variáveis Ansible para o playbook atual do arquivo fornecido como o valor. Nesse caso, as variáveis são (presumivelmente declaradas em e) herdadas do arquivo "{{ ansible_os_family }}.yml" .

ansible_os_family é um fato que o Ansible coleta automaticamente do sistema remoto, ele é resolvido para a distribuição pai (se houver) da distribuição no contexto ou em si, se não houver pai. Então, por exemplo, se você está rodando isto em um derivado Debian, o nome do arquivo a ser verificado se torna Debian.yml .

    
por 09.06.2017 / 07:08

Tags