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
Ругается
Как правильно?
Timur
Denis
Нет
Выше вывод файла ```vars/main.yml```
Timur
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
Anonymous
Denis
Тогда что то туплю, как правильно для разных таско, которые выполняются для разных систем подключать ?
George
George
через сам апт
George
Sergey
Timur
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
ну, где-то месяца два назад рубились за кейс в названиях файлов
George
🙀☺️
Ilya
Приветствую. есть 4 словаря a1 .. a4 . Наприаер получить содержимое могу так msg: '{{ a1.network }}'
как получить содержимое этих словаре с with_items: {{ inst }}' ?
где
inst:
- a1
- a2
конструкции типа '{{ {{ inst }}.network }}' - ошибки. что я делаю не так? ))
Anonymous
@sm_work будет жить. Поприветствуем!
Vadim
Ilya
увы.
Vadim
Vadim
А это у тебя массив просто
Sergey
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
И?
Pavel
Pavel
Ilya
сути это не меняет. выввести значение через а1.network_params я могу, а через {{ items }}.network_params - нет.
Pavel
Andor
Vadim
Vadim
Схавает он такое или нет
Sergey
Erick
Sergey
hostvars[ ansible_host ][item]['a1']
Sergey
Ilya
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.
Timur
with_items в топку
Timur
Timur
Ilya
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
Timur
И как вообще изначально выглядит instance?
Timur
В том примере, что был выше, был словарь без списка