Ansible批量主机机器到Jumpserver
1、背景
在现代 IT 环境中,随着机器数量的增加和复杂性的提高,手动管理和配置机器变得越来越困难和耗时。为了提高效率并确保一致性,自动化工具成为了不可或缺的一部分。Jumpserver 是一个功能强大的堡垒机和服务器管理平台,可以帮助管理员更好地管理和控制远程机器。
最近,我们面临着一个挑战:需要将一批新的机器(约 K 台)导入到 Jumpserver 中,并按照预定义的分组进行组织。手动逐个导入这些机器将是一项繁琐且容易出错的任务。为了解决这个问题,我们决定使用自动化脚本来批量导入机器到 Jumpserver,并根据分组进行组织。
2、环境准备
Ansible
|
|
Jumpserver 版本(3.8.1)
3、操作流程
jumpserverAPI 文档 ⚓︎ https://docs.jumpserver.org/zh/master/dev/rest_api/
1、获取 Jumpserver 的 token
需要替换 网站地址 和 用户 账号 和 密码。
(注意):Jumpserver 的版本不一样,接口文档的参数也会变得,请依照自己的版本接口调试。
|
|
2、创建所有机器的模板账号
所有的机器可以统一使用同一 账号来管理。账号可以使用 ,密码或秘钥。根据自己情况来操作,我们这边需要这个模板账号的 id 进行绑定,这样就可以在 Jumpserver 中远程访问机器。
步骤 1
步骤 2
步骤 3
我们需要这个 id 号。
3、自动创建分组和机器脚本
add_jms_hosts.sh (会参入三个参数 分组名称 IP 地址 主机名称) 注意:这个脚本必选 配合 jq 。请先安装完成使用
|
|
主机名称作为 id 来的,所以值必选唯一,请注意
|
|
执行 demo
|
|
4、Ansible 批量跑脚本
上面的脚本已经实现,现在就批量跑数据。(注意,使用 Ansible 跑,但是有个问题,有些不成功) 最后使用 shell 脚本来处理 的
Ansible 的 hosts 定义
|
|
Ansible 的剧本文件(注意 hosts 的定义,我是按分组单个执行)
|
|
|
|
执行的 demo
|
|
上执行完毕,但是有问题,我 90 台机器,但实际添加的只有 30 台,其余是执行正常的,但是没有添加。
或者使用下面的
|
|
5、shell 执行批量数据
如果上面的执行还是不行,那就使用 下方的方式 100 % 可以。
我先使用 ansible 跑出 分组 ip 和 主机名称
|
|
执行
|
|
|
|
bash star_add.sh 注册到 jumpserver 上
4、总结
我们的解决方案是编写一个脚本,该脚本可以读取包含机器信息的文本文件,并使用 Jumpserver 提供的 API 进行自动导入。脚本首先通过逐行读取文本文件来获取每台机器的相关信息,例如 IP 地址、主机名和分组。然后,它使用 Jumpserver 的 API 调用来创建新的机器对象,并将其分配到相应的分组中。
通过使用这个自动化脚本,我们可以大大减少手动操作的工作量,并确保导入的机器被正确地组织到 Jumpserver 中的相应分组中。这不仅提高了操作效率,还降低了出错的风险,并提供了一致性和可追溯性。
总结起来,通过编写自动化脚本来批量导入机器到 Jumpserver,并根据预定义的分组进行组织,我们能够提高工作效率、降低错误率,并确保一致性和可追溯性。这个解决方案为我们节省了宝贵的时间和精力,使我们能够更好地管理和控制远程机器。