Ansible: buscando nomes de host remotos

0

Eu fiz um script que colocará o nome do host e o endereço IP em um arquivo. Meu script está abaixo:

echo "*********************************************">>a.txt;

hostname>>a.txt; 

/sbin/ifconfig>>a.txt

Este script está funcionando bem localmente.

Existem 1000 servidores em nosso ambiente. Meu alvo é buscar o nome do host e o endereço IP de todos os servidores em um arquivo local (a.txt é um arquivo no qual estou executando um comando ansible). Por isso estou usando ansible.

Estou executando este comando:

$ ansible test -m script -a ankush.sh 

O comando está sendo executado, mas posso ver meu nome de host local e endereço IP do sistema local em "a.txt". Eu quero o nome do host do sistema remoto e o endereço IP remoto.

    
por Ankush kalra 19.11.2016 / 08:57

3 respostas

2

Com ansible você executa todos os seus scripts remotamente, então você terá a.txt em cada servidor.
Eu poderia sugerir as próximas opções:

  1. Altere seu script para imprimir os resultados, assim você obterá todas as saídas executando ansible e, depois disso, analisará essa saída.

  2. Use o módulo ansible fetch para buscar todos os a.txt após a execução de scripts, por exemplo: ansible test -m fetch -a "src=a.txt dest=out/"

  3. Use o módulo ansible setup para buscar nomes de host e endereços IP, por exemplo: ansible test -m setup -a 'filter=ansible_hostname' e mais detalhes em link

por 19.11.2016 / 09:49
0

Talvez você deva tentar filtrar os fatos ansiosos coletados usando o módulo de configuração ansible sem escrever nenhum script.

Tente o seguinte

ansible test -m setup -a 'filter=ansible_all_ipv*_addresses' > ip_addrs.txt
ansible test -m setup -a 'filter=ansible_hostname' > hostnames.txt

Isso é provavelmente o que você realmente quer, mas pode gerar um excesso de dados:

ansible test -m setup - 'gather_subset=network'
    
por 26.05.2017 / 12:01
0

Por favor, tente criar yaml arquivos como abaixo e execute o arquivo yaml

- hosts: <Mention the inventory name>
  tasks:
  - name: use script module to execute local script on remote
    script: /ankush.sh 
    register: scriptoutput
  - name: local copy
    local_action: copy content="{{ scriptoutput.stdout }}" dest=/home/ankush.txt

No script, mencione apenas os comandos, para que a saída dos comandos seja redirecionada para ankush.txt

    
por 07.07.2017 / 15:57

Tags