我有一组服务器正在移动到另一个网络。我有一个文件,其中包含主机名和相应的新 IP 地址。我研究了如何使用 Ansible 实现这一目标,但这需要每个服务器都有独特的剧本。尝试编写脚本但同样的问题。
有人可以建议例如。假设您可以 root 身份登录,如何从外部服务器更改 2 个以上服务器的 IP 地址。
Ansible 剧本是首选。
答案1
假设我们的库存中有serverA
、serverB
和。serverC
他们需要新的 IP 地址。
因此,第一步是在您的host_vars
目录中创建一个以您的服务器命名的文件,并将新的 IP 地址作为变量写入其中。
文件示例host_vars/serverA
:
new_ip: 10.1.0.27
对相应的地址执行相同的serverB
操作。serverC
如果需要,您还可以将其扩展为网络接口名称。
接下来,创建一个使用先前定义的变量的剧本。这ip
不存在,我只是在这里演示该变量的使用。请参阅Ansible 文档如果有适合您需要的模块,否则使用command
/ shell
。
- name: Change IP
hosts: serverA serverB serverC
become: yes
tasks:
- name: Set new IP adress
ip: "{{ new_ip }}"
interface: eth0
另外,请做好失去连接的准备ansible
。这个问题来自SO展示如何处理该问题并保持连接运行。