基于主机数的Ansible Add参数

时间:2019-03-06 11:03:58

标签: ansible

我需要根据主机清单中存在的主机数量将参数传递给node-id

考虑到我们有3个主机,则将node-参数设置如下 如何基于主机清单动态地实现相同目标?

shell: init-cluster -cluster-name lbcluster -dbname {{ dbname }} -dbtype postgresql -dbhost {{ dbhost }} -dbport {{ dbport }} -dbuser {{ dbuser }} -dbpass {{ dbpass }} -zk-servers {{ zk-servers }} -storage-strategy {{ storage-strategy }} -storage-hdfs-uri hdfs://{{ hdfs-namenode }}:8020 -storage-hdfs-root /root -overwrite -node-id  host1 -node-id host2 -node-id host3

1 个答案:

答案 0 :(得分:1)

一种选择是使用“ set_fact ”并准备命令。从常见变量开始

- set_fact:
    my_command: "init-cluster -cluster-name lbcluster -dbname {{ dbname }}
                 -dbtype postgresql -dbhost {{ dbhost }} -dbport {{ dbport }}
                 -dbuser {{ dbuser }} -dbpass {{ dbpass }} -zk-servers {{ zk-servers }}
                 -storage-strategy {{ storage-strategy }}
                 -storage-hdfs-uri hdfs://{{ hdfs-namenode }}:8020
                 -storage-hdfs-root /root
                 -overwrite"

并循环“ groups.all ”(使列表符合您的需求)。

- set_fact:
    my_command: "{{ my_command + ' -node-id ' + item }}"
  loop: "{{ groups.all }}"
- debug:
    var: my_command
- command: "{{ my_command }}"