Привет, %username%! Бывают в работе такие момент, что ни в сказке сказать, ни пером описать.

Есть вот такой hosts.ini:

[fronts]
192.168.5.208 ansible_port=44441 comment="Nginx"

[apps]
192.168.5.208 ansible_port=44442 comment="App01"
192.168.5.208 ansible_port=44443 comment="App02"
192.168.5.208 ansible_port=44444 comment="App03"

[logs]
192.168.5.208 ansible_port=44445 comment="Log01"
192.168.5.208 ansible_port=44446 comment="Log02"
192.168.5.208 ansible_port=44447 comment="Log03"

[dbs]
192.168.5.208 ansible_port=44448 comment="DB01"
192.168.5.208 ansible_port=44449 comment="DB02"

[all:children]
fronts
logs
dbs

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_user=jtprog

Рядышком у тебя лежит ansible.cfg. Ты стандартно делаешь что-то вроде:

ansible all -i hosts.ini -m ping

И в ответ видишь что все хосты доступны. Это ли не прекрасно! Дальше ты решаешься на отважный поступок и быстренько перед запуском всего добра проверить хочешь – везде ли соответствуют твоим правилами именования хостов. Логично предположить что проверять ты это будешь не руками, а чем-то вроде такого:

ansible all -i hosts -a 'hostname'

И всё “зелёненькое”, но что-то начинает дергаться глаз. У тебя все хосты ответили одним общим именем. Т.е. ты 9 раз сходил на один и тот же хост. И собирался 9 раз выполнять разные вещи которые на одном хосте в принципе не должны находиться.

Тратишь некоторое количество времени на поиски, но все тщетно. Срешься с сетивиками, коллегами, женой, собакой, котом. После очередного ДА НУ НАХ%%! ты решаешь пойти от наипростейшего и наитупейшего: проверить не других, а себя и свои конфиги.

Первый на очереди ansible.cfg. Перепроверил – все на своих местах, все оптимайзеры выкручены на максимум, плейбуки должны летать. Где-то на подкорке шипят три буквы (не те о которых ты подумал) SSH. Ну вот что с ним может быть не так? Проверил РУКАМИ на каждом из 9 хостов и всё ништяк! Проверил у себя (на MacBook) и то же все ништяк. Но рядом с этими буквами появляется надпись ДОЛБ%%Б! и ты “на всякий случай” лезешь проверить свой личный конфиг в ~/.ssh/config. Ты его уже 100500 раз видел, но глаз цепляется за строчку:

ControlPath     ~/.ssh/tmp/%C

Ты как бы настроил тыщу лет назад и не думал вообще о том, что что-то может пойти не так. А через несколько секунд вспоминаешь, что видел что-то похожее, но другое в ansible.cfg. И точно:

control_path_dir = /tmp/.ansible/cp
control_path = %(directory)s/%%h-%%r

Холодный пот стекает ботинки, а от фейспалма и осознания пиз%%%а ломается рука в четырех местах. Выпиливаешь строки из ansible.cfg, спускаешься под стол и обняв колени рыдаешь.

Впереди еще тонны извинений в адрес коллег, сетевиков, жены, собаки, кота. А так же повторение матчасти по базовым вещам.


Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.