假设我有一个名为"apache“的角色
现在,我想从Ansible host的命令行在主机192.168.0.10上执行该角色
ansible-playbook -i "192.168.0.10" --role "path to role"
有没有办法做到这一点?
发布于 2016-07-15 05:03:06
我不知道这个特性,但是你可以使用标签来运行你的剧本中的一个角色。
roles:
- {role: 'mysql', tags: 'mysql'}
- {role: 'apache', tags: 'apache'}
ansible-playbook webserver.yml --tags "apache"
发布于 2018-10-19 16:09:36
使用ansible 2.7你可以做到这一点:
$ cd /path/to/ansible/
$ ansible localhost -m include_role -a name=<role_name>
localhost | SUCCESS => {
"changed": false,
"include_variables": {
"name": "<role_name>"
}
}
localhost | SUCCESS => {
"msg": "<role_name>"
}
这会将角色从/ path /运行到/ansible/roles或已配置的角色路径。
发布于 2016-07-17 16:49:33
Ansible中没有这样的东西,但如果这是您经常使用的用例,请尝试此脚本。
将其放在名称ansible-role
下的可搜索路径中的某个位置
#!/bin/bash
if [[ $# < 2 ]]; then
cat <<HELP
Wrapper script for ansible-playbook to apply single role.
Usage: $0 <host-pattern> <role-name> [ansible-playbook options]
Examples:
$0 dest_host my_role
$0 custom_host my_role -i 'custom_host,' -vv --check
HELP
exit
fi
HOST_PATTERN=$1
shift
ROLE=$1
shift
echo "Trying to apply role \"$ROLE\" to host/group \"$HOST_PATTERN\"..."
export ANSIBLE_ROLES_PATH="$(pwd)/roles"
export ANSIBLE_RETRY_FILES_ENABLED="False"
ansible-playbook "$@" /dev/stdin <<END
---
- hosts: $HOST_PATTERN
roles:
- $ROLE
END
https://stackoverflow.com/questions/38350674
复制相似问题