首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

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

  •  
  •   saytesnake · 221 天前 · 1939 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。
    貌似 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"。

    好菜,感觉没啥思路...
    13 回复  |  直到 2019-03-16 19:29:13 +08:00
        1
    rootit   221 天前
    这种事情 我感觉 shell 脚本更适合,更快能实现需求
        2
    saytesnake   221 天前
    @rootit shell 脚本能实现多机器批量更改不同的 IP 嘛?会不会用到 sshpass 之类的?
        3
    dracher   221 天前
        4
    scalaer   221 天前 via Android
    https://github.com/mggger/playbooks/blob/master/update_host.yml

    不知道这个能不能满足你的需求
        5
    ik   221 天前 via iPhone
    咦 这种需求也能满足吗?
    那么旧 ip 和新 ip 怎么对应呢?
        6
    xcai   221 天前 via Android
    for 循环生成变量
        7
    saytesnake   221 天前
    @dracher 啊...完全不懂。
    @mggis0or1 得研究一下。
    @ik 没有旧 IP,都是新的 IP,给另外一个网卡。
        8
    ik   221 天前 via iPhone
    #7 哦 这样…
        9
    ik   221 天前 via iPhone
    似乎还是会有如何对应的问题
        10
    h807892124   220 天前   ♥ 1
    用 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
        11
    hljjhb   220 天前   ♥ 1
    是给每个 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)] }}"
        12
    saytesnake   219 天前
    @h807892124
    @hljjhb

    谢谢,研究 playbook 中,这个很有帮助
        13
    rootit   218 天前
    @saytesnake shell 直接 ssh 过去然后执行命令即可,for 循环 如果用密码 先写好 ip 和密码对应关系,如果密钥直接 ssh 即可 如果第一次登录需要 expect 即可 完全可以实现
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2359 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 280ms · UTC 14:50 · PVG 22:50 · LAX 07:50 · JFK 10:50
    ♥ Do have faith in what you're doing.