Закину про ansible для разнообразия. Много вопросов эта штуковина создает. Но не так много, как говнявый puppet.



Самый распространенный вопрос, на который меня заебло отвечать (гуглить же и читать по английски никто не умеет) — А как с помощью ansible, я могу достучаться до серверов, которые не имеют статического IP адреса?



Кто не понял, объясняю на пальцах. Предположим у тебя есть трех комнатная квартира и один вход. Но коридора нет. То есть попасть в комнаты ты не можешь. Соответственно нужно каким-то хером срукожопить коридор.



Inventory файл выглядит таким образом:



[balancer]

jessy-h1 ansible_host=888.888.888.888 local_ip=192.168.0.2



[backend]

alba-ap1 ansible_host=192.168.0.3

roksy-ap2 ansible_host=192.168.0.4



То есть суть задачи, нам нужно войти через 888.888.888.888 и попасть на сервера с IPшниками 192.168.0.3 и 192.168.0.4. Хуйня война.



Добавляешь в Inventory файл это самое:



[backend:vars]



bastion_host = {{ hostvars[groups['balancer'][0]].ansible_host }}

ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -q root@{{ bastion_host }}"'



Закидываешь паблик ключи с jessy-h1 на alba-ap1 и roksy-ap2 ну и запускаешь всю эту тему. Тем самым ты создаешь коридор и спокойно перемещаешся по своей трех комнатной квартире.



Есть масса вариантов проделать то же самое, но это пока самый заебачий вариант. Ну либо на каждый сервер, присваивай статику, что вовсе глупо и избыточно.



А следующий вопрос обычно звучит так — блядь, а как мне тогда файлы на сервер перекинуть без статического IP. Да также епта:



rsync -v -e "ssh -A -t user@jessy-h1 ssh -A -t user@alba-ap1" /tmp/file.txt :/tmp/file.txt



Вот и закончили хуйней заниматься. Забирайте себе в избранное и больше ко мне не приходите с этой поеботой.