Alexander
Вряд ли в нём проблема
Alexander
chown failed Возможно я создаю папку не по тем, под кем запускается плейбук
Sergey
chown failed Возможно я создаю папку не по тем, под кем запускается плейбук
Если ты не root и не имеешь capabilities - ты не можешь рандомные uid/gid давать.
Sergey
become: true решает
Alexander
Если ты не root и не имеешь capabilities - ты не можешь рандомные uid/gid давать.
Рандомные, в смысле группы, отличные от тех, в которых есть пользователь, запускающий плейбук?
Sergey
Нет. Отличные от uid/gid вызывающего процесса.
Alexander
Нет. Отличные от uid/gid вызывающего процесса.
Вызывающий процес здесь mkdir, chown, chmod, которые во внутренностях модуля file ?
Sergey
Да. А они, в свою очередь, наследуют uid/gid процесса Ansible на целевом хосте (если нет каких-то директив на эту тему)
Alexander
Чуть понятнее стало, спасибо
Sergey
Чуть понятнее стало, спасибо
Чтобы всё работало - become: true
Alexander
Ну с этим понятно, хочется очень точно проблему найти
Alexander
Так как возможно не дадут использовать become
Sergey
Куда точнее-то? Не хватает полномочий целевому пользвателю. А отказываться от become означает отказаться от вот этих всех фишек, которые требуют прав рутовых.
Alexander
Куда точнее-то? Не хватает полномочий целевому пользвателю. А отказываться от become означает отказаться от вот этих всех фишек, которые требуют прав рутовых.
А если в плейбуке стоит become true, то во всех ролях, которые вызываются в плейбуке, он будет задействован или нет?
Sergey
Эм...... become: true ставится в конкретном плее, он не будет автоматически распространяться на все плеи плейбука.
Sergey
Скорее, где она вызывается: - hosts: <hostgroup> become: true roles: - role: "1" var1: "val1" - role: "2"
Alexander
О, это еще лучше, отлично, спасибо большое, буду пробовать
Alexander
umask?
umask такой, какой и должен быть
Alexander
become не нужен совсем и его не дадут
Alexander
То есть руками я могу сделать со своей учеткой все что нужно
Alexander
Плейбуком - происходит ошибка
Alexander
Могут ли быть косяки в самом ансибле? 2.8.2
Anton
Hosts file выглядит таким образом [master] 192.168.33.50 ansible_ssh_user=root ansible_ssh_pass=123 [node] 192.168.33.60 ansible_ssh_user=root ansible_ssh_pass=123 Могу ли я как то вытянуть IP master если сценарий выполняется в node ??
Anton
- debug: var=hostvars[inventory_hostname] Вот так удается получить, но не соображу дальше)
Anonymous
Ребят, запускаю ansible-playbook в docker контейнере. На localhost выполняет нормально, на remote host выдает ошибку argument must be an int, or have a fileno() method. сам ssh user@ip выполняет нормально. StrictHostKeyChecking no host_key_checking = False поставил. Никто не сталкивался?
Anton
как это ? я запускаю и мне удается вытянуть весь inventory_hostname
Anton
- debug: var=hostvars[inventory_hostname] возвращает текст. дальше чё то не соображу https://pastebin.com/xmVVyMsj
Anton
вот. там есть master которого ип вытащить нужно
Alexander
Да. Он вытягивается с той ноды, где в данный момент исполняется плейбук
Anton
вот только я не знаю как правильно этосделать
Alexander
Мастер - это хост, с которого идёт управление?
Alexander
Потому как по инвентори, я вижу, что нет
Alexander
Чтобы получить информацию о хосте (ipv4), нужно чтобы на том хосте запускался плейбук
Anton
Мастер - это хост, с которого идёт управление?
в данный момент плейбук запущен на ноде. а как он знает об ип мастера ?
Alexander
Ansible-playbook play.yml ты где запускаешь?
Anton
на хосте своем
Anton
запускаю его и он начинает устанавливать пакеты в NODE
Anton
и тут мне нужно что бы в NODE я смог получить ип MASTER который в моем hosts файле
Anton
дебагом он выводит его и не только его. ещё и Gitlab есть который в дауне уже давно
Alexander
Это только если передавать этот файл на NODE
Иван
Всем привет. Кто-нибудь управляет индексами, теплейтами эластка с помощью ansbile? Какие модули используете или не используете? Что б прям с идемпотентностью все норм было. Может какие-то лайфхаки?
George
я предложил вариант - сформировать vars, в них засунуть переменную типа master_ip и присвоить ее джинджей к айпи хоста
George
потом в плейбуке эту переменную вычитать
Anton
Дебаг тебе выводит информацию обо всех хостах
ну да. а можно ли вытянуть один, по имени. master который ???
George
не знаю насколько это ансиблёве или можно прямо в плейбуке сделать )
Anton
не знаю насколько это ансиблёве или можно прямо в плейбуке сделать )
ну мне ещё одну переменную делать... ну вариант, но у меня же есть айпи мастера в hosts, вот и интересуюсь как правильно и красиво вытащить.
Alexander
Разбить на роли если
Alexander
И в плейбуке написать что вот эту именно роль по получению адреса исполнять для мастера
Anton
да ну. городить роль что бы получить айпи... проще переменную объявить
George
поддержу
George
но с переменной это хотя бы.... типа .... красиво
Anton
ну да) просто почему я заморачиваюсь ) айпи то есть, зачем его ещё раз объявлять то... ну такое )))
George
потому что ОДИН УЗЕЛ ПРО ДРУГОЙ УЗЕЛ НИЧЕГО НЕ ЗНАЕТ
George
это тебе не паппет, который компилит манифесты, блин
Anton
да я понял. но вон я показал что дебаг с ноды знает об айпи мастера. он его просто с инвентори смотрит. вот мне его и вытянуть нужно красиво а не всю кашу
Anonymous
George
в контексте ансибла, который на хосте
Anton
в НОДЕ
Anton
я же говорил.... щас расспишу
Anton
192.168.33.60 айпи ноды 192.168.33.50 айпи мастера я запускаю плейбук.... он идет на 192.168.33.60 и делает там шум... и вот мне нужно получить айпи мастера который 192.168.33.50. я запускаю в ноде на айпи 192.168.33.60 - debug: var=hostvars[inventory_hostname] и получаю https://pastebin.com/xmVVyMsj О БОГИ я вижу там айпи мастера который мне нужно получить. Вопрос. КАК его вытянуть.
George
ща
George
ты пробовал lookup на groups['master'] сделать?
George
в плейбуке?
George
ну или типа - name: ... set_fact: v1: "{{ hostvars[inventory_hostname]['groups']['master'] }}" - name: ... debug: msg: "{{ v1 }}"
Anton
щас буду у компа и попробую. спасибо
George
у меня просто фантазии не хватает. В теории раз ты вывел - это простой json объект, следовательно, ты можешь оттуда вычленять любые элементы его
Alexander
Права он выставлял для того юзера, имя которого указано в параметрах
Alexander
И на это имя мне сказали, что оно должно быть статично
Alexander
Как оказалось, нет. Должно быть имя юзера, запускающего плейбук
Anton
ok: [192.168.33.60] => { "msg": [ "192.168.33.50" ] } как теперь правильно заюзать stdout что бы в переменной был только лишь ип ? это возможно ?
Alexander
grep ))
Anton
в переменной v1 находится [192.168.33.50] а мне нужен строго ип