dashboard

全量模式下的dashboard

dashboard介绍

在简单模式下关于权限的分配需要在被授权的机器上存放用户的公钥,用户才能操控对应的机器。但是当用户太多,而且用户会有离职的情况。管理权限就变的比较麻烦。在这种情况下需要安装全量模式,全量模式比简单模式多出来的部分就是dashboard。
请在安装手册中安装完全量模式的安装,以下以安装在/home/work/mydan目录为例说明使用方式。

dashboard主要是处理三个问题:

1.agent安装
     dashboard起来后,页面上有一个安装链接,在每个机器上运行即可。普通用户也可以这么安装。

2.权限问题
    a. 登陆
    ashboard需要和公司内部的sso相连(如果没有sso,可以安装mydan的sso)。链接sso通过修改/home/work/mydan/dashboard/code/sso文件来实现。
    默认情况下这个code返回nobody,所以默认情况下每个人访问进去都是nobody这个用户。
    sso的code里面是一个函数,最后return的即为sso识别出来的用户,函数的输入参数是dashboard提供的cookie值。
    /home/work/mydan/dashboard/config.yml文件中的cookiekey值用来设置需要把哪个cookie传给sso的code。
    config.yml中的ssocallback 用来指名如果没有对应的cookie时回跳的地址。
    实现了这个sso code后每一个用户登陆进去都有一个自己唯一的存放公钥的地方。
    需要注意的是sso code返回的username需要和服务器上用户名对应,否则权限分配会失败。
    dashboard连接sso后用户登陆dashboard在setting页面存入自己的公钥。私钥存放在用户的家目录.ssh中。
    公钥私钥生成方式用linux系统中的ssh-keygen生成即可。
    生成的一对公钥私钥后,把公钥的内容在dashboard中保存,私钥重命名成.key后缀。
    本质上连接sso是为了让用户存自己的公钥在dashboard服务中。

    在不连接sso的情况下,可以把用户的公钥存放在dashboard服务器的/home/work/mydan/etc/dashboard/auth目录下,比如foo用户的公钥文件存放路径为/home/work/mydan/etc/dashboard/auth/foo.pub

    b.访问权限分配
    i.对接公司权限树 :
    访问权限的对接需要修改/home/work/mydan/dashboard/code/access文件,这个文件中是一个函数,函数输入参数是用户名,函数一个返回值为hash,hash的格式如: +{"host1": +{"user1": 1, "user2":1}, "10.10.10.1": +{"usr": 1}},可以通过修改这个部分对接公司的权限数服务。在没有权限数服务的情况下,默认提供了工具来管理用户的权限

    ii.使用系统默认权限管理:
    工具路径:/home/work/mydan/dashboard/tools/access
    参数说明:$0 [--user username] [--add work||--del root] [--access 10.10.1.1]
    1. ./access :没有任何参数的情况下,返回系统中用户列表
    2. ./access --user foo : 返回用户foo的权限分配情况
    3. ./access --user foo --add work --access 10.10.10.1 : 给用户foo添加10.10.10.1这台机器work用户的权限
    4. echo "10.10.10.1"|./access --user foo --add work : 给用户foo添加10.10.10.1这台机器work用户的权限
    5. cat iplist|./access --user foo --add work : 给用户foo添加iplist文件中的所有机器work用户的权限
    另:
    添加和删除是一样的 --add 和 --del
    一个用户只要一台机器的任何用户权限,也就有了这个用户本身的权限,比如给用户A 加上机器10.10.10.1的work用户权限,用户A就有了A用户和work用户的权限。

3.机器列表同步
    在dashboard中有一个完整的node机器管理。和dan目录下的使用方式一样。管理员在dashboard/node 里面维护项目机器。
    如果用户需要使用dashboard提供的机器列表,可以把自身的 /home/work/mydan/dan/node/service/synccache启动成一个服务。




另外:
在dashboard中的安装agent页面、设置token页面、查看hosts页面使用到了服务器地址这个信息,如果dashboard是用nginx做负载均衡的情况下,请在nginx的location中添加proxy_set_header Host $host:$server_port; , 否则sso跳转回来时会出错,在页面请求安装脚本也会出错。
dashboard管理员需要使用/home/work/mydan/dan/tools/release工具把客户端代码打包发布到dashboard中供agent和client安装。
对于普通用户,在dashboard中的脚本安装客户端活着agent端后,该脚本会修改dan/.config,修改对应的角色和把api地址改成dashboard的地址。