我需要根据主机清单中存在的主机数量将参数传递给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
答案 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 }}"