Почему Ansible возвращает вывод ifconfig в другом формате?

Следующая специальная команда Ansible запускает ifconfig на хост-компьютере:

ansible all -i "192.168.3.5," -m shell -a "ifconfig" -u root

(обратите внимание, что MAC 00:aa:bb:cc:dd:11 в следующем выводе написан в нижнем регистре)

192.168.3.5 | CHANGED | rc=0 >>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.5  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::2ec:acff:fecd:e248  prefixlen 64  scopeid 0x20<link>
        ether 00:aa:bb:cc:dd:11  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xd0900000-d0920000 

Когда я запускаю ifconfig на хосте через SSH или локально, вывод форматируется по-другому (обратите внимание, что MAC 00:AA:BB:CC:DD:11 - все заглавные буквы)

eth0      Link encap:Ethernet  HWaddr 00:AA:BB:CC:DD:11
          inet addr:192.168.3.5  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::2ec:acff:fecd:e248/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1250659 errors:0 dropped:0 overruns:0 frame:0
          TX packets:572911 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1050302730 (1001.6 MiB)  TX bytes:88810961 (84.6 MiB)
          Interrupt:16 Memory:d0900000-d0920000

Какова основная причина? Есть ли способ для Ansible отображать вывод в формате SSH/local?

Окружающая среда

доступный 2.9.7

конфигурационный файл = Нет

версия питона = 3.7.4

Целевой хост 192.168.3.5: Alpine Linux 3.10


person Hyper Light    schedule 12.05.2020    source источник
comment
Ни в FreeBSD, ни в удаленных хостах Ubuntu я не могу воспроизвести проблему. MAC-адрес выглядит подозрительно.   -  person Vladimir Botka    schedule 12.05.2020
comment
Проверьте, какой псевдоним/двоичный файл вы используете в любом случае с помощью alias ifconfig и which ifconfig, как в специальном, так и в прямом соединении ssh. Может быть разница, которая могла бы объяснить то, что вы испытываете.   -  person Zeitounator    schedule 12.05.2020
comment
@VladimirBotka Я отредактировал MAC, поэтому он выглядит подозрительно. Но спасибо за попытку воспроизвести. Zeitounator, кажется, раскрыл основную проблему.   -  person Hyper Light    schedule 12.05.2020
comment
@Zeitounator Спасибо за предложение! В этом была проблема. Ansible использует /bin/ifconfig, а SSH и локально используют /sbin/ifconfig. Можно ли вообще использовать Ansible /sbin/ifconfig?   -  person Hyper Light    schedule 12.05.2020
comment
Укажите свой путь в ansible или используйте полный путь в своей команде.   -  person Zeitounator    schedule 12.05.2020


Ответы (1)


Проблема После запуска which ifconfig для определения пути каждой команды я обнаружил, что Ansible использует /bin/ifconfig, тогда как SSH использует /sbin/ifconfig

Решение Источник профиля для каждой команды Ansible с . /etc/profile . Например:

ansible all -i "192.168.3.5," -m shell -a ". /etc/profile && ifconfig" -u root

Дополнительные решения см. в этом связанном ответе: ссылка


Спасибо Zeitounator за подсказку

person Hyper Light    schedule 13.05.2020