Ansible 在配置中替换行的一种简单方法
我有一个json,如下所示:Ansible 在配置中替换行的一种简单方法,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我有一个json,如下所示: { "bootstrap": true, "server": true, "datacenter": "aws", "data_dir": "/var/consul", "log_level": "INFO", "enable_syslog": true } 这是在ansible清单文件中的3台服务器上,如下所示: [consul] 10.0.0.1 10.0.0.2 10.0.0.3 现在,为了让节点加入集群,我
{
"bootstrap": true,
"server": true,
"datacenter": "aws",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true
}
这是在ansible清单文件中的3台服务器上,如下所示:
[consul]
10.0.0.1
10.0.0.2
10.0.0.3
现在,为了让节点加入集群,我还必须实际添加以下配置行
"start_join": ["ip_of_other_node_1", "ip_of_other_node_2"]
这将在3台服务器中的每一台上进行
所以基本上这意味着,如果10.0.0.1
是集群中的一个节点,它的配置将如下所示
{
"bootstrap": true,
"server": true,
"datacenter": "aws",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["10.0.0.2","10.0.0.3"]
}
我试图通过ansible对此进行如下解释:
- name: Add the ip's of other servers to join cluster
lineinfile:
path: /etc/consul.d/server/config.json
regexp: '^"enable_syslog"'
insertafter: '^"enable_syslog"'
line: '"start_join": ["{{ groups['consul'][1] }}", "{{ groups['consul'][2] }}"]'
when: inventory_hostname == '{{ groups['consul'][0] }}'
这并不能真正帮助我解决第行的语法错误:,我不确定通过ansible实现这种效果的最佳方法是什么,也不确定当我增加库存中的服务器时如何处理这种情况。您可以使用替换服务器上的配置文件,而不是用正则表达式就地更改它。通过这种方式,您可以使用常规的
jinja2
模板添加一个任务,使用包含主机文件元素(或任何其他更复杂配置)的start\u join
字段生成一个新的配置文件。标题表明问题是关于“替换配置中的一行”;问题主体显示原始文件中有6行,预期文件中有7行。确切地说,哪一行被替换为什么?