我可以为Ansible模块的任务定义全局默认值吗?

我发现自己反复向Ansible的文件相关模块input参数,如下所示:

- copy: […] owner: root group: root mode: ugo=r 

虽然假设忽略所有权的这些论点会导致与任务被“ sudo edly”执行一样,但是我想要在angular色的默认值或主机variables的范围内明确地定义这些参数模块甚至一组模块。

有没有办法来促成这样的定义?

我想定义这些参数一次明确地在angular色的默认值或每个模块的主机variables,甚至一组模块的范围。

幸运的是,你不能和你的请求是不一致的,因为你使用“明确”这个词的方式。

事实上,你想“定义这些参数一次,以便它们隐式应用”。

另一方面,Ansible要求明确指定参数值。

虽然认为省略这些所有权论据会导致与任务被“完全”执行一样的结果似乎是安全的,

不, 假设忽略这些论点会将所有权设置为您的头脑中定义的值是不安全的

最简单的情况是文件已经存在,Ansible只改变它的内容。 在这种情况下,不会隐含地修复权限/所有权。


你可以做的最好的事情是在任务中明确指定所需的参数。

如果你想有一些灵活性,使用在一个地方定义的variables:

 vars: my_owner: root my_group: root my_mode: ugo=r tasks: - copy: […] owner: "{{ my_owner }}" group: "{{ my_group }}" mode: "{{ my_mode }}" 

要记住的另一个重要的事情是,历史上并不是所有的模块在文件权限方面的行为都是一样的。 即一些模块(如果我没有记错, url )只有在实际创build/更改文件时才设置明确指定的权限,否则保持权限不变。

没有理由不对系统进行testing(使用单独的stream程,使用Ansible或其他工具)。

每次调用模块时都需要参数。 这是模块input的唯一方法。

在任务中复制多个文件时,可以迭代列表。

 - copy: src: "{{item}}" dest: "/etc/logrotate.d/{{item}}" owner: root group: root mode: ugo=r with_items: - foo - bar 

您可以为这些参数定义variables,但是您仍然需要在每次调用模块时使用这些variables。 这允许您一次覆盖很多地方的值。