有没有办法在 ansible inventory group_vars 文件中使用动态变量
Is there a way to use dynamic variables in ansible inventory group_vars files
在我学校的计算机实验室,我最近负责管理一个服务器集群,并且发现 ansible
对我有很大帮助。作为新手,我需要以下场景的帮助:
集群中的服务器都应该根据特定条件几乎相同地配置。
为了将一些变量应用于集群中的所有机器,我学会了使用 group_vars
文件和 inventory
。不过,有个情况我还没想好怎么办。
根据这些服务器预期处理的具体操作,一些变量应设置为适合所需条件的值;每个条件的值都可以设置为一个变量。经过一番思考,我得出的结论是最简单的方法是使用 ansible-playbook
的 -e
选项(即外部变量)。
但我遇到困难的地方是根据给定的操作条件变量的值,使 group_vars
文件中的相应变量采用新值。
让我们调用操作条件变量opv
。 group_vars 文件中的变量比方说 var0
、var1
、var2
- 对于
opv=0
、var0=v00
、var1=v01
、var2=v02
- 对于
opv=1
、var0=v10
、var1=v11
、var2=v12
- 对于
opv=2
、var0=v20
、var1=v21
、var2=v22
等等
有没有一种优雅的方法可以实现上述目标?提前感谢任何 tips/hints。我愿意挖。所以,只有指针是很棒的。
您应该切换到 yaml 格式而不是 ini,这样您就可以在 group_vars.
中轻松使用 vars 甚至 jinja 模板
#group_vars/all.yml
var0: "v{{ opv }}0"
var1: "v{{ opv }}1"
var2: "v{{ opv }}2"
在我学校的计算机实验室,我最近负责管理一个服务器集群,并且发现 ansible
对我有很大帮助。作为新手,我需要以下场景的帮助:
集群中的服务器都应该根据特定条件几乎相同地配置。
为了将一些变量应用于集群中的所有机器,我学会了使用 group_vars
文件和 inventory
。不过,有个情况我还没想好怎么办。
根据这些服务器预期处理的具体操作,一些变量应设置为适合所需条件的值;每个条件的值都可以设置为一个变量。经过一番思考,我得出的结论是最简单的方法是使用 ansible-playbook
的 -e
选项(即外部变量)。
但我遇到困难的地方是根据给定的操作条件变量的值,使 group_vars
文件中的相应变量采用新值。
让我们调用操作条件变量opv
。 group_vars 文件中的变量比方说 var0
、var1
、var2
- 对于
opv=0
、var0=v00
、var1=v01
、var2=v02
- 对于
opv=1
、var0=v10
、var1=v11
、var2=v12
- 对于
opv=2
、var0=v20
、var1=v21
、var2=v22
等等
有没有一种优雅的方法可以实现上述目标?提前感谢任何 tips/hints。我愿意挖。所以,只有指针是很棒的。
您应该切换到 yaml 格式而不是 ini,这样您就可以在 group_vars.
中轻松使用 vars 甚至 jinja 模板#group_vars/all.yml
var0: "v{{ opv }}0"
var1: "v{{ opv }}1"
var2: "v{{ opv }}2"