LINUX.ORG.RU
решено ФорумAdmin

Диапазоны в инвентаре для Ansible

 


0

2

ЛОР, привет. Подскажи, как сделать по красоте? Есть 100500 хостов с номерами и с отличающимися на инкеремент адресами. Руками в инвентарь всё заносить видится мне не порядочным, а вот так чот не работает.

[my_hosts]
hostname[1:11] ansible_host=192.168.1.[1:11]

хотснеймы в этом варианте ранжируются, а иадрес для всех остаётся 192.168.1.[1:11]

Мож я чего не правильно делаю, но гугол и чатгпт ничего внятного ответить не могут.

Перемещено hobbit из general

★★★

Последнее исправление: SpaceRanger (всего исправлений: 1)

Ответ на: комментарий от Anoxemian

в документации просто про назначение диапазонов либо хостнеймам, либо адресам. Но это же дичь, не? Ну типа, если я диапазонов поназначал хостнеймы, то мне же надо как то и адреса им назначить

SpaceRanger ★★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

Ну эдак можно дойти до того, что в цикле баша ходить по ссх по хостам и что-то там делать. Не теряю надежды, что ансибл всё же может красиво генерить и имена и ип адреса.

SpaceRanger ★★★
() автор топика
Ответ на: комментарий от bigbit

Да, всё печально. Плюс к тому, обязательно нужно сравнивать ansible_fqdn с именем хоста в инвентори и, при несовпадении, принудительно назначать. Не спрашивай почему, просто вот так есть. Поэтому и надо штоп инвентарь быть в формате хостнейм - ип.

SpaceRanger ★★★
() автор топика

Руками в инвентарь всё заносить видится мне не порядочным

Инвентори пишется так, что если тебе что-то надо поменять для одного хоста, это не должно задеть другие. Эти 100500 хостов у тебя теоретически могут быть в произвольном порядке в 100500 группах.

У Ансибла есть какие-то модули для генерации инвентори, но ни разу не видел такого в продакшене.

Проще иметь в инвентори актуальный список как он есть и добавлять/убирать хосты по необходимости. Не каждый же день эти 100500 хостов меняются.

ivanov17
()

обычно inventory

  • либо берется из внешнего источника (k8s, vsphere, openstack, облачные провайдеры)
  • либо создаётся вручную/скриптами (для небольшого числа хостов). bash/python/golang/terraform. как вариант, можно в одном playbook’е создавать файл inventory через template, а потом его использовать

но возможно ты хочешь ansible.builtin.generator

ansible-doc -t inventory -l
ansible-doc -t inventory ansible.builtin.generator

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/generator_inventory.html

не пользовался, поэтому подробнее не скажу

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от FireFighter

не совсем понял. Предложение звучит так, как будто бы и утвердительное и отрицательное. Да, ansible_host= это переменная, значение которой я задаю диапазоном и это почему то не работает.

SpaceRanger ★★★
() автор топика
Ответ на: комментарий от FireFighter

Теперь понял. Так а можно как то переменную диапазоном задать? Переменная то на то и переменная, чтобы иметь изменчивую природу.

SpaceRanger ★★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)
Ответ на: комментарий от SpaceRanger

Попробуй перейти на yaml inventory и через jinja2 задать значение этой переменной. Самому интересно стало, как отреагирует ansible )

FireFighter ★★★
()
Последнее исправление: FireFighter (всего исправлений: 1)
Ответ на: комментарий от FireFighter

ага, попробую. Кстати, еще один вопрос, на который быть может ты сможешь мне помочь ответом. Почему ансибл так нестабилен в плане соединения, когда хостов около 30 и они за джампом. То есть из 30 где то половина стабильно отваливается в процессе выполнения по причине Connection refused или Connection closed. ПРичем если их позже гонять ручками, именно проблемные ( с помощью –limit) - то всё нормально отрабатывается. Это какой то твик для ансибла нужон или как? Форк в конфиге стоит равным 20

SpaceRanger ★★★
() автор топика
Ответ на: комментарий от SpaceRanger

Это значит что таска будет выполнятся на всех хостах одновременно, если не указаны ограничения. Попробуй количество форков поднять или serial пустановить.

FireFighter ★★★
()
Ответ на: комментарий от adn

Прошу извинить, но как запустить тот пример, который в докементации указан?)

ansible-inventory -i inventory.config --list > inventory.yaml

штоле?

SpaceRanger ★★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)