Я создал скрипт, который будет записывать имя хоста и 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-адрес.
Попробуйте создать 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
Возможно, вам следует попробовать отфильтровать собранные факты с помощью модуля настройки 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'