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
А не в другом
MRY
?
MRY
Вы о Debug ?
Timur
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
cent
Должно быть как минимум в hostvars['etcdtmp']
Sergey
А кто как решает проблему замены переменных в jinja? Допустим у роли есть vars деректория, и одну из переменных нужно переименовать. Как удобно переименовывать все переменные в роли?
Sergey
(все требуемые для замены)
Asten
Массовой заменой?
Sergey
ну тип того
Sergey
допустим есть у тебя переменная path в нескольких ямлах и темплейтах
а тебе надо ее переименовать как super_path
Sergey
есть вариант просто бегать по файлам и менять через поиск замену пофайлово
Sergey
но может есть более изящное решение
Sergey
Sergey
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
то теряется иденпотентность.
Timur
Timur
Sergey
А можно как-то юзкейс описать? Зачем переименовывать кучу переменных?
допустим у тебя есть роль где участвуют несколько переменных. они участвуют в темплейтах и ямлах. ты дописываешь роль дополнительными тасками, и чисто логически имена переменных приходится менять.
А когда ты меняешь имя переменной, есесна надо менять ее во всех местах где она была употреблена, иначе не распознается
Timur
Sergey
Поиск и замена уже не в моде?
я про нее уже сказал. есть вариант ходить руками по каждому файлу с поиском и заменой
а можно спросить тут кто массово делает
Sergey
есть конечно вариант всегда в cli сделать по директории замену
John
А пакет locales установлен?
так для CentOS он не ищется.
Я то понимаю что скорей всего я где-то касячник, но пока не понимаю где именно)
Sergey
Sergey
подскажи где:)
Timur
Timur
У вас версия ансибла какая?
Timur
https://github.com/ansible/ansible/issues/44708
Sergey
Timur
Еще вот так можно:
Timur
Sergey
John
https://github.com/ansible/ansible/issues/44708
Понял. Запьем водой)
Пользуясь случаем, не подскажешь как сплитить вариаблы?
наприме у меня есть вар users на группу АЛЛ
и варс users на хост. И они не дополняют друг друга, а заменяют. А мне бы как-то дополнить
Timur
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
Timur
Хотите сделать мерж - разносите начальные значения по разным переменным, а потом объединяйте в третью
John
знать бы как :) примеров, как я полагаю, нету?
John
как объединять
Timur
Тю
John
ага :(
Timur
http://bfy.tw/LoRw
Timur
Так работает? :)
George
Есть грязный хак - ansible.cfg позволяет делать merge для словарей (опция hash_behaviour = merge)