Alexander
Кажется, оно https://stackoverflow.com/questions/50477012/how-to-use-a-dictionary-of-registered-ansible-variables-in-vars#targetText=Seems%20as%20if%20since%20%22%7B%7B,for%20what%20it%20actually%20is.
Отделение Bereke Bank
Можно подробнее?
Типа так dict_name: - { 'grafana_url': 'qwe', 'api_key': rty' } - { 'grafana_url': 'blah', 'api_key': 'blah' }
Отделение Bereke Bank
dict_name - это будет одна переменная ?
- name: Import via API uri: url: "{{ item.grafana_url }}/api/dashboards/db" method: POST headers: Accept: "application/json" Content-Type: "application/json" Authorization: "Bearer {{ item.api_key }}" status_code: 200 body_format: json body: "{{ lookup('file','dashboard.json') }}" with_items: "{{ dict_name }}"
Отделение Bereke Bank
Так понятнее?
Alexander
Так понятнее?
Да, спасибо большое
NS 🇷🇺
Коллеги, через delegate facts пытаюсь получить факты других хостов. и если сделать `- hosts: manage tasks: - name: Gather facts setup: delegate_to: "{{ item }}" delegate_facts: True with_items: "{{ groups['compute'] }}" - name: Show facts debug: msg: "{{ hostvars[item]['ansible_fibre_channel_wwn'] }}" with_items: "{{ groups['compute'] }}"` то все замечательно а вот если выполнить первый таск и скормить данные в jinja ~~~~ {% for host in openstack_hosts %} {% for wwn in hostvars[host].ansible_fibre_channel_wwn %} <Initiator Name="{{ wwn }}" ALUA="1" MULTIPATHTYPE="1" FAILOVERMODE="3" SPECIALMODETYPE="0" PATHTYPE="0"/> {% endfor %} {% endfor %} ~~~~
NS 🇷🇺
то получаю болт… Вопрос почему переменная в джинже не определена?
Alex
Запускаем ansible годное чтиво? Может кто посоветовать книгу не для навичков, где расжевываются азы из серии - как установить apache/php
Vitaly
Устарела уже но подходы актуальны
Alexander
Я сейчас читаю ansible up and running (на русском)
Anonymous
Привет. Помогите дурачку. Тыкаюсь уже час, не могу понять что не так. Есть машины master1, node1, node2. Ресолвяться, пингуются, ssh ключ прокинут туда, ssh коннект проходит без пароля, питон на них стоит 2.7.5, однако плейбуки не могут подключится, типа анричибл. Ткните дурачку куда копать.
Anonymous
Alexander
Написано же
Anonymous
Инвертори как составлен?
[masters] master1 [nodes] # masters should be schedulable to run web console pods master1 node1 node2 [etcd] master1
Alexander
Дефисы слитно
Anonymous
ansible-inventory - - list
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] } }
Alexander
Гы, вот и нету у тебя ничего
Alexander
Нет никакой информайции по подключению
Anonymous
поясни или ткни линком на доки
Alexander
поясни или ткни линком на доки
https://ansible-tips-and-tricks.readthedocs.io/en/latest/ansible/inventory/
Pavlo
https://ansible-tips-and-tricks.readthedocs.io/en/latest/ansible/inventory/
О, пасиб. Будет познавательно
Anonymous
https://ansible-tips-and-tricks.readthedocs.io/en/latest/ansible/inventory/
Я не понял от слова совсем как это связано с моей проблемой
Alexander
Я не понял от слова совсем как это связано с моей проблемой
Проблема в том, что у тебя ансибл не видит логины/ключи к втоим хостам
Anonymous
username =)
Причём тут юзер гейм если тут речь о анричибл?
NS 🇷🇺
ну вы можете дальше упарываться в свой анричибл
Anonymous
Ок, я попробую
NS 🇷🇺
пруф
NS 🇷🇺
замазано -u username
Alexander
Причём тут юзер гейм если тут речь о анричибл?
Дык читай то про причину unreachable
Anonymous
ладно, я дурачок
Anonymous
заработало, чего уж тут
Anonymous
просто по какой-то причине оно не съедало переменные из ансиблкфг. пришлось хардкодить в хостс [nodes] master1 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant node1 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant node2 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant
Alexander
ansible --version видит ansible.cfg ?
Anonymous
Показывает не туда, не видит нужный файл
Anonymous
Руками поправить можно же?
Anonymous
поправил, заработало
Ivan
а я тут недавно мучался с конструкцией {% if datastream_whitelist_access and datastream_whitelist_access is defined and ... — вылетала, если переменной нет оказалось, если поменять местами({% if datastream_whitelist_access is defined and datastream_whitelist_access ), то прокатывает. Это приколы оптимизатора или выполнение слева направо?
Alexander
Показывает не туда, не видит нужный файл
Советую для экспериментов держать его вместе с inventory и host_vars в одной директории
NS 🇷🇺
Всем утра. А кто как решает вопрос получения живых хостов из инвентори и работы исключительнро с ними, пропуская те, что недоступны по разного рода причинам
NS 🇷🇺
через shell: ping как то не очень здорово =(
Алексей
Подскажите, пожалуйста, как быть. Разбрасываю на хосты паблик ключи для ssh. Потом локально для успешно добавленных ключей с помощью blockinfile или lineinfile добавляю записи о приватном в. ssh/config. Но такой нюанс, кто последний закрыл файл информация того и сохранилась. Как быть? Как обойти этот нюанс? Сейчас складываю в файлы с постфиксом(config.{ip}) в надежде в будущем поправить.
Vladislav 👻
Так оно само же
Timur
ignore_unreachable: true
NS 🇷🇺
ignore_unreachable: true
спасибо. А это можно как то в jinja использовать?
Timur
NS 🇷🇺
В каком смысле?
ну я собрал в список хосты которые у меня соответствуют условию (по ним плейбук не запускается), дальше я собираю по нему факты, пропуская офлан хосты с ignore_unreachable: true а потом в шаблонизаторе ипользую if host in host_list и т.к в хост лист у меня есть оф хосты, то переменная будет не определена и я получу ошибку
NS 🇷🇺
я не исключая, что я туплю =)
Timur
Еще есть служебные переменные вроде ansible_play_batch
Timur
Куда включаются только активные хосты плея
Timur
Можно просто луп по ansible_play_batch использовать тоже
NS 🇷🇺
Можно просто луп по ansible_play_batch использовать тоже
он не совсем подходит. потому что List of active hosts in the current play а хосты не участвуют в плейбуке с них только собираются факты в таске через delegate
Timur
Что за странная магия?
NS 🇷🇺
Что за странная магия?
на нодах управления (manage) по которым у меня идет плейбук я собираю WWN от HBA адаптеров с группы хостов openstack_hosts через делегирование затем на manage генерится конфиг, в котором указаны все собранные WWN
Timur
Не проще нормально по хостам в плее факты собрать и через delegate на manage уже конфиг генерить?
NS 🇷🇺
да одинаковые телодвижения практически
Timur
delegate имеет смысл делать как раз для тасков на единичных хостах
Timur
А для тасков на группах обычное параллельное исполнение эффективнее
NS 🇷🇺
по этому я и выбрал свой вариант. Тк для этой задачи на тех хостах ничего больше не исполняется
Timur
по этому я и выбрал свой вариант. Тк для этой задачи на тех хостах ничего больше не исполняется
И в итоге вместо нормального использования переменной ansible_play_batch вам придется придумывать костыли
Timur
Попробуйте сделать как я предложил. Должно получиться значительно проще по-моему
Andrey Pavlov
Добрый день! Подскажите пожалуйста, пытаюсь подружить ansible с mikrotik. Соединение по ssh сертификату. Выполняю play book с командой raw, выполняется только первая задача и стопорится, дальше не идёт. В чём может быть дело?