gpt4 book ai didi

bash - 如何正确使用 ansible 主机名模块?

转载 作者:行者123 更新时间:2023-12-03 16:03:29 25 4
gpt4 key购买 nike

我正在尝试使用 ansible 修改十几个新创建的虚拟机的主机名,但我无法理解如何正确循环。

这是我写的剧本:

---
- hosts: k8s_kvm_vms
tasks:
- name: "update hostnames"
hostname:
name: "{{ item }}"
with_items:
- centos01
- centos02
...

结果是它使用每个主机名更新每个主机。所以如果我有 12 台机器,每个主机名在剧本的末尾都是“centos12”。

我希望这种行为基本上产生与以下相同的结果:
num=0
for ip in ${list_of_ips[*]}; do
ssh $ip hostnamectl set-hostname centos${num}
num=$((num+1))
done

如果我自己用 bash 写

The answer on this page让我相信我必须在我的剧本中包含所有 IP 地址。在我看来,脚本的优势在于即使 IP 发生变化,我也可以拥有相同的主机名(我只需将 IP 地址复制到/etc/ansible/hosts 中),我可以在其他剧本中重复使用这些主机名。我已经阅读了主机名模块上的 ansible 页面,但他们的示例让我相信我必须为每个单独的 IP 地址定义一个任务,而不是使用循环。如果是这种情况,为什么要在 bash 脚本上使用 ansible?

ansible hostname module

最佳答案

您可以为 list 中的每个服务器创建一个新变量,例如

[k8s_kvm_vms]
server1 new_hostname=centos1
server2 new_hostname=centos2

剧本:
---
- hosts: k8s_kvm_vms
tasks:
- name: "update hostnames"
hostname:
name: "{{ new_hostname }}"

关于bash - 如何正确使用 ansible 主机名模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com