我在我的剧本中使用
import_role
在整个任务的特定点运行角色。一些导入的角色需要提升权限,因此我一直尝试对它们使用 become: yes
,结果好坏参半。
这是我如何使用
import_role
的示例:
---
- import_role:
name: geerlingguy.redis
become: yes
导入的角色中的任务似乎运行没有问题,但某些角色也不起作用。
我遇到的一致问题之一是导入角色中的处理程序,它们似乎没有收到
become: yes
语句,因为它们抛出“需要身份验证”错误。我最终不得不将他们的处理程序复制到我正在编写的任何角色中。
我正在运行 Ansible 版本
2.5.0
。
如何一致且可靠地将
become
传递给导入的角色?
2.5.0 中有一系列与继承相关的错误,我认为这就是您在这里遇到的问题。不幸的是,2.5.1 版本没有及时找到修复程序,但 2.5.2 版本中应该有解决方案。
或者,您可以在角色的任务中使用一个块来设置
become
- 也是有条件的。
- name: Redis...
block:
- name: Task 1
- name: Task 2
become: true # or "{{ 'true' if some_condition else 'false' }}"
@adam-miller 这个问题实际上在 2.5.2 中得到了解决吗(您评论的链接似乎已过时,因为它现在指向一个空列表)?