我有一个简单的角色来安装 Weblogic 服务器;现在我想添加一个 deinstall.yml 任务文件。
目前,我创建了一个新的简单剧本,并想用它执行文件tasks / deinstall.yml。请问我该如何实现?我最近的方法是使用标签……这是一种可行的方法吗?当我测试它时,main.yml被执行,其中的块和任务没有标签。
- hosts: alf_sandbox
roles:
- role: Weblogic
vars:
domain: TODO
tags: deinstall
角色目录的一部分
├── tasks
│ ├── deinstall.yml
│ ├── main.yml
答案1
您的标签示例并未进行过滤,而是将标签 deinstall 添加到角色中的每个任务。请参阅https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_tags.html#adding-tags-to-roles
您可以通过从 main.yml 中包含 deinstall 并设置 never 标签来使用标签:
- include_tasks: deinstall
tags: [ never, deinstall ]
然后要求 Ansible 仅运行带有 deinstall 标签的任务 ansible-playbook ./weblogic.yml --tags deinstall
另一个选项是使用tasks_from选项的include_role:
tasks:
- name: Run tasks/deinstall.yml from Weblogic
ansible.builtin.include_role:
name: Weblogic
tasks_from: deinstall
但通常卸载可以是一个单独的剧本。这样可以保持你的角色清晰,并且安装/配置和卸载任务之间通常很少有重叠。