如何直接运行被Ansible Playbook引用的任务列表文件?
无需修改任务文件直接单独运行Ansible任务列表的可行方案
完全可行,不用修改do_smth1.yml这类纯任务列表文件,就能通过命令行单独运行并指定目标主机、自定义变量。核心思路是通过命令行生成临时Playbook,在临时Playbook里指定hosts并引用目标任务文件,具体操作如下:
方法:使用命令行临时Playbook
直接在终端执行以下命令,无需创建额外文件:
ansible-playbook -i inventory -e '{"users": ["customusr1","customusr2"]}' - <<PLAY - hosts: all tasks: - include_tasks: do_smth1.yml PLAY
参数说明:
-i inventory:指定你的inventory文件路径-e '{"users": ["customusr1","customusr2"]}':传递自定义的users变量,格式符合Ansible变量要求<<PLAY ... PLAY:通过Here-doc生成临时Playbook,其中:hosts: all:指定任务运行的目标主机(可替换为具体主机组/主机名,比如hosts: webservers)include_tasks: do_smth1.yml:引用你要单独运行的任务文件
扩展:指定特定主机/组
如果不需要运行在all主机上,可修改临时Playbook里的hosts字段,或者搭配--limit参数限制目标范围:
# 仅在webservers组运行 ansible-playbook -i inventory --limit webservers -e '{"users": ["customusr1","customusr2"]}' - <<PLAY - hosts: all tasks: - include_tasks: do_smth1.yml PLAY
兼容性说明
这种方式不会改动原任务文件,do_smth1.yml依然能被main.yml通过include_tasks正常引用,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Sebi
相关产品推荐
相关产品推荐

