Ansible : fetching remote hostnames

Я создал скрипт, который будет записывать имя хоста и ip-адрес в файл. Мой скрипт приведен ниже:

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

hostname>>a.txt; 

/sbin/ifconfig>>a.txt

Этот скрипт отлично работает локально.

В нашей среде 1000 серверов. Моя цель - получить имя хоста и ip-адрес всех серверов в локальном файле (a.txt - файл, в котором я выполняю команду ansible). Для этого я использую ansible.

Я запускаю эту команду:

$ ansible test -m script -a ankush.sh 

Команда выполняется, но я вижу имя локального хоста и ip-адрес локальной системы в "a.txt". Мне нужно имя хоста удаленной системы и удаленный ip-адрес.

0
17.11.2018, 03:12
2 ответа

Попробуйте создать yamlфайлы, как показано ниже, и запустите файл 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

В скрипте упоминайте только команды, чтобы вывод команд перенаправлялся наankush.txt

0
28.01.2020, 02:34

Возможно, вам следует попробовать отфильтровать собранные факты с помощью модуля настройки ansible без написания каких-либо скриптов.

Попробуйте следующее

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

Вероятно, это именно то, что вам действительно нужно, но может быть выведено слишком много данных:

ansible test -m setup - 'gather_subset=network'
0
28.01.2020, 02:34

Теги

Похожие вопросы