Привет, %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
, спускаешься под стол и обняв колени рыдаешь.
Впереди еще тонны извинений в адрес коллег, сетевиков, жены, собаки, кота. А так же повторение матчасти по базовым вещам.
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.