Victor
Сап гайз, мне нужно менять значение переменной в зависимости от того запускается ли плейбук в чек моде или без него. Из очевидного это сделать set_fact используя магическую переменную ansible_check_mode. Но может есть более каноничные варианты?
Gleb
when: ansible_check_mode ?
Combot
Alex has been banned! Reason: CAS ban.
Anonymous
Привет, может кто сталкивался с этим:
Anonymous
{ "by": "vyos", "comment": "configured by vyos_config\u001b[m", "datetime": "2020-02-17 15:59:10 ", "revision": "1", "via": "cli\u001b[m" }, { "by": "vyos", "comment": null, "datetime": "2020-02-17 15:56:20 ", "revision": "2", "via": "cli\u001b[m" },
Anonymous
\u001b[m на каждом str ответе vyos_facts
Anonymous
Виндовса нет и не было
Anonymous
Это так же есть в тестах у ансибла
Anonymous
https://logs.zuul.ansible.com/75/59175/9e6166cf228123bc0311e2642d1a2c7222bf1937/third-party-check/ansible-test-network-integration-vyos-python27/c0b5123/controller/ansible-debug.html
Anonymous
@tnt4brain @gecube @freeseacher как правильнее решить это, какие есть варианты, пока только регес замена приходит на ум, но уверен есть более правильный подход
Alexey
done
Aleksey
надо заметить что предложением для починки является регексп.
Denis
Всем привет! Подскажите пожалуйста. Вот у меня в templates есть конфиги, которые используют синтаксиси похожий как у jinja, к примеру {{device_name}}. Подскажите, как быть в этих случаях? У меня таска падает из-за этого.
Отделение Bereke Bank
и даже не называет тебя "крестный отец"
Denis
пасибо, буду знать
Gunnery
привет всем нужен совет из области настройки сети на линуксе: Мне надо создать бридж на удаленной машине (на единственном интерфейсе) модулем shell передаются команды из набора iproute2 ip a add name {{ v_bridge }} type bridge ip link set {{ v_bridge }} up и далее. в целом, таск отрабатывает, но на одном из этапов интерфейс отваливается и поднимается сразу, но выполнение плейбука прерывается - линк рвется, и если этот плейбук выполнить снова, то все ок network manager установить, чтобы использовать подходящий модуль, по некоторым причинам, нельзя. как можно выкрутиться?
Sergey
@tnt4brain @gecube @freeseacher как правильнее решить это, какие есть варианты, пока только регес замена приходит на ум, но уверен есть более правильный подход
Cтрадать, вспоминать школу и основы систем счисления. \u001b = 16+11 = 27 (ESC). Получается, что какая-то дрянь тебе управляющий символ прямо в текст пихает (подозреваю, какая-нить ANSI-последовательность).
Gunnery
а где там добавление слейва в бридж?
я сократил тут, для краткости, сейчас все выведу
Gunnery
а где там добавление слейва в бридж?
ip link add name {{ vnet_bridge }} type bridge ip link set {{ vnet_bridge }} up ip link set {{ ifdev }} master {{ vnet_bridge }} ip a add 192.168.10.2/24 dev {{ vnet_bridge }} ip link set dev {{ vnet_bridge }} address {{ br_mac }} ip link set dev {{ ifdev }} down ip link set dev {{ ifdev }} up
Gunnery
хм... я не уверен сейчас, что ранее этого не пробовал
Gunnery
может для модуля shell какие параметры (саб модули, хз как правильно, типа delay или retries) передать? только в доках мало чего написано (или я еще плохо искал)
Rasim
Коллеги, приветствую! не могу разобраться с nested loop. конструкция такая - name: extend partitions win_partition: partition_size: -1 partition_number: "{{item.1.number}}" disk_number: "{{item.0.number}}" loop: "{{ansible_facts.disks|product(???)|list}}" помогите, пожалуйста, что писать в фильтр product
George
У тебя в disks какой джисон прилетает ?
Rasim
сейчас приведу пример
Rasim
массив дисков, внутри каждого диска - массив из partitions
Rasim
ну и хотел reusable роль для расширения всех partitions
Radik
используй сервисы для вставки кода не мучай глаза людей
Radik
https://lifehacker.ru/formatirovanie-teksta-v-telegram/ или так
Rasim
https://pastebin.com/wU9u11p5
Radik
у тебя json кривой
Radik
https://pastebin.com/wU9u11p5
https://codebeautify.org/jsonvalidator
Rasim
я убрал лишнее, это не копипаст. вопрос в том, что есть массив в массиве, и как это корерктно обработать через nested loop
Evgenii
Хай всем. Подскажите пример использования openstack inventory plugin example
Lamobot
я убрал лишнее, это не копипаст. вопрос в том, что есть массив в массиве, и как это корерктно обработать через nested loop
Не очень понимаю как вы хотите это сделать с product фильтром Скорее вам подходит subelements фильтр https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#subelements-filter
Evgenii
може есть кто selectel юзает
Jungo
може есть кто selectel юзает
но без ansible))) только терраформом играюсь с vscale
Evgenii
фак
Rasim
with_subelements
спасибо
Evgenii
но без ansible))) только терраформом играюсь с vscale
с тераформом то там всё изи, даже модули написаны для примера https://github.com/selectel/terraform-examples
Evgenii
а вот завести динамик инвентори, чёт не могу
Jungo
с тераформом то там всё изи, даже модули написаны для примера https://github.com/selectel/terraform-examples
может, я правда другой модуль использую но не суть инвентори сейчас генерирую из терраформа вроде норм получается
Evgenii
может, я правда другой модуль использую но не суть инвентори сейчас генерирую из терраформа вроде норм получается
так ты просто типа то, что создал в оутпут выплёвываешь, и это как инвентори используешь ?
Evgenii
я то про https://docs.ansible.com/ansible/latest/plugins/inventory.html
Jungo
так ты просто типа то, что создал в оутпут выплёвываешь, и это как инвентори используешь ?
сейчас да, только вот освоил , через шаблон а ты хочет вытащить инвентори из их api?
Jungo
ну да, как все нормальные люди )
получается вот это надо https://docs.ansible.com/ansible/latest/plugins/inventory/openstack.html а ошибки есть какие?
Evgenii
вот такая структура
Evgenii
$ cat inventory/openstack.yml plugin: openstack expand_hostvars: yes fail_on_errors: yes clouds_yaml_path: ./clouds.yaml $ cat inventory/clouds.yaml clouds: selectel: auth: auth_url: "https://api.selvpc.ru/identity/v3" project_name: "111111" # username: "admin" password: "" identity_api_version: 3 volume_api_version: 3
Evgenii
запускаю: $ ansible-inventory -i inventory/openstack.yml --graph [WARNING]: * Failed to parse ansible/inventory/openstack.yml with openstack plugin: coercing to Unicode: need string or buffer, list found [WARNING]: Unable to parse ansible/inventory/openstack.yml as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available @all: |--@ungrouped:
Jungo
а через curl пробовал посмотреть?
Jungo
что-то не так с данными они не могут подружиться видимо
Jungo
а как через курл ?
не знаю) я бы смотрел в модуле ансибла что он запрашивает а не может быть дело в версии питона например?
Evgenii
пробовал ещё через инвентори скрипт https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html#inventory-script-example-openstack но он падает keystoneauth1.exceptions.http.BadRequest: Expecting to find domain in project. The server could not comply with the request since it is either malformed or otherwise incorrect. The client is assumed to be in error. (HTTP 400) (Request-ID: req-bedd529e-a7e5-4831-9461-9334c5b14d98)
Evgenii
может я какие то креды не верно указал
Jungo
400 обычно говорит о неверной запросе , а на креды было бы 403
Tadeusz
на креды и 401 идет (auth)
Evgenii
400 обычно говорит о неверной запросе , а на креды было бы 403
так, с скриптом завёл https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html#inventory-script-example-openstack в скрипте путь к clouds.yaml захардкожен, по этому в файл /etc/ansible/openstack.yaml пишешь clouds: selectel: auth: auth_url: "https://api.selvpc.ru/identity/v3" project_domain_name: "" project_id: "" user_domain_name: "" username: "" password: "" identity_api_version: 3 volume_api_version: 3
Evgenii
креды все бедёшь из rc.sh, который в панельке можно скачать
Evgenii
но чёт хочется с нативным плагином... ) Ковыряю дальше )
Александр
Из плейбука: - shell: | echo 'show master status' | docker exec -i db mysql -A mysql register: master_status - debug: var: master_status.stdout_lines - mysql_replication: login_unix_socket: /var/run/mysqld/mysqld.sock mode: getmaster register: getmaster - debug: var: getmaster - debug: var=getmaster.File - debug: var=getmaster.Position Вывод на консоль: TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "master_status.stdout_lines": [ "File\tPosition\tBinlog_Do_DB\tBinlog_Ignore_DB", "mysql-bin.000003\t342\tmy_db,my_db_migrations\t" ] } TASK [db : mysql_replication] ************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster": { "Is_Master": false, "changed": false, "failed": false, "msg": "Server is not configured as mysql master" } } TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster.File": "VARIABLE IS NOT DEFINED!" } TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster.Position": "VARIABLE IS NOT DEFINED!" } баг https://github.com/ansible/ansible/issues/54151 я как понимаю, не судьба мне использовать mysql_replication?)
Александр
при том к примеру такая консрукция у меня нормально работает - name: create db users mysql_user: name: "{{ item[1].name }}" password: "{{ item[1].password }}" host: "{{ item[0] }}" priv: "{{ item[1].priv }}" login_unix_socket: /var/run/mysqld/mysqld.sock with_nested: - "{{ cluster + ['127.0.0.1', '172.17.%'] }}" - "{{ mysql_users }}" loop_control: label: "'{{ item[1].name }}'@'{{ item[0] }}'
marantz
Коллеги, приветствую. Как лучше реализовать поднятие нескольких gitlab-runners? Какую конструкцию лучше использовать?
Александр
Из плейбука: - shell: | echo 'show master status' | docker exec -i db mysql -A mysql register: master_status - debug: var: master_status.stdout_lines - mysql_replication: login_unix_socket: /var/run/mysqld/mysqld.sock mode: getmaster register: getmaster - debug: var: getmaster - debug: var=getmaster.File - debug: var=getmaster.Position Вывод на консоль: TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "master_status.stdout_lines": [ "File\tPosition\tBinlog_Do_DB\tBinlog_Ignore_DB", "mysql-bin.000003\t342\tmy_db,my_db_migrations\t" ] } TASK [db : mysql_replication] ************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster": { "Is_Master": false, "changed": false, "failed": false, "msg": "Server is not configured as mysql master" } } TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster.File": "VARIABLE IS NOT DEFINED!" } TASK [db : debug] ************************************************************************************************************************************************************************************************************************************************************************************************ ok: [myhost] => { "getmaster.Position": "VARIABLE IS NOT DEFINED!" } баг https://github.com/ansible/ansible/issues/54151 я как понимаю, не судьба мне использовать mysql_replication?)
ответ: удалить PyMySQL и использовать MySQLdb
manefesto
Можно ли как-то обратится к интерфейку по номеру ? Например у меня на одних хостах eth0, eth1, на других enp0s3, enp0s8
Pavel
коллеги вопрос по lookup, loop и словарям есть json я хочу к нему обратиться как словарю через конструкцию - loop: "{{ lookup('dict', users) }}" т.к. это словарь не в переменных а в файле, то вместо users должен быть еще один lookup или я как то не правильно все понимаю?