Timur
Timur
Если сервер создается в рамках уже отработанных процессов, то что мешает сразу при создании туда все нужные креды прокидывать?
Александр
В чём может быть проблема? На Ubuntu 16.04 зависает запуск AnsiballZ_command.py ПРосто висит процесс и ничего больше не происходит.
Александр
/bin/sh -c /usr/bin/python /root/.ansible/tmp/ansible-tmp-1547658497.435721-186373201444879/AnsiballZ_command.py
Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Nikita Dwarf
Nikita Dwarf
Nikita Dwarf
Если ты знаешь где файл.. можешь в самом скрипте включить дебаггер, а можешь подключиться к процессу,но там слишком низкоуровневое
Александр
Nikita Dwarf
этот файл ?
Nikita Dwarf
если так, создай файл и включи дебаг режим для этого файла
Nikita Dwarf
Nikita Dwarf
Как узнал?
Александр
Как узнал?
В процессах посмотрел и запустил команду напрямую в консоли. Консоль вывалила бла-бла. Хотите продолжить? (Y/n)
Nikita Dwarf
Ыы
Александр
А отладчик плохо. Он не отслеживает форкнутые процессы.
Александр
Я весь пакет прошёл. Отладчик просто завис в ожидании на вызове функции main
MRY
Всем привет. Не могу заставить работать даный код:
tasks:
- name: Look to Dict
debug:
msg: "{{ hostvars.{{ item }}.ansible_all_ipv4_addresses }}"
loop: "{{ query('inventory_hostnames','etcd')}}"
MRY
Ругается что не может вытащить переменную из {{ item }} по отдельности работает нормально.
Александр
Ну так двойное экранирование же получилось
MRY
тоесть если я напишу рядом msg: "{{ item }}" то он дает стринг с именем хоста, или если я напишу msg: "{{ hostvars.hostname.ansible_all_ipv4_addresses }}" то он дает IP
MRY
через ("{{ item }}") ? попробовать ?
Timur
Во-первых, зачем так странно вызывать цикл по хостнеймам?
Александр
hostvars[item]
Timur
with_inventory_hostnsmes отлично работает и удобнее
Timur
Во-вторых:
Timur
hostvars[item]
Timur
В-третьих, факты с хостов точно собраны?
MRY
да
Timur
hostvars[item].ansible_all_ipv4_address
MRY
Код tasks:
- name: Look to Dict
debug:
msg: "{{ hostvars.[host01].ansible_all_ipv4_addresses }}"
выдает нужный IP
Код tasks:
debug:
msg: "{{ item }}"
loop: "{{ query('inventory_hostnames','etcd')}}"
выдает нужный хостнейм
логично совместить это простой вставкой {{item}} в msg: "{{ hostvars.[host01].ansible_all_ipv4_addresses }}" вместо имени хоста
Timur
item без скобок двойных нужно вставлять
Timur
Одни скобки в msg уже есть
Timur
Вторых не нужно
MRY
TASK [Look to Dict] ************************************************************************************************
fatal: [gs02anstest01a]: FAILED! => {"msg": "template error while templating string: expected name or number. String: {{ hostvars.[item].ansible_all_ipv4_addresses }}"}
Timur
Чуть попозже подробнее гляну
Sergey
Timur
Да, точно
Timur
С телефона трудно разглядеть
MRY
Все всем спасибо наконец я разобрался с этим и сделал именно так как хоте и в удобном мне виде: Все работает.
https://pastebin.com/veQdreF2
MRY
Denis 災 nobody
такс, занятная задача, нужно сначала логиниться на сервер под отдельным пользователем, потом для запуска задач там сделать sudo с паролем. Это rtfm what?
Denis 災 nobody
обычно решалось отдельным юзером с доступом по ключу, потом become: yes, но тут так низя
George
нахрена sudo с паролем?
Denis 災 nobody
для логина есть только 1 юзер, где низя nopasswd по "соображениям безопасности"
Denis 災 nobody
пароль в vault?
Sergey
Timur
Timur
Ну и vault конечно же
Bogdan (SirEdvin)
Volodymyr
было?
https://habr.com/ru/company/redhatrussia/blog/436318/
Timur
Переменная может быть вполне defined, но с пустым значением
Timur
Часто бывает, что такое значение получается в результате каких-то операций
Timur
Например, при поиске, если не найден нужный элемент/строка
Bogdan (SirEdvin)
для обоих случаев у вас есть none или false, разве нет? Зачем пустая строка?
Timur
Bogdan (SirEdvin)
Ну, можно использовать в качестве значения по умолчанию false, если ничего не найдено, по идее
Bogdan (SirEdvin)
Или еще каст два раза в бул может помочь
Bogdan (SirEdvin)
Плохой модуль(
ℭ𝔞𝔯𝔯𝔬𝔩
when: my_var | d(False) ?
ℭ𝔞𝔯𝔯𝔬𝔩
Или when: my_var | bool ?
ℭ𝔞𝔯𝔯𝔬𝔩
Не всегда предсказуемо же
ℭ𝔞𝔯𝔯𝔬𝔩
Как с loop работать, если переменная не определена?
ℭ𝔞𝔯𝔯𝔬𝔩
Втыкать if
ℭ𝔞𝔯𝔯𝔬𝔩
А если определена, но пустая - loop проскочит её
ℭ𝔞𝔯𝔯𝔬𝔩
В общем всё из-за loop
ℭ𝔞𝔯𝔯𝔬𝔩
ℭ𝔞𝔯𝔯𝔬𝔩
Timur
Проблема сейчас именно с проверкой непустой строки
Timur
Есть 4 возможных сценария проверки на непустую строку
Timur
when: not my_var
когда переменная my_var - пустая строка
Timur
when: not my_var
когда переменная my_var - не пустая строка
Timur
when: my_var
когда переменная my_var - пустая строка