场景:我们需要在同一组里面执行两个host,然而我们的host IP是一样的。只是传递的变量值不同,这个时候我们该如何解决呢?
[nova-compute]
192.168.112.48 cluster_name=compute_cluster
192.168.112.48 cluster_name=edge_cluster
第一个方法
首先我想到的方法是我只传递一次,但是我把变量的值放一起,传递到ansible的时候再用spilt分割出来
比如这样的
[nova-compute]
192.168.112.48 cluster_name=compute_cluster,edge_cluster
这种方法确实可以解决问题,但是总觉得有点怪,代码不太正规
有没有更好的方式呢?答案是有的
有经验的程序员,会给出第二种解法
第二个方法(屌屌的)
[nova-compute]
my_compute_cluster ansible_host=192.168.112.48 cluster_name=compute_cluster
my_edge_cluster ansible_host=192.168.112.48 cluster_name=edge_cluster
使用hostname作为ansible playbook的inventory entry key,这样这个inventory就可以执行两次。简单粗暴的解决问题。真是太棒了