Size: a a a

ansible — русскоговорящее сообщество

2020 December 03

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Иерархию переменных по группам инвентаря строить нельзя - не пытайтесь. Все группы равноправны по сути.
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Timur Gadiev
Между группами переменные перекрываться не должны в идеале
Спасибо за ответ :)
Согласитесь, возможны переменные которые используются во всех инвентори + во всех плейбуках/ролях.
Хотя бы для того что бы быть уверенными что мы раскатаемся с одинаковыми значениями. По сути - глобальные константы.
прописывать их в дефолтах ролей - повторяться 100500 раз, по количеству ролей (от этих констант-переменных роли будут порождать свои переменные)

неужели нет в консерватории  средства задать глобальные константы?
(видимо у меня что-то не так с запуском плейбука, потому что в соседних проектах "в корне проекта /group_vars/all.yml" работает...)
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Запуск у меня вида:
cd ansible_project
ansible-playbook playbookXXX.yml  -i inventories/beta7/hosts --ask-vault-pass
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Вадим Шандринов
Спасибо за ответ :)
Согласитесь, возможны переменные которые используются во всех инвентори + во всех плейбуках/ролях.
Хотя бы для того что бы быть уверенными что мы раскатаемся с одинаковыми значениями. По сути - глобальные константы.
прописывать их в дефолтах ролей - повторяться 100500 раз, по количеству ролей (от этих констант-переменных роли будут порождать свои переменные)

неужели нет в консерватории  средства задать глобальные константы?
(видимо у меня что-то не так с запуском плейбука, потому что в соседних проектах "в корне проекта /group_vars/all.yml" работает...)
В ансибле все переменные глобальные и видны в рамках всего плея, откуда бы они не пришли.
источник

M

Mikhail in ansible — русскоговорящее сообщество
Вадим Шандринов
Спасибо за ответ :)
Согласитесь, возможны переменные которые используются во всех инвентори + во всех плейбуках/ролях.
Хотя бы для того что бы быть уверенными что мы раскатаемся с одинаковыми значениями. По сути - глобальные константы.
прописывать их в дефолтах ролей - повторяться 100500 раз, по количеству ролей (от этих констант-переменных роли будут порождать свои переменные)

неужели нет в консерватории  средства задать глобальные константы?
(видимо у меня что-то не так с запуском плейбука, потому что в соседних проектах "в корне проекта /group_vars/all.yml" работает...)
Возможно вот этот случай? https://stackoverflow.com/a/62589617/205355
Как я понял "Если переменные для группы заданы в инвентори тоже, соответствующий group_vars для данной группы игнорируется"
источник
2020 December 04

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Timur Gadiev
В ансибле все переменные глобальные и видны в рамках всего плея, откуда бы они не пришли.
да, это так. но мне приходится определять одинаковые переменные в каждом инвентори.
где можно задать один раз для всех инвентори, а в некторых - переопределить?
то место где я задам один раз я и называю глобальным. дефолты ролей не предлагать - еще хуже получается.
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Спасибо, посмотрю.
Сдается мне что мы выбрали неправильный паттерн создания инвентори :(
https://docs.ansible.com/ansible/2.4/playbooks_best_practices.html
если инвентори сильно пересекаются по переменным, то лучше выбрать первый из предложенного в доках
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Вадим Шандринов
да, это так. но мне приходится определять одинаковые переменные в каждом инвентори.
где можно задать один раз для всех инвентори, а в некторых - переопределить?
то место где я задам один раз я и называю глобальным. дефолты ролей не предлагать - еще хуже получается.
В ансибле переменные могут определяться на разных уровнях с разным приоритетом. Уровень инвентаря - это один уровень. Внутри инвентаря никакой иерархии переменных нет. Хотите перезаписывать переменные - используйте другие уровни с приоритетом выше/ниже.
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#understanding-variable-precedence
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
В любом случае, если у вас есть пересечения переменных между группами - это потенциальные проблемы. Если в разных группах, которые могут принадлежать одному хосту, дублируются переменные, вы явно делаете что-то не так.
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Можно, конечно, поиграться с приоритетом групп, но это такое...
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Timur Gadiev
В любом случае, если у вас есть пересечения переменных между группами - это потенциальные проблемы. Если в разных группах, которые могут принадлежать одному хосту, дублируются переменные, вы явно делаете что-то не так.
Хорошо, приведу типичный пример. Мы хотим раскатывать на все прод ЦОДы ветку мастер, а на бету - девелоп.
Есть папки инвентори для каждого ЦОД и одна папка - для беты.
── inventories
│   ├── beta
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center1
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center2
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
Как вы решите такую задачу? цодов может быть десятки
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Вадим Шандринов
Хорошо, приведу типичный пример. Мы хотим раскатывать на все прод ЦОДы ветку мастер, а на бету - девелоп.
Есть папки инвентори для каждого ЦОД и одна папка - для беты.
── inventories
│   ├── beta
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center1
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center2
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
Как вы решите такую задачу? цодов может быть десятки
Что такое "бета" в вашем случае и как она соотносится с ЦОДами?
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Timur Gadiev
Что такое "бета" в вашем случае и как она соотносится с ЦОДами?
бета - набор хостов, аналогичный ЦОД. на этом наборе мы показываем заказчику фичи
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Хосты между группами ЦОД и группой бета пересекаются?
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
по функциональным названиям - да, по IP - нет
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Вадим Шандринов
по функциональным названиям - да, по IP - нет
По сущностям. Это разные хосты или те же?
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
в -ролях- плейбуках прописаны группы хостов с одной функциональностью
скажем nginx и dbmaster
группа nginx будет для беты указывать на хосты в нашей сети
а для ЦОД - на хосты ЦОД
источник

TG

Timur Gadiev in ansible — русскоговорящее сообщество
Вадим Шандринов
в -ролях- плейбуках прописаны группы хостов с одной функциональностью
скажем nginx и dbmaster
группа nginx будет для беты указывать на хосты в нашей сети
а для ЦОД - на хосты ЦОД
Что, простите?! В ролях прописаны хосты?!!
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
пардон в плейбуках
источник