如何在Ansible Playbook中仅执行新增任务「House Keep Task」?
可行解决方案
针对你的需求,在Ansible 2.11.12版本下,有以下几种方法可以单独执行「House Keep Task」:
方法一:给目标任务添加标签(推荐)
修改ansible/roles/batchservers/tasks/main.yaml中的目标任务,添加专属标签:
- name: House Keep Task cron: name: "House Keep Task" user: "{{ batch_user }}" special_time: daily job: "/usr/bin/find /var/log -name '*.log' -mtime +6 -type f -delete" state: present tags: [housekeep] # 新增专属标签
然后执行以下命令,仅运行带有housekeep标签的任务:
ansible-playbook -u sysadmin -i ./inventories/dev/hosts --tags housekeep batchservers.yml -K
方法二:编写临时Playbook单独执行任务
创建一个临时Playbook(比如run_housekeep.yml),直接复制目标任务内容:
--- - hosts: batchservers become: true tasks: - name: House Keep Task cron: name: "House Keep Task" user: "{{ batch_user }}" special_time: daily job: "/usr/bin/find /var/log -name '*.log' -mtime +6 -type f -delete" state: present
执行这个临时Playbook:
ansible-playbook -u sysadmin -i ./inventories/dev/hosts run_housekeep.yml -K
补充说明
你之前遇到的报错,原因是--start-at-task无法识别通过import_role导入的角色内部任务名——Ansible在解析时不会将角色内的任务名直接暴露给Playbook顶层的任务匹配逻辑,因此该参数无法定位到角色里的任务。
内容的提问来源于stack exchange,提问作者Sachiko
相关产品推荐
相关产品推荐

