Ansible 新手,如何批量给不同主机分配 IP?

2019-03-13 17:11:43 +08:00
 saytesnake
貌似 Ansible 区很冷清...

目前有三台机器:

A:192.168.1.1 ( Ansible 操作机)
B:192.168.1.2
C:192.168.1.3

现在 B 机器跟 C 机器需要给另外一个网卡分配一个 IP。

或许我有个 shell 脚本可以一键给目标机器的指定网卡(已假设网卡名都是一样的)设置 IP 并重启网络,IP 在 shell 脚本设定好,但如果我用 Ansible 批量执行的话那怎么办?如何才能批量分配不同 IP ?

我目前的想法是,把要设定的 IP 都写在某个文本上,shell 读取,但这个跟 Ansible 应该怎么配合呢?

我还不太会用 playbook,还是用显得古老的 "ansible xxx -m raw -a xxx" 或 "ansible xxx -m script -a xxx.sh"。

好菜,感觉没啥思路...
5571 次点击
所在节点    Linux
14 条回复
rootit
2019-03-13 17:14:30 +08:00
这种事情 我感觉 shell 脚本更适合,更快能实现需求
saytesnake
2019-03-13 17:26:14 +08:00
@rootit shell 脚本能实现多机器批量更改不同的 IP 嘛?会不会用到 sshpass 之类的?
dracher
2019-03-13 17:31:46 +08:00
scalaer
2019-03-13 17:59:12 +08:00
https://github.com/mggger/playbooks/blob/master/update_host.yml

不知道这个能不能满足你的需求
ik
2019-03-13 18:37:54 +08:00
咦 这种需求也能满足吗?
那么旧 ip 和新 ip 怎么对应呢?
xcai
2019-03-13 20:27:54 +08:00
for 循环生成变量
saytesnake
2019-03-13 21:41:42 +08:00
@dracher 啊...完全不懂。
@mggis0or1 得研究一下。
@ik 没有旧 IP,都是新的 IP,给另外一个网卡。
ik
2019-03-13 22:10:48 +08:00
#7 哦 这样…
ik
2019-03-13 22:11:23 +08:00
似乎还是会有如何对应的问题
h807892124
2019-03-13 23:30:41 +08:00
用 ansible 管理过一批服务器,网络很简单,都是在同一个 24 掩码的网段下,做过批量配置 hostname,用 ip 的最后一个数区分服务器,参考下面的命令。用 ansible 采集的服务器信息(设置用 gather_facts: yes 开启这功能)获取机器的 IP。
- hostname: name=node-{{ ansible_default_ipv4.address.split('.')[-1] }}

另一个场景和你这个差不多,用另一张网卡配置存储的网络,也是单独的一个 24 掩码网段,和原来的 IP 一一对应,还是用本机的 IP 信息设置了另一个网段的 IP。如 192.168.2.3 --> 10.0.1.3
hljjhb
2019-03-14 13:07:32 +08:00
是给每个 host 分配 list 中不同的元素?以下严格依赖顺序

---
- hosts: test
vars:
ip_pool:
- 1.1.1.1
- 2.2.2.2
- 3.3.3.3
tasks:
- name: dispatch ip
shell: "echo {{ ip_pool[play_hosts.index(inventory_hostname)] }}"
saytesnake
2019-03-15 17:00:47 +08:00
@h807892124
@hljjhb

谢谢,研究 playbook 中,这个很有帮助
rootit
2019-03-16 19:29:13 +08:00
@saytesnake shell 直接 ssh 过去然后执行命令即可,for 循环 如果用密码 先写好 ip 和密码对应关系,如果密钥直接 ssh 即可 如果第一次登录需要 expect 即可 完全可以实现
zfaka
2019-12-16 18:11:39 +08:00
@dracher 这个只能配置 debian 系的,RedHat 系的怎么配置大佬,没找到模块

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/544221

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX