Ansible:使用“become”和“import_role”

问题描述 投票:0回答:2

我在我的剧本中使用

import_role
在整个任务的特定点运行角色。一些导入的角色需要提升权限,因此我一直尝试对它们使用
become: yes
,结果好坏参半。

这是我如何使用

import_role
的示例:

---
- import_role:
    name: geerlingguy.redis
  become: yes

导入的角色中的任务似乎运行没有问题,但某些角色也不起作用。

我遇到的一致问题之一是导入角色中的处理程序,它们似乎没有收到

become: yes
语句,因为它们抛出“需要身份验证”错误。我最终不得不将他们的处理程序复制到我正在编写的任何角色中。

我正在运行 Ansible 版本

2.5.0

如何一致且可靠地将

become
传递给导入的角色?

ansible ansible-2.x
2个回答
2
投票

2.5.0 中有一系列与继承相关的错误,我认为这就是您在这里遇到的问题。不幸的是,2.5.1 版本没有及时找到修复程序,但 2.5.2 版本中应该有解决方案。


0
投票

或者,您可以在角色的任务中使用一个块来设置

become
- 也是有条件的。

- name: Redis...
  block:
  - name: Task 1
  - name: Task 2
  become: true  # or "{{ 'true' if some_condition else 'false' }}"

@adam-miller 这个问题实际上在 2.5.2 中得到了解决吗(您评论的链接似乎已过时,因为它现在指向一个空列表)?

© www.soinside.com 2019 - 2024. All rights reserved.