如何将基于计数的所有容器的主机名添加到nginx上游

时间:2018-06-26 17:14:29

标签: docker nginx ansible

我有一个ansible脚本,它使用其主机名创建n个docker容器,并且还创建了一个nginx服务器。我正在使用j2模板推送一个新的conf。

如何在上游部分中将主机名动态添加到该conf?

upstream abc {
 server abc1.abc.com:181;
 server abc2.abc.com:181;

}

因此,如果我将计数更改为3,则应添加abc3

upstream abc {
 server abc1.abc.com:181;
 server abc2.abc.com:181;
 server abc3.abc.com

}

1 个答案:

答案 0 :(得分:0)

您可以使用lineinfile模块和sequence插件来实现。我想主机名将始终具有相同的模式,因此您可以执行以下操作:

vars:
  container_count: 5 
  # You can set here the amount of containers you want to deploy

- name: Generate conf
  lineinfile:
    path: /you_conf_file_path/file.conf
    insertafter: '^upstream abc {'
    line: "server abc{{ idx + 1 }}.abc.com"
  with_sequence: count="{{ container_count }}"
  loop_control:
    index_var: idx

希望这可以为您指明正确的方向...

来源:SequenceLineinfile