Владислав
оно может быть вообще без кавычек, это же yaml
Нет, переменную с дефисом нельзя определять
Andor
Нет, переменную с дефисом нельзя определять
это ж не переменаня, а ключ в переменной, которая называется json?
Andor
про правила именования переменных в ансибле знаю пока плохо, но в данном случае это хеш (дикт, объект, etc), и это лишь ключ в нём
Andor
Точно. Работает без кавычек
ну там очевидно нельзя будет обратиться к значению через {{ json.insecure-registries }}, придётся в дикт-стиле делать {{ json['insecure-registries'] }}
Andor
но в данном случае это пофиг
Алексей
tasks: - name: Configure docker vars: KX_REGISTRY_LOCAL: "192.168.99.1:5000" json: 'insecure-registries': - "{{ KX_REGISTRY_LOCAL }}" blockinfile: path: /tmp/docker/daemon.json create: yes block: "{{ json | to_nice_json }}"
так заработало. спасибо! Я так понимаю, что 'insecure-registries': - "{{ KX_REGISTRY_LOCAL }}" преобразовывается к to_nice_json но откуда берутся скобочки в файле?
Andor
Из json
Алексей
Хм... теперь начинаю понимать. Результирующий файл-то и есть в json...
Никита
При выполнении - name: "Set timezone" postgresql_set: name: timezone value: "Europe/Moscow" получаю ошибку An exception occurred during task execution. To see the full traceback, use -vvv. The error was: IndexError: list index out of range fatal: [127.0.0.1]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1560514773.33-197884988713623/AnsiballZ_postgresql_set.py\", line 114, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1560514773.33-197884988713623/AnsiballZ_postgresql_set.py\", line 106, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1560514773.33-197884988713623/AnsiballZ_postgresql_set.py\", line 49, in invoke_module\n imp.load_module('__main__', mod, module, MOD_DESC)\n File \"/tmp/ansible_postgresql_set_payload_mhBnec/__main__.py\", line 488, in <module>\n File \"/tmp/ansible_postgresql_set_payload_mhBnec/__main__.py\", line 392, in main\n File \"/tmp/ansible_postgresql_set_payload_mhBnec/__main__.py\", line 195, in param_get\nIndexError: list index out of range\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
Никита
это бага или фича?
Никита
log_timezone задается корректно
Timur
Похоже на несовместимость каких-то питоновских пакетов
Timur
Какая система, какой ансибл, какой питон?
Руслан
что то не срабатывает такое в hosts. Как это правильно сделать?
Sergey
не надо так
Sergey
нужно или в YaML, или в ini
Sergey
у тебя два формата смешано
Руслан
большой список серверов на каждой площадке. Площадок много
Руслан
у тебя два формата смешано
как по феньшую делается?
Sergey
большой список серверов на каждой площадке. Площадок много
Ну и что теперь, не перечислять списки? Копипаста, либо dynamic inventory
Руслан
То есть вот так, через переменную, нельзя в хостах
Sergey
Вон так, как написано - нет.
Antuan
Кто умеет дружить ansible с RouterOS?
George
Но тогда два шага будет: подготовка инвентори, затем вызов ансибля
Timur
Можно прямо в плее инвентарь сформировать если очень хочется
Timur
Через add_host, например
Denis
Привет. Кто-нибудь сталкивался с модулем wait_for? Проверяю запуск локального сервиса по IP и порту, пишет, что недоступен. Через curl с тем же IP и портом сервис виден и все отдает.
Max
тестировал с той же машины, которая запускала wait_for?
nett00n
Привет. Кто-нибудь сталкивался с модулем wait_for? Проверяю запуск локального сервиса по IP и порту, пишет, что недоступен. Через curl с тем же IP и портом сервис виден и все отдает.
wait_for без delegate_to исполняется на том хосте, на котором исполняется весь остальной плейбук. Ты точно проверял с удалённого хоста доступность, а не со своего?
Sergey
Подкиньте доку плиз по автоматизации дешифровки файлов ролей при работе с пайплайнами Допустим у меня есть важные данные в файлах переменных. Я их шифрую перед отправкой в репу, а как работать с дешифровкой на время запуска?
Denis
Даже подставил в curl те же переменные, которые уходят в wait_for
George
А в ролях самих ничо секретного быть не должно
Sergey
А в ролях самих ничо секретного быть не должно
ну пароль условный для Mysql_exporter под аккаунт в скуле
Max
ну пароль условный для Mysql_exporter под аккаунт в скуле
он должен приодить с переменной в роль.
George
ну пароль условный для Mysql_exporter под аккаунт в скуле
Ну, в ролях - пускай будет, ты же через global_vars в плейбуке все равно переопределишь его
Sergey
он должен приодить с переменной в роль.
так я о файле переменных и говорю
George
George
Ну, так это не пароль в роли
Max
извне.
Max
не в файле переменных или defaults в роли.
George
Ты переменную хоть через экстра Варс можешь передать в плей
Max
Ты переменную хоть через экстра Варс можешь передать в плей
лучше (имхо) конфиденциальные данные держать в отдельном месте, лучше вне гита вообще (напр. в hashicorp vault)
Sergey
Ты переменную хоть через экстра Варс можешь передать в плей
через -e "" если передавать это передавать воткрытую получается, потому что эта переменная будет засвечена в CI
Max
и чтобы роль фэйлилась без передачи этих переменных.
Sergey
gitlab
George
От ci зависит
Артём
лучше (имхо) конфиденциальные данные держать в отдельном месте, лучше вне гита вообще (напр. в hashicorp vault)
Чем? У меня сейчас половина в хаши, половина в ансибл волте. В плане удобства добавления-редактирования локальный сильно приятнее.
George
А ты через environment variables передавай
Max
gitlab
там же есть конфиденциальные переменные.
George
Коллеги условно передавали имя переменной, а в роли вытаскивали через условный envsubst или как там этот лукап делается
Max
которые не светятся.
Sergey
А ты через environment variables передавай
но чтобы доставить эту енву на хост ее придется в роли все равно где то записать, и опять та же ситуация, или я путаю?
George
Либо формируй список переменных в ci процессе
George
Путаешь
Max
а еще можно тянуть значения из vault on-the-fly
Max
тогда открытая инфа живет только в процессе пайплайна. не на диске или дб гитлабы.
Max
т.е. во время пайплайна идет обращение в vault.
Sergey
В итоге получается 1. через передачу пути vault-pass файла в конфиге ансибла 2. Переменные окружения 3. Переменные внутри CI 4. Hashicorp-Vault Надо попробовать все Спасибо
Andor
2 и 3 одно и то же
Andor
И даже 1 тоже через переменные окружения