Предположим, у меня есть роль под названием "apache"
Теперь я хочу выполнить эту роль на хосте 192.168.0.10 из командной строки с хоста Ansible.
ansible-playbook -i "192.168.0.10" --role "path to role"
Есть способ сделать это?
ansible
ansible-role
Карл
источник
источник
'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
-a "name=<role_name> public=yes"
, но это не помогло.-m <module-name>
) с парами ключ = значение в качестве аргументов (-a key=value
)В Ansible такого нет, но если вы часто это используете, попробуйте этот скрипт.
Поместите его где-нибудь в свой PATH с возможностью поиска под именем
ansible-role
:источник
ansible localhost -m include_role -a name=myrole
- у меня работает!ansible localhost -m include_role -a name=myrole
не работает, поскольку анзибль 2.8. Он просто регистрирует загадочные сообщения об ошибках вроде'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
Вы также можете проверить репозиторий ansible-toolbox . Это позволит вам использовать что-то вроде
источник
Я написал небольшой плагин Ansible с именем
auto_tags
, который динамически генерирует для каждой роли в вашем playbook тег с тем же именем. Вы можете найти это здесь .После его установки (инструкции приведены выше) вы можете выполнить определенную роль с помощью:
ansible-playbook -i "192.168.0.10" --tags "name_of_role"
источник
Вы пробовали это? это супер круто. Я использую update-os вместо роли apache, чтобы дать более значимый пример. У меня есть роль под названием , скажем , давайте
./roles/update-os/
в моем./
добавить файл с именем ,./role-update-os.yml
который выглядит следующим образом :Сделайте этот файл исполняемым (
chmod +x role-update-os.yml
). Теперь вы можете запускать и ограничивать все, что есть в вашем инвентаре,./update-os.yml -i inventory-dev --limit 192.168.0.10
ограничение, которое вы также можете передать именам групп.--limit web,db
> web и db - это группа, определенная в вашем инвентаре--limit 192.168.0.10,192.168.0.201
Обратите внимание, что вы можете настроить политику ssh-keys и sudoers для выполнения без необходимости вводить пароль - идеально для автоматизации, это может повлиять на безопасность. поэтому вам необходимо проанализировать свою среду, чтобы увидеть, подходит ли она.
источник
в ansible 2.8 он работает немного иначе
источник