跳转至
首页 解决方案 下载 文档
演示环境

使用问题

1. OpsAny的权限体系是怎么设计的?我应该如何给用户授权。

  1. 用户的角色和权限

用户角色有:管理员、普通用户、开发者三种角色。

  • 管理员角色:可以看到所有数据(参考下面的数据权限),但并不能看到所有页面,需要创建权限策略进行授权(参考下面的页面权限)。
  • 普通用户角色:只能看到授权的页面和授权的数据。
  • 开发者角色:类似普通用户角色,但是可以打开开发中心。

  • OpsAny的权限分为两种:

  • 页面权限:设置用户可以看到哪个平台的哪个页面和哪个按钮。页面权限通过【统一权限】平台进行设置,依据RBAC(Role-Based Access Control)的设计模式,通过创建“权限策略”进行授权。
  • 数据权限:设置用户可以看到的具体实例。例如哪些主机、哪些脚本、哪些应用等等。实例权限是通过【资源平台】创建授权策略进行授权。例外:【堡垒机】是独立的通过自身权限策略进行授权。

  • 总结:管理员角色默认可以看到所有的数据,不需要进行数据授权,但是能访问的页面需要进行页面授权。普通用户角色需要页面授权和数据授权。这个设计和公有云是有区别的,目前大多数公有云是没有CMDB概念的,所以授权的时候,是页面权限和数据权限一起授权。但是在OpsAny中,数据权限由【资源平台】CMDB进行统一管理。

2. 忘记admin密码怎么办?

首先,新安装的平台,在安装完成后,会自动修改密码,并且输出出来,同时会将自动修改的密码写入到【$INSTALL_PATH/conf/.passwd_env】文件中。(这个是为了防止,用户安装完毕后忘记修改初始化密码,导致默认密码admin造成的弱口令安全风险。)

如果你自行修改了密码,而且忘记了密码怎么办呢?我们提供了重新初始化admin用户密码的脚本,在opsany-paas-login的容器中。

# 登录进容器里面
docker exec -it opsany-paas-login /bin/sh

# 设置环境变量,并执行初始化脚本,密码会被初始化为: 123456
cd /opt/opsany/paas/login
export BK_ENV="production"
python init_admin.py

#退出容器
exit

3. 如何替换HTTPS证书?

将证书替换到\({INSTALL_PATH}/conf/nginx-conf.d/ssl/路径下,以\)DOMAIN_NAME进行命名的,并重启容器。 docker restart opsany-base-openresty

例如演示环境的证书,安装完毕之后,会申请HTTPS证书,然后下面这样进行替换。

[root@demo ~]# /bin/cp 7310312_demo.opsany.com.pem /data/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.pem
[root@demo ~]# /bin/cp 7310312_demo.opsany.com.key /data/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.key
[root@demo ~]# docker restart opsany-base-openresty

4. 如何查看日志文件

日志文件在安装目录下的logs目录下,每个平台都有一个独立的目录存放日志。以平台的APPID命名。查看日志技巧:

  • 1.先将日志清空,确保不被旧的日志影响。
  • 2.在界面上执行相关操作,查看产生的日志。
  • 3.将日志发送到社区微信群,寻找协助。
ls /data/opsany/logs

- 统一权限(rbac)
- 工作台(workbench)
- 资源平台(cmdb)
- 管控平台(control)
- 作业平台(job)
- 基础监控(monitor)
- 云管平台(cmp)
- 堡垒机(bastion)
- 应用平台(devops)
- 流水线(pipeline)
- 持续部署(deploy)
- 制品仓库(repo)

案例:
[root@ops ~]# ls -l /data/opsany/logs/control/
总用量 2184
-rw-r--r-- 1 root root 117858 11月  3 11:54 celery-beat.log   #定时任务日志,例如作业平台执行定时作业,云管平台自动同步云主机。
-rw-r--r-- 1 root root 414197 11月  3 11:54 celery.log        #后台任务日志,例如云管同步主机,管控平台纳管主机,添加监控等。
-rw-r--r-- 1 root root   7126 11月  2 21:41 component.log     #系统不可用,通常看这个日志
-rw-r--r-- 1 root root 827069 11月  3 11:54 control.log       #功能有异常,通常看这个日志,会有具体的报错。
-rw-r--r-- 1 root root 438828 11月  3 11:54 nginx-access.log 
-rw-r--r-- 1 root root      0 11月  2 21:18 nginx-error.log
-rw-r--r-- 1 root root      0 11月  2 21:18 nginx-supervisor.log
-rw-r--r-- 1 root root 318597 11月  3 11:54 uwsgi.log         #进程启动日志,通常服务无法启动时查看。
-rw-r--r-- 1 root root      0 11月  2 21:18 wb_mysql.log

5. 堡垒机连接目标主机失败,如何排查?

堡垒机连接目标主机失败的原因列表如下:

  • 远程主机22端口不通
  • 用户名或密码错误
  • 证书错误
  • SSH协议不支持

排查方法:

手工登录验证测试

docker exec -it opsany-paas-websocket /bin/sh
ssh root@目标主机

6.重新安装操作系统后,堡垒机无法连接?

重新安装操作系统之后,主机指纹发生变化,会导致堡垒机无法进行连接,为了安全性考虑。暂时没有自动忽略该问题,需要重启websocket解决。

docker restart opsany-paas-websocket

7.为什么主机纳管成功,但是堡垒机连接失败?

首先,主机纳管和堡垒机连接的底层实现是不同的。

  • 主机纳管:通过Proxy,Proxy通过Agent/SSH等方式连接到目标主机。
  • 堡垒机:通过Websocket,Websocket容器通过SSH/Telnet等协议连接到目标主机。

例如SSH纳管失败,需要从proxy容器去测试。堡垒机连接失败,需要从websocket容器去测试。

8.ITSM工作台-工单流程设计中的API字段如何正确使用?

  • Opsany只做获取数据的过程,所以我们仅支持GET请求。

  • API的来源可以是任何的地方,如果您选择平台外部,需要认证的可以额外提供Header参数。

  • 抽取数据键名,则是为了声明,我们需要怎么去获取数据,如:

# API实际返回
{
  "code": 200,
  "api_code": 20000,
  "data": [
      {
          ....
      }
  ]
}

# 点击连接测试后将会返回:
{
    "status": true,
    "message": "发送请求成功",
    "data": {
        "code": 200,
        "api_code": 20000,
        "data": [
            {
                ....
            }
        ]
    }
}

# 则您需要在 "抽取数据键名" 处填写: data.data
因此,您的所有键值均不能含有英文点
- 点击连接测试后,可在【api数据返回展示】中检验格式是否正确,若格式错误则下拉菜单内容为空。 - 对于返回的数据类型,不同的类型可以显示为不同的样式,但是键值是必须要有的:

# 下拉菜单(单选)和 下拉菜单(多选)数据结构一样,需要如下所示的数据结构
# 其中key和name均为必须参数且key为全局唯一,如果不是该结构,则无法使用。
[
   {
      "key": "key1",
      "name": "name1"
   },
   {
       "key": "key2",
       "name": "name2"
    },
    {
       "key": "key3",
       "name": "name3"
    }
]
# 级联菜单所需如下所示的数据结构
# 其中key和name以及children均为必须参数且key为全局唯一
[
    {
       "key": "key1",
       "name": "name1",
       "children": [
          {
             "key": "key1.1",
             "name": "name1.1"
          },
          {
             "key": "key1.2",
             "name": "name1.2"
          },
          {
             "key": "key1.3",
             "name": "name1.3"
          }
       ]
    },
    {
       "key": "key2",
       "name": "name2",
       "children": [
             {
                "key": "key2.1",
                "name": "name2.1"
             },
             {
                "key": "key2.2",
                "name": "name2.2"
             },
             {
                "key": "key2.3",
                "name": "name2.3"
             }
       ]
    },
    {
       "key": "key3",
       "name": "name3",
       "children": [
          {
             "key": "key3.1",
             "name": "name3.1"
          },
          {
             "key": "key3.2",
             "name": "name3.2"
          },
          {
             "key": "key3.3",
             "name": "name3.3",
             "children": [
                {
                      "key": "key3.3.1",
                      "name": "name3.3.1"
                },
                {
                      "key": "key3.3.2",
                      "name": "name3.3.2"
                },
                {
                      "key": "key3.3.3",
                      "name": "name3.3.3"
                }
             ]
          }
       ]
    }
 ]
  • 特殊说明:我们不会对您的数据进行保存以及校验,所以您的API中返回数据中key,以及name均不能含有:空格,竖线(|),英文点(.)等特殊字符。
  • 备注:key的值全局唯一,包括级联菜单。
  • 测试地址:
    # 下拉菜单(单选和多选)测试地址案例
    https://DMOAIN_NAME/o/workbench/api/workbench/v0_1/api-fields-example/
    
    # 级联菜单测试地址案例
    https://DMOAIN_NAME/o/workbench/api/workbench/v0_1/api-fields-tree-example/
    

9. 为什么我录入了物理机、机柜、区域、机房但是视图无法展示?无法批量操作?

在资源平台中录入的数据需要进行关系的设置后,才能在视图进行展示。主机视图和物理视图,均是根据机房-区域-机柜这样的从属关系进行数据展示。在资源仓库进行批量设置关系时也是一样的。例如你可能想把很多物理机批量的放置到某一个机柜上,但是无法选择机柜,也是因为该机柜并没有关联区域,或者区域并没有关联机房。所有的数据没有关系导致的。

10. 为什么我给物理机、虚拟机、云主机增加了自定义字段,但是主机视图中不显示该字段?

由于OpsAny的主机分为了物理机、虚拟机、云主机三种类型,所以在视图管理中,仅展示这三个模型相同的字段,如果只给某一个模型例如虚拟机增加了一个自定义字段,那么在视图是不展示的,在资源仓库是展示的。


Document