У меня есть файл хостов, указав сервер, принадлежащий к нескольким группам:анзибль-Playbook не ограничивает хостов
[web]
192.168.45.37
[integration]
192.168.45.37
[database]
192.168.45.37
Различные группы имеют различные роли, примененные к ним в сборник пьес:
- hosts: all
roles:
- { role: base, tags: ['base'] }
- { role: logstash, tags: ['logstash'] }
- hosts: database
roles:
- { role: mysql, tags: ['database', 'mysql'] }
- { role: mysql-backup, tags: ['database', 'mysql', 'backup'] }
- hosts: web
roles:
- { role: nginx, tags: ['web', 'nginx'] }
- { role: ssl-certs, tags: ['web', 'ssl-certs'] }
- hosts: integration
roles:
- { role: jetty, tags: ['integration', 'jetty'] }
Моя проблема в том, что когда я иду запускать плей-лист, пытаясь ограничить его только «ролями», необходимыми для указания «группы» с аргументом «-limit», например
ansible-playbook -i hosts site.yml -l integration
Он заканчивается бегом все пьес против сервера. Почему он это делает? Могу ли я заставить его просто запустить набор игр/ролей, связанных с этой конкретной группой серверов?
Вместо интеграции -l вы можете использовать интеграцию -t, которая будет использовать теги. – user2182349
Хотя это правда, я обнаружил, что использование «тегов» не выполняет раздел «pre_tasks», который я указал в «site.yml». (Я просто оставил это из описания для простоты). Кроме того, это означает, что я должен быть уверен, что поддерживаю «теги» для каждой группы серверов, не забудьте включить имя группы в список тегов. Мне это кажется глупым. – srkiNZ84
К сожалению, это ожидаемое поведение в Ansible. Он найдет список хостов, которые соответствуют, а затем получите информацию для всех групп, в которых находятся эти хосты. –