运行 ansible 剧本中只有一个任务和处理程序

Run only one task and handler from ansible playbook

我如何 运行 来自 Ansible 剧本的单个任务和在该任务成功完成时收到通知的处理程序,同时跳过相关剧本中的所有其他任务?

目前我执行的是:

ansible-playbook --start-at-task "task1" --step -K -i hosts playbook.yml

然后在任务完成后按Ctrl+c。但是,这也会跳过处理程序。

我知道我可以向任务添加标签并使用它,就像在 How to run only one task in ansible playbook? 中一样,但我更希望能够在不添加标签的情况下执行此操作。这可能吗?

ansible-playbook 目前没有任何东西可以让你 运行 一个单一的任务,比如 --task。因此,对我来说,标签和 --tags 选项是您最好的解决方案。

可以 运行 一个单独的角色(来自 roles/ 目录):

ansible -i stage.yml -m include_role -a name=create-os-user localhost

和一个单独的任务文件:

ansible -i stage.yml -m include_tasks -a file=tasks/create-os-user.yml localhost

如果您将任务从角色外部化到根 tasks/ 目录(通过 import_tasks: ../../../tasks/create-os-user.yml 实现重用),您可以 运行 它独立于 playbook/role.