Anonymous
ndk будет жить. Поприветствуем!
Denis
Как правильно сделать Создаю роль. Роль должна работаь для Ubuntu и CentOS Создаю vars/main.yml --- - name: Centos server setup include_vars: centos_vars.yml when: ansible_distribution == "Centos" tags: centos-setup - name: Ubuntu/Debian server setup include_vars: ubuntu_vars.yml when: ansible_distribution == "Ubuntu" tags: ubuntu-setup Ругается Как правильно?
Denis
Нет Выше вывод файла ```vars/main.yml```
Timur
У вас там таски же
Timur
- name: Centos server setup include_vars: centos_vars.yml when: ansible_distribution == "Centos" tags: centos-setup
Timur
Это таск
Timur
Он в файле vars/main.yml у вас?
Антон
коллеги, подскажите пожалуйста, как быть в ситуации когда ssh-ключ для подключения один для нескольких серверов, а sudo - разный?
Denis
такски лежат в паске tasks
Timur
такски лежат в паске tasks
Тогда при чем тут vars/main.yml ?
Denis
Тогда что то туплю, как правильно для разных таско, которые выполняются для разных систем подключать ?
George
через сам апт
Timur
Нужно вот так: https://t.me/pro_ansible/69033
Timur
Только вместо include_tasks - include_vars
Timur
Например: - name: Load a system variables file based on distribution or OS family include_vars: '{{ distribution }}' with_first_found: - '{{ ansible_distribution | lower }}_vars.yml' - default.yml loop_control: loop_var: distribution
Антон
ты можешь в инвентори задать какой судо юзер на какой машине
инвентори пойдет в гит, поэтому не хотелось бы
George
я победил
George
😷
George
ну, где-то месяца два назад рубились за кейс в названиях файлов
Timur
ну, где-то месяца два назад рубились за кейс в названиях файлов
Это без разницы. Кому как удобнее для поддержки. Здесь просто я подогнал код к изначальному примеру
George
🙀☺️
Ilya
Приветствую. есть 4 словаря a1 .. a4 . Наприаер получить содержимое могу так msg: '{{ a1.network }}' как получить содержимое этих словаре с with_items: {{ inst }}' ? где inst: - a1 - a2 конструкции типа '{{ {{ inst }}.network }}' - ошибки. что я делаю не так? ))
Anonymous
@sm_work будет жить. Поприветствуем!
Ilya
увы.
Ilya
{{ item.network }} ?
has no attribute 'network'
Vadim
has no attribute 'network'
Ну так а ключи в a1 например какие?
Ilya
Ну так а ключи в a1 например какие?
[ "a1", "a2", "a3", "a4" ],
Vadim
[ "a1", "a2", "a3", "a4" ],
Ты сказал а1..а4 это словари
Vadim
А это у тебя массив просто
Vadim
Список
Извините, да)
Ilya
Ты сказал а1..а4 это словари
есть список instance - это список с элементами а1 .. а4 а есть словари a1. a4, из готоых я хочу значения вытаскивать, перебирая переменную в имени. Мож криво объясняю..
Timur
Покажи полный вывод исходной переменной
Ilya
"ansible_facts": { "a2": { "network_params": { "NTP": "10.10.10.1", "gateway": "10.10.10.1", "netmask": "255.255.255.0", "subnet": "10.10.10.0" }, "vm_infrastructure_options": { "ipa": { "description": "Сервер IPA", "vm_name": "Name2" }, "ipa-replica": { "description": "ipa-реплика", "vm_name": "Name2" }, } } },
Ilya
на вот один из...
Timur
И?
Ilya
но у тебя здесь действительно: has no attribute 'network'
ну ,сорри, я для сокращения писанина в исходном впроссе не дописал _params
Ilya
сути это не меняет. выввести значение через а1.network_params я могу, а через {{ items }}.network_params - нет.
Vadim
Схавает он такое или нет
Erick
Sergey
hostvars[ ansible_host ][item]['a1']
Sergey
расходимся
Denis
hostvars[inventory_hostname]["instance"][ansible_loop.index0].network_params чего уж там
Ilya
vars_files: - instance.yml tasks: - name: Include_vars include_vars: dir: './group_vars/{{item}}' name: '{{ item }}' with_items: - "{{ instance }}"
Ilya
--- instance: - a1 - a2 - a3 - a4
Ilya
── group_vars │ ├── a1 │ │ ├── network.yml │ │ └── vm-infra.yml │ ├── a2 │ │ ├── network.yml │ │ └── vm-infra.yml │ ├── a3 │ │ ├── network.yml │ │ └── vm-infra.yml │ └── a4 │ ├── network.yml │ └── vm-infra.yml
Denis
with_items: "{{ instance }}" по идее
Denis
Иначе получается список из одного элемента, внутри которого список из a1..a4
Denis
И вопрос, зачем вручную загружать group_vars? Mожно включить хост в группы a1..a4.
Ilya
with_items: "{{ instance }}" по идее
да, поправил. но не помогло. Запутался я с этим всем.
Timur
with_items в топку
Ilya
Это ж не список вообще
так только вывод показал. вообще не использую.
Ilya
И вопрос, зачем вручную загружать group_vars? Mожно включить хост в группы a1..a4.
хоста как бы вообще еще нет. я в облаке создаю виртуалки. это описание всех параметров для создания групп виртуалок.
Timur
Я ничо не понял
Timur
В чем конкретно проблема?
Denis
Может имеет смысл описать исходную задачу?
Ilya
Проблема в том, что вот так работает: - name: show dict debug: msg: - "{{ a2.network_params }}" with_items: '{{ instance }}' а вот так: - name: show dict debug: msg: - "{{ items.network_params }}" with_items: '{{ instance }}' - нет.
Timur
И как вообще изначально выглядит instance?
Timur
В том примере, что был выше, был словарь без списка