TenSunS对接JumpServer:如何把主机自动同步到JumpServer


概述

后羿 - TenSunS(原ConsulManager)是一个使用Flask+Vue开发,基于Consul的WEB运维平台,弥补了Consul官方UI对Services管理的不足;并且基于Consul的服务发现与键值存储:实现了Prometheus自动发现多云厂商各资源信息;基于Blackbox对站点监控的可视化维护;以及对自建与云上资源的优雅管理与展示。

仓库地址:https://github.com/starsliao/TenSunS

目录

云主机自动同步JumpServer能做什么?

  • 当您在云上购买了新的ECS时,需要手动在JumpServer中创建新资产来纳管该ECS。
  • JumpServer同步功能可以把阿里、腾讯、华为云的ECS资源自动同步到JumpServer中,免去手动创建资产的操作。
  • 当您在云厂商界面新增、删除、修改ECS后,都会及时的自动同步到JumpServer中。

同步JumpServer功能如何开启?

<img width="584" alt="72b7ccbc370982566fece2325191d0d" src="https://img-home.csdnimg.cn/images/20230724024159.png">

如何获取JumpServer永久token?

  • 登录JumpServer所在的主机,执行以下命令:
docker exec -it jms_core /bin/bash   #非容器化部署的JumpServer,不执行该行。
cd /opt/jumpserver/apps
python manage.py shell
from users.models import User
u = User.objects.get(username='admin')   #admin换成你的JumpServer管理员用户名。
  • 该账号没有创建过token的执行以下命令:u.create_private_token()
  • 该账号已经创建过token的执行以下命令:u.private_token
  • 记录PrivateToken:后面的部分。(最后的>不要)

什么是JumpServer的管理用户(v3版叫账号模版或特权用户)?

  • 管理用户(v3版叫账号模版 或 特权用户)是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来 推送系统用户获取资产硬件信息 等。
  • 为了方便您也可以只使用管理用户(v3版叫账号模版 或 特权用户),不创建推送账户;但要注意在使用JumpServer登陆该资源后,即是管理账号,权限是sudo root。
  • 手动创建资产的时候需要给每台ECS选择一个管理用户(v3版叫账号模版 或 特权用户),注意:必须先在ECS上创建好这个账户,JumpServer才能管理这台ECS。 72b7ccbc370982566fece2325191d0d

注意:JumpServer3.x不再用管理账号,请在管理用户ID填写账号模版的ID即可。

JumpServer3.x请使用账号模板的ID:登录JumpServer-账号管理-账号模板-选择账号-基本信息-ID

在这里插入图片描述

接入JumpServer时,全局通用主机【管理用户】信息该如何填写?

在这里插入图片描述

  • 全局通用是指:全局是指所有的云账号,一般情况下所有的ECS会使用一个统一的管理用户(v3版叫账号模版 或 特权用户)来方便管理ECS。
  • Linux:需要创建一个有root权限的管理用户(v3版叫账号模版 或 特权用户)。
  • Windows:需要创建一个有管理员权限的管理用户(v3版叫账号模版 或 特权用户)。(v2版本可以随意选择一个管理用户,当登录失败时会提示你输入用户名密码)
  • 端口:即为ssh(linux)或者远程桌面(windows)的端口。
  • 管理用户ID:即管理用户的ID,不是用户名;点击刚创建的管理用户(v3版叫账号模版 或 特权用户)即可看到ID。 <img width="584" alt="72b7ccbc370982566fece2325191d0d" src="https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fuser-images.githubusercontent.com%2F3349611%2F180858937-856a7f9a-afa9-46d5-a15d-514f13063af5.png&pos_id=img-QR2MMS4B-1730655353184)">

  • 配置完成之后,所有的ECS信息同步到JumpServer时都会使用相应的端口和管理用户(v3版叫账号模版 或 特权用户)。

接入JumpServer时,全局特殊主机【管理用户】信息该如何填写?

72b7ccbc370982566fece2325191d0d

  • 对于部分主机可能会使用特殊的端口以及管理用户(v3版叫账号模版 或 特权用户)的情况,所以我们支持了根据主机名称关键字来匹配不同的登录端口和管理用户(v3版叫账号模版 或 特权用户)的功能。
  • 实例如下:
{
    "xxxaaa": {
        "linux": [
            ["ssh/22"],
            "b510418c-ea15-44d8-836a-5eb6138a6c56"
        ]
    },
    "xxxbbb": {
        "linux": [
            ["ssh/2626"],
            "b510418c-ea15-44d8-836a-5eb6138a6c56"
        ],
        "windows": [
            ["rdp/3389"],
            "21a7d079-319b-483f-b31c-bf92254f1ac7"
        ]
    }
}

说明: - 填写的内容必须是一个Json格式。 - 最外层的key:xxxaaaxxxbbb表示主机名的关键字,包含该关键字的主机均有效。 - 每个最外层key的value为固定格式:有windows或者linux系统的端口和管理用户(v3版叫账号模版 或 特权用户)ID,您只需要更换掉对应的端口号及管理用户(v3版叫账号模版 或 特权用户)ID即可。

接入JumpServer操作完成之后,我该做什么?

  • 完成接入后,您将看到已经接入过数据源的云厂商账号的信息,包括整体的系统、资源、状态信息,如图: 图片
  • 点击各云账号右侧的同步开关,填写节点信息和同步间隔后,即可进行首次同步(耗时依主机数而定,可在日志中查看进度)。
  • 新节点ID:节点即为JumpServer中,存放资产的目录。对于每个云账号必须新建一个节点来存放该账号的ECS,防止同步操作对已有节点的主机造成影响。
  • 在JumpServer-资产管理-资产列表-资产树中,右键点击根节点(Default),即可创建节点,对创建的节点点右键选择最后的显示节点详情即可查看节点ID。 图片
  • 同步完成后,即可在界面上看到资源数和同步的ECS数量,注意:JumpServer中已有的同名主机不会同步,如数量不一致,可在日志从查看同名主机信息。
  • 最后,可以登录JumpServer,找到对应到节点,查看同步后的主机信息,会根据云资源的分组信息把所有的ECS存放到对应的分组目录。

注意:云主机自动同步JumpServer功能仅是自动化了创建资产的操作,每台云主机的管理用户(v3版叫账号模版 或 特权用户),还需要用户自行在ECS中创建好;有使用账户推送(系统用户)的需要根据JumpServer的配置来自动或手动推送。


高级设置:不同云账号有不同的jumpserver管理账户的场景能否支持?

目前web界面上不支持这样的场景,不过后端是已经支持的,所以可以直接修改consul KV的方式来实现。

  • 访问consul的webUI http://x.x.x.x:8500/ui/dc1/kv/TenSunS/jms/
  • 该目录下可以看到2个键:全局管理用户(v3版叫账号模版 或 特权用户)信息:ecs_info,全局特殊管理用户(v3版叫账号模版 或 特权用户)信息:custom_ecs_info
  • 进入改目录下对应的云厂商以及云账户的目录
  • 把上面提到了两个键复制到云账户的目录下即可,并修改为需要的内容即可,注意内容的格式保持不变。
  • 下次同步时候会优先读取云账户目录下的管理用户(v3版叫账号模版 或 特权用户)信息。(需要登录jumpserver删掉已同步的主机。)
  • 我会尽快把这个功能做到web界面上。