如何在Ansible Playbook中仅调用Weblogic角色的deinstall.yml任务文件
如何在Ansible Playbook中仅调用Weblogic角色的deinstall.yml任务文件
我来帮你解决这个问题!在Ansible里要仅执行Weblogic角色的deinstall.yml任务,而不触发main.yml里的内容,有两种实用的方法,我给你详细说明:
方法一:直接指定任务文件(最简洁推荐)
Ansible的角色支持通过tasks_from参数,直接指定要执行的任务文件,跳过默认的main.yml。你只需要修改你的playbook,在引用Weblogic角色时加上这个参数即可:
- hosts: alf_sandbox roles: - role: Weblogic tasks_from: deinstall.yml # 直接指定要执行的任务文件 vars: domain: TODO
这样运行playbook时,Ansible会直接执行roles/Weblogic/tasks/deinstall.yml里的所有任务,完全不会触发main.yml的内容,一步到位解决你的需求。
方法二:利用标签实现(适合灵活组合任务)
如果你坚持想用标签的方式,需要先调整角色内的任务标签配置,避免无标签任务被默认执行:
- 给
main.yml里的所有安装任务添加专属标签(比如weblogic_install),确保这些任务只有在指定该标签时才会执行:
# roles/Weblogic/tasks/main.yml - name: 安装Weblogic依赖包 yum: name: java-1.8.0-openjdk state: present tags: weblogic_install # 给安装任务加专属标签 # 其他所有安装相关任务都加上这个标签
- 给
deinstall.yml里的所有卸载任务添加deinstall标签:
# roles/Weblogic/tasks/deinstall.yml - name: 停止Weblogic服务 service: name: weblogic state: stopped tags: deinstall # 给卸载任务加标签 # 其他所有卸载相关任务都加上这个标签
- 执行playbook时,指定只运行
deinstall标签的任务,同时跳过weblogic_install标签的任务:
ansible-playbook your_playbook.yml --tags deinstall --skip-tags weblogic_install
这样就能确保只有deinstall.yml里的任务被执行,而main.yml的安装任务会被跳过。
备注:内容来源于stack exchange,提问作者groovehunter
相关产品推荐
相关产品推荐

