小编udo*_*dan的帖子

ansible blockinfile 禁用标记

我是ansible 的新手,但是我能够成功使用blockinfile函数。但是我不知道如何防止插入标记。我阅读了文档,但它似乎没有描述它。

这就是 blockinfile 写入的每个文件中显示的内容。

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
Run Code Online (Sandbox Code Playgroud)

ansible

15
推荐指数
1
解决办法
2万
查看次数

在 Ansible 中将主机作为变量引用的正确方法是什么?

我对 Ansible 还很陌生,对于这个特定脚本的流程,我有点进退两难。我们有一个要部署到每个主机的证书列表;这些对于每个主机都是唯一的,因此 1:1 传输。

# hostfile
[prod]
host_a
host_b
host_c
Run Code Online (Sandbox Code Playgroud)

目前,我正在这样做,作为group_vars我角色的一部分:

haproxy:
  prod:
    certs:
      host_a:  a.my.endpoint.com.pem
      host_b:  b.my.endpoint.com.pem
      host_c:  c.my.endpoint.com.pem
Run Code Online (Sandbox Code Playgroud)

然后在任务中引用它:

- name: upload haproxy server certificates
  copy:
    src: "{{haproxy[env].certs[inventory_hostname]}}"
    dest: "/etc/haproxy/ssl/{{haproxy[env].certs[inventory_hostname]}}"
    backup: yes
  notify:
    - restart haproxy
  tags:
    - haproxy
Run Code Online (Sandbox Code Playgroud)

这很好用,但我不喜欢它。我主要不喜欢它,因为它迫使您记住在两个地方(hostfile 和 vars 文件)更新主机。我考虑的是将主机定义为 var in group_vars,但我不完全确定我可以在文件中引用 vars 吗?所以像:

hosts:
  host_a
  host_b
  host_c

haproxy:
  prod:
    certs:
      {{ hosts.host_a }}:  a.my.endpoint.com.pem
      {{ hosts.host_b }}:  b.my.endpoint.com.pem
      {{ hosts.host_c }}:  c.my.endpoint.com.pem
Run Code Online (Sandbox Code Playgroud)

然后当我开始这项任务时,这让事情变得更加复杂。我假设我可以更改我的任务为每个主机都有一个单独的副本,就像 a 一样when: {{ inventory_host }} …

ansible

4
推荐指数
1
解决办法
9178
查看次数

标签 统计

ansible ×2