Lamobot
В доке, скорее всего, имеeтся ввиду разница между фактами о хосте, которые получаются через gather_facts и registered переменными. А не разница между set_fact и registered
Lamobot
Ну кроме отдельного случая - у set_fact есть параметр cacheable
Grek 🇺🇦
тогда совсем неоднозначно выходит
Lamobot
Что именно? Простой set_fact как и register: var будет доступен только в плейбуке, в котором его запустили.
Lamobot
Однако если set_fact с опцией cacheable: yes - этот факт уедет в факты хоста, и его можно будет использовать в других плейбуках
Lamobot
Вернее даже не в факты хоста, а в кеш фактов :)
Отделение Bereke Bank
буду_проституткой.jpg
Tadeusz
буду_проституткой.jpg
главное работу не проспать
Sergey
Одно и то же ведь Registered variables are only valid on the host for the rest of the current playbook run These variables will be available to subsequent plays during an ansible-playbook run
Variable values associated directly with a host or group, including variables defined in inventory, by vars plugins, or using modules like set_fact and include_vars, are available to all plays. These ‘host scope’ variables are also available via the hostvars[] dictionary. https://docs.ansible.com/ansible/latest/reference_appendices/general_precedence.html#variable-scope-how-long-is-a-value-available
Sergey
set_fact - глобально, можно обратиться через host_vars. register - так, баловство до конца плейбука, никаких тебе host_vars.
Lamobot
Самый лучший способ заснуть - читать доку перед сном :)))
Отделение Bereke Bank
set_fact - глобально, можно обратиться через host_vars. register - так, баловство до конца плейбука, никаких тебе host_vars.
Ну не. Я к результатам slurp register через хостварс обращался. Правда года полтора назад Завтра проверю
Lamobot
set_fact - глобально, можно обратиться через host_vars. register - так, баловство до конца плейбука, никаких тебе host_vars.
Осмелюсь заметить, что тесты показывают обратное... :) --- - hosts: localhost tasks: - debug: msg: "Test msg" register: var1 - hosts: localhost tasks: - debug: msg: '{{ hostvars["localhost"]["var1"] }}'
Lamobot
Работает
Anton
https://docs.ansible.com/ansible/latest/ лежит?
Lamobot
Да
Исправляют доку :)
Росен
Привет :>
Nikita
ребят а как из плейбука сходить на дгой хост по ssh и выпронить там команду ?
по апи системы виртулизации создаю исо домен и тд в конце мне надо сходить на хост который host: "{{ node_name }}" и там примонтирвать шару , надо ипользовать delegare_to но как через него сходить на хост используя пароль и что то выполнить? vars_files: - ovirt-engine-vars.yml pre_tasks: - name: Log in ovirt_auth: url: "{{ engine_url }}" username: "{{ username }}" password: "{{ password }}" # ca_file: "{{ engine_cafile }}" tags: - always tasks: - name: ensure Datacenter "{{ datacenter }}" is existing ovirt_datacenter: auth: "{{ ovirt_auth }}" name: "{{ datacenter }}" comment: "auto add" compatibility_version: 4.2 quota_mode: disabled local: True - name: Ensure Cluster "{{ cluster }}" is existing ovirt_cluster: auth: "{{ ovirt_auth }}" name: "{{ cluster }}" data_center: "{{ datacenter }}" description: "bw cluster" cpu_type: Intel Broadwell Family description: bwcluster compatibility_version: 4.2 external_network_providers: - name: ovirt-provider-ovn - name: ensure host node is joined ovirt_host: auth: "{{ ovirt_auth }}" cluster: "{{ cluster }}" name: "{{ node_name }}" address: "{{ node_ip }}" password: "{{ node_pass }}" - name: Create VM datastore ovirt_storage_domain: auth: "{{ ovirt_auth }}" name: "{{ domain_name }}" host: "{{ node_name }}" data_center: "{{ datacenter }}" localfs: path: /data - name: Create ISO NFS storage domain ovirt_storage_domain: auth: "{{ ovirt_auth }}" name: "{{ iso_domain_name }}" host: "{{ node_name }}" domain_function: iso data_center: "{{ datacenter }}" localfs: path: /iso
Grek 🇺🇦
после создания ВМ есть возмодность получить ее ip? потом делаете add_host и следующим плеем по добавленному хосту уже делаете все что вам там нужно
Grek 🇺🇦
по апи системы виртулизации создаю исо домен и тд в конце мне надо сходить на хост который host: "{{ node_name }}" и там примонтирвать шару , надо ипользовать delegare_to но как через него сходить на хост используя пароль и что то выполнить? vars_files: - ovirt-engine-vars.yml pre_tasks: - name: Log in ovirt_auth: url: "{{ engine_url }}" username: "{{ username }}" password: "{{ password }}" # ca_file: "{{ engine_cafile }}" tags: - always tasks: - name: ensure Datacenter "{{ datacenter }}" is existing ovirt_datacenter: auth: "{{ ovirt_auth }}" name: "{{ datacenter }}" comment: "auto add" compatibility_version: 4.2 quota_mode: disabled local: True - name: Ensure Cluster "{{ cluster }}" is existing ovirt_cluster: auth: "{{ ovirt_auth }}" name: "{{ cluster }}" data_center: "{{ datacenter }}" description: "bw cluster" cpu_type: Intel Broadwell Family description: bwcluster compatibility_version: 4.2 external_network_providers: - name: ovirt-provider-ovn - name: ensure host node is joined ovirt_host: auth: "{{ ovirt_auth }}" cluster: "{{ cluster }}" name: "{{ node_name }}" address: "{{ node_ip }}" password: "{{ node_pass }}" - name: Create VM datastore ovirt_storage_domain: auth: "{{ ovirt_auth }}" name: "{{ domain_name }}" host: "{{ node_name }}" data_center: "{{ datacenter }}" localfs: path: /data - name: Create ISO NFS storage domain ovirt_storage_domain: auth: "{{ ovirt_auth }}" name: "{{ iso_domain_name }}" host: "{{ node_name }}" domain_function: iso data_center: "{{ datacenter }}" localfs: path: /iso
или вам надо на гипервизоре это сделать?
Nikita
или вам надо на гипервизоре это сделать?
на гипервизоре , тут только добавление и исталяции одной ноды в кластер , дальше просто надо на эту ноду сходить и примонтировать папку
Grek 🇺🇦
ну, по ссш сходить и примонтировать?
Max
Скажите, а можно ли для запуска плейбука указать лимит, в котором используется range. Т.е. есть hosts файл, в котором одна группа и в ней куча серверов ser-1, ser-2… Можно ли как-то вызвать плейбук с примерно таким синтаксисом: ansible-playbook playbook.yml —limit ser-[7:17] ?
Nikita
ну, по ссш сходить и примонтировать?
да , а как это сделать через ансибл ?
Grek 🇺🇦
так же как и для обычных linux хостов?
Svyatoslav
Ребят, подскажите, как синхронизировать файлы с удаленного хоста на мастер хост? В документации найти не могу. Ансибл 2.3.0
Grek 🇺🇦
Ребят, подскажите, как синхронизировать файлы с удаленного хоста на мастер хост? В документации найти не могу. Ансибл 2.3.0
- name: Synchronization of src on the inventory host to the dest on the localhost in pull mode synchronize: mode: pull src: some/relative/path dest: /some/absolute/path оно?
Svyatoslav
Есть каталог с 100500 csv файлами, мне их надо качнуть. По одному копировать через модуль fetch долго. Я думал проще через синхронизацию каталогов, к примеру модулем synchronize
Svyatoslav
@PavelGassan @firemdkfighter спасибо, это я невнимательный!
Василий
Всем привет, кто кастомные модули на python писал, подскажите пожалуйста как в целях дебага выводить данные во время выполнения таски. Например по старой доброй традиции в лоб дебаг средством print(), а как ансибл заставить выводить то что мне нужно. Простой print() в скрипте игнорируется, пробовал print(json.dump({'msg': 'test'})) вываливается с ошибкой.
Василий
Никак. exit_json / fail_json - вот и всё, что тебе доступно.
надеялся на чудо)) Пытаюсь задебажить модуль, отдельно скрипт отрабатывает как нужно, а при подключении в модуль одна функция работает не правильно.
Pavel
Василий Курамшин, [23.09.20 13:43] [In reply to Sergey Pechenkó] надеялся на чудо)) Пытаюсь задебажить модуль, отдельно скрипт отрабатывает как нужно, а при подключении в модуль одна функция работает не правильно. А разве библиотека для логирования не работает? (logging)
Pavel
да
Василий
Забыл что-то про это, спасибо
Iwan
Всем привет, подскажите пожалуйста или тыкните ссылкой по Ansible 2.10 У меня используется модуль - docker_container_module А как теперь правильно использовать его в 2.10.1? (последний релиз).
Iwan
Iwan
А может-быть у кого-то есть пример роли с использованием коллекции?... Или может тут есть скидывали уже какой-то пример роли с использованием Коллекции?
Aleksandr
Привет. Подскажите пожалуйста как из словаря извлечь одновременно несколько значений? или точнее у меня есть pipe, на выходе словарь. я хотел бы склеить в нужном порядке элементы словаря в строку через пробел.
Aleksandr
а потом?
Nikita
так же как и для обычных linux хостов?
тогад зачем ансибл? если делать то уже модулем ансибла
Grek 🇺🇦
тогад зачем ансибл? если делать то уже модулем ансибла
ты не понял, так же как и на обычном линукс хосте. или ты не знаешь каким модулем делать монтирование?
Nikita
но мне туда надо авторизоваться например , не использовтаь же шелл модуль чтобы команду передать
Grek 🇺🇦
а потом?
что-то типа | join (' ')
Grek 🇺🇦
но мне туда надо авторизоваться например , не использовтаь же шелл модуль чтобы команду передать
что-то я не понял... host: "{{ node_name }}" - это линукс? туда можно зайти по ссш?
Nikita
да, это ip
Nikita
node_ip: 8.8.8.8 node_pass: sjdhbasjbd
Nikita
получается надо туда авторизоваться и получить uptime
Grek 🇺🇦
ну, добавь через add_host его в инвентарь и потом сделай новый плей указав в hosts этот хост
Aleksandr
что-то типа | join (' ')
Дано(для простоты оставлены только нужные для селекта ключи): user_list: - name: core ssh_keys: - name: main type: "ecdsa-sha2-nistp256" value: "AAAA..." Нужно получить: pubkey: "ecdsa-sha2-nistp256 AAAA....." Как это сделал я: pubkey: "{% set core_main_ssh_params = user_list | selectattr('name', 'equalto', 'core') | sum(attribute='ssh_keys', start=[]) | selectattr('name', 'equalto', 'main') | list | first -%} {{ core_main_ssh_params.type }} {{ core_main_ssh_params.value }}" Как это сделать правильно?....
Aleksandr
а @tnt4brain в отпуске чтоли?) обычно первый человек на критику)
Aleksandr
проблема в том что я думаю что это коряво. и хотел бы узнать у сообщества есть ли способ проще
Lamobot
Вы хотите сразу один фильтр что ли? user_list | make_me_what_i_want_now :)
Aleksandr
в идеале)))) но писать целый питон фильтр для такой задачи наверное перебор)
Aleksandr
user_list | zdelat_zaebis
Aleksandr
нет, мне нужно выцепить конкретный ключ конкретного юзверя
Lamobot
Просто здесь проблема в том, что вытащить два ключа словаря за один проход не получится. Ну или какими-то ещё более экзотическими способами типа to_json и фильтрами для джсона :))
Lamobot
Так что ваш способ норм
Aleksandr
Aleksandr
кстати я вполне хорошо ту задачу по мержу параметров решил
Lamobot
с жсоном было бы проще, но для него надо ставить библиотеку) а это уже не из коробки
Я немного неправ, можно вытащить за один проход, но выглядит криво: "{{ ['type', 'value'] | map ('extract', (user_list | selectattr('name', 'equalto', 'core') | sum(attribute='ssh_keys', start=[]) | selectattr('name', 'equalto', 'main') | list | first)) | list | join(' ')}}"
Alex
/usr/local/lib/python3.5/dist-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 3.5 support will be dropped in the next release of cryptography. Please upgrade your Python. from cryptography.hazmat.backends import default_backend а кто как решает пробему в 16й убунте или pyenv наше все?