MyTetra Share
Делитесь знаниями!
Как в Ansible ограничить список хостов, к которым будет применяться плейбук
Время создания: 28.03.2025 09:38
Текстовые метки: ansible, limit, лимит, ограничение, опция, плейбук, playbook, хост, список
Раздел: Компьютер - Linux - Оркестрация - Ansible
Запись: xintrea/mytetra_syncro/master/base/17431438909sxdm8nnzo/text.html на raw.github.com

Постоянно забываю, что делает опция --limit: то ли ограничивает список теми хостами что прописаны в опции или в файле лимита, то ли наоборот, исключает перечисленные в опции или файле лимита хосты.


* * *


В Ansible опция --limit (или сокращённо -l) ограничивает выполнение плейбука только теми хостами, которые указаны в файле или перечислены напрямую. Хосты, не указанные в лимите, будут исключены из обработки.


Другими словами:



  • Ansible обрабатывает только хосты из списка или файла лимита, даже если в hosts: плейбука указана более широкая группа.
  • Остальные хосты игнорируются (не выполняются).



Еще один вариант, для лучшего понимания:



  • Лимит работает поверх указанных в плейбуке групп.
  • Например, если в плейбуке hosts: web, а в лимите указан host1, то выполнится только host1 (если он есть в группе web).



Синтаксис


Синтаксис опции следующий:



ansible-playbook playbook.yml --limit "host1,host2" # Через запятую

ansible-playbook playbook.yml --limit @hosts_limit.txt # Из файла



Формат файла


Формат файла лимита: каждый хост прописывается на новой строке. Поддерживаются шаблоны (например, host*).



Исключение хостов


Чтобы исключить хосты из обработки, используется восклицательный знак "!". Например, опция --limit "all:!host3" заставит Ansible обработать все хосты, кроме host3.



Пример работы


В inventory.ini:



[web]

host1

host2

host3



В hosts_limit.txt:



host1

host2



Команда:



ansible-playbook playbook.yml --limit @hosts_limit.txt



Результат: Обработаются только host1 и host2, а host3 будет пропущен.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования