MRY
TASK [Dbug result] ************************************************************************************************* task path: /home/username@corp.example.com/ansible/k8s.yml:84 ok: [gp02anstest01a] => { "vmres": "VARIABLE IS NOT DEFINED!: 'vmres' is undefined" }
Timur
А register: vmres добавили?
MRY
да
Timur
Куда?
Timur
Покажите код
MRY
- name: Clone a virtual machine from Linux template and customize vmware_guest: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" validate_certs: no datacenter: "{{ datacenter }}" state: present folder: "{{ vcenter_folder }}" template: "{{ template }}" name: "{{ inventory_hostname }}" cluster: "{{ vcenter_cluster }}" networks: - name: "{{ peer_network }}" ip: "{{ peer_ip }}" netmask: "{{ peer_mask }}" gateway: "{{ peer_gw }}" wait_for_ip_address: True customization: domain: "{{ guest_domain }}" dns_servers: - "{{ peer_dns1 }}" - "{{ peer_dns2 }}" dns_suffix: - "{{ guest_domain }}" delegate_to: localhost register: vmres
Timur
А, понял
Timur
Тогда вот так: А вторым таском выведите результат: - debug: var: hostvars[localhost]['vmres ']
Timur
Что выводит?
MRY
TASK [Debug result] ************************************************************************************************ task path: /home/username@corp.example.com/ansible/k8s.yml:84 ok: [gs02anstest01a] => { "hostvars['localhost']['vmres']": "VARIABLE IS NOT DEFINED!: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'vmres'" }
MRY
HostVarsVars ?
Timur
А машина-то создалась вообще?
MRY
да
Timur
Странно
Timur
Timur
Покажите еще раз код, плиз
Timur
Первые два таска
MRY
щас минутку
Timur
MRY
https://pastebin.com/SctrevGq
Timur
https://pastebin.com/SctrevGq
Я в том же плее просил сделать же
Timur
А не в другом
MRY
?
MRY
Вы о Debug ?
MRY
TASK [Debug First] ************************************************************************************************* task path: /home/username@corp.example.com/ansible/k8s.yml:67 ok: [jp02devetcd01] => { "hostvars['localhost']['vmres']": "VARIABLE IS NOT DEFINED!: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'vmres'" }
MRY
Дебаг из первого таска
MRY
Во втором тот же вывод
Timur
Вы его перенесли в первый плей или нет?
MRY
https://pastebin.com/E44SFd2J
cent
Должно быть как минимум в hostvars['etcdtmp']
Sergey
А кто как решает проблему замены переменных в jinja? Допустим у роли есть vars деректория, и одну из переменных нужно переименовать. Как удобно переименовывать все переменные в роли?
Sergey
(все требуемые для замены)
Asten
Массовой заменой?
Sergey
ну тип того
Sergey
допустим есть у тебя переменная path в нескольких ямлах и темплейтах а тебе надо ее переименовать как super_path
Sergey
есть вариант просто бегать по файлам и менять через поиск замену пофайлово
Sergey
но может есть более изящное решение
Asten
допустим есть у тебя переменная path в нескольких ямлах и темплейтах а тебе надо ее переименовать как super_path
Чтобы не было проблем "не могу просто регуляркой поменять везде" потому что в разных ролях переменная одинаково названа, мы изначально переменные именуем имяроли_переменная
Sergey
Vladimir
но может есть более изящное решение
pycharm ide, умеет искать зависимости
Sergey
pycharm ide, умеет искать зависимости
vscode таким функционалом не дополнить?
Vladimir
vscode таким функционалом не дополнить?
Честно, не знаю, не пользовался. Кто-то из коллег пользует, спрошу.
Sergey
Vladislav 👻
pycharm ide, умеет искать зависимости
Только по ролям. По варсам уж точно не искал месяц назад
Vladimir
John
коллеги, а как ансиблом устанавливать локаль в ЦентОС 7 ? если делать как в мане - name: Ensure a locale exists locale_gen: name: de_CH.UTF-8 state: present то ругается что не установлено locales (FAILED! => {"changed": false, "msg": "/etc/locale.gen and /var/lib/locales/supported.d/local are missing. Is the package \"locales\" installed?"}) если делать иначе: - name: locales | set sudo: yes command: localectl set-locale {{ locale_lang }} notify: restart dependent services то теряется иденпотентность.
Sergey
А можно как-то юзкейс описать? Зачем переименовывать кучу переменных?
допустим у тебя есть роль где участвуют несколько переменных. они участвуют в темплейтах и ямлах. ты дописываешь роль дополнительными тасками, и чисто логически имена переменных приходится менять. А когда ты меняешь имя переменной, есесна надо менять ее во всех местах где она была употреблена, иначе не распознается
Sergey
Поиск и замена уже не в моде?
я про нее уже сказал. есть вариант ходить руками по каждому файлу с поиском и заменой а можно спросить тут кто массово делает
Sergey
есть конечно вариант всегда в cli сделать по директории замену
John
А пакет locales установлен?
так для CentOS он не ищется. Я то понимаю что скорей всего я где-то касячник, но пока не понимаю где именно)
Timur
есть конечно вариант всегда в cli сделать по директории замену
Тот же vscode спокойно позволяет сделать поиск с заменой по всей папке рекурсивно
Sergey
подскажи где:)
Timur
У вас версия ансибла какая?
Timur
https://github.com/ansible/ansible/issues/44708
Timur
вот я его юзаю но не вижу этого функционала
??? Правой кнопкой на папке - "Find in folder"
Timur
Еще вот так можно:
Timur
Sergey
John
https://github.com/ansible/ansible/issues/44708
Понял. Запьем водой) Пользуясь случаем, не подскажешь как сплитить вариаблы? наприме у меня есть вар users на группу АЛЛ и варс users на хост. И они не дополняют друг друга, а заменяют. А мне бы как-то дополнить
Timur
Как не допустить замены? Очевидно, не называть одинаковым именем. Или включать как childs в разные словари
John
- name: Create User user: name='{{ item }}' shell=/bin/bash with_items: '{{ users }}' вот кусок, который должен создать пользователей на хостах. есть группа ALL и в файле group_vars/all.yml есть users: - user1 - user2 но на хосте2 мне нужно этот набор пользователей расширить, то есть создать еще и user3 для этого я в hosts_vars/host2.yml прописал: users: - user3 и расчитывал получить на хосте2 всех трех пользователей, а получил только одного
Timur
Хотите сделать мерж - разносите начальные значения по разным переменным, а потом объединяйте в третью
John
знать бы как :) примеров, как я полагаю, нету?
Timur
знать бы как :) примеров, как я полагаю, нету?
Примеров чего? Как называть разные переменные разным именем? :)
John
как объединять
Timur
Тю
John
ага :(
Timur
http://bfy.tw/LoRw
Timur
Так работает? :)
George
Есть грязный хак - ansible.cfg позволяет делать merge для словарей (опция hash_behaviour = merge)