v1.5.0(20220528)
如果您是老用户,请根据下面步骤升级,如果您是新用户请根据【安装部署】-【基础平台安装】文档全新安装。v1.5.0版本变化较大,并且涉及到底层更新较多,请务必完成更新。老版本将不再支持。
升级步骤¶
必须严格按顺序执行,先更新PaaS代码,再执行更新操作,因为更新脚本都是在PaaS这个项目上。
更新opsany-paas¶
- 更新最新版本代码
cd /opt/opsany-paas && git pull
如果本地修过脚本中的密码,可以执行git checkout filename,更新完毕之后再修改。
2.重新下载SaaS软件包,请查收更新通知邮件,或者在社区群获取。
OpsAny推崇熟人社交,拒绝陌生人,我们坚信技术人就应该相互学习,彼此协作。所以最新消息以社区微信群为第一通知渠道。没有找到社区群入口?在官网下载申请后,收到的邮件中有二维码哦,也或许是因为缘分还未到,把问题留给时间。
3.进行ESB更新。ESB更新会替换配置,并重新导入ESB相关的SQL。
cd /opt/opsany-paas/install
./saas-esb-update.sh
4.更新Websocket镜像,此版本提高了稳定性。
cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env
#停止并删除websocket容器
docker stop opsany-paas-websocket && docker rm -f opsany-paas-websocket
#根据实际情况,删除对应的镜像,请修改为正确的镜像地址和版本
docker rmi ${PAAS_DOCKER_REG}/opsany-paas-websocket:v3.2.11
#使用新镜像启动websocket服务
docker run -d --restart=always --name opsany-paas-websocket \
-p 8004:8004 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \
-v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
-v ${INSTALL_PATH}/conf/settings_production.py.websocket:/opt/opsany/websocket/config/prod.py \
-v ${INSTALL_PATH}/conf/settings_production.py.websocket.init:/opt/opsany/websocket/config/__init__.py \
-v /usr/share/zoneinfo:/usr/share/zoneinfo \
-v /etc/localtime:/etc/localtime:ro \
${PAAS_DOCKER_REG}/opsany-paas-websocket:v3.2.12
5.更新login镜像,此版本增加了移动端登录支持。
cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env
#停止并删除老的login容器,版本根据实际修改。
docker stop opsany-paas-login && docker rm -f opsany-paas-login
docker rmi ${PAAS_DOCKER_REG}/opsany-paas-login:v3.2.11
#使用新镜像启动login服务
docker run -d --restart=always --name opsany-paas-login \
-p 8003:8003 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \
-v ${INSTALL_PATH}/conf/settings_production.py.login:/opt/opsany/paas/login/conf/settings_production.py \
-v /etc/localtime:/etc/localtime:ro \
${PAAS_DOCKER_REG}/opsany-paas-login:v3.2.12
启动最新版本Proxy¶
最新版本的Proxy将替代之前启动的SaltStack容器,Proxy支持单独部署,下面根据使用OpsAny的MySQL和Redis的配置。如果单独部署,请查看Proxy部署文档。
-
停止老的SaltStack服务
docker stop opsany-saltstack && docker rm opsany-saltstack # 修改之前的SaltStack的挂载目录名称,和Proxy保持一致,保证SaltStack的证书可以正常挂载到新的Proxy中去。 cd /opt/opsany/ && mv salt-volume/ proxy-volume
-
创建Proxy的数据库并授权,如果执行失败,可以手工创建该数据库并授权。
export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}
mysql -h "${MYSQL_SERVER_IP}" -u root -e "CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -h "${MYSQL_SERVER_IP}" -u root -e "grant all on opsany_proxy.* to opsany@'%' identified by "\"${MYSQL_OPSANY_PASSWORD}\"";"
- 准备Proxy的配置文件
Proxy会自动根据目标主机的IP地址确定使用LOCAL_IP还是使用PUBLIC_IP与其进行通信。
#请修改为Proxy内网地址,用于内网主机和Proxy通信。
PROXY_LOCAL_IP=10.0.0.80
#请修改为Proxy外网地址,用于外网主机和Proxy通信。如没有外网IP,请填写为内网IP。
PROXY_PUBLIC_IP=120.92.89.12
# 配置Proxy配置文件。
cd /opt/opsany-paas/install/
cp -r ./conf/proxy/ ${INSTALL_PATH}/conf/
sed -i "s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
# 配置Proxy使用的脚本中的数据库配置。
cd /opt/opsany-paas/saas/
cp invscript_proxy.py ${INSTALL_PATH}/conf/proxy/
sed -i "s/LOCALHOST/${MYSQL_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
sed -i "s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
# 建议验证一下,查看sed更新的是否都成功了。IP地址和用户名密码是否正确。不正确有可能是环境变量未设置。
cat ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
cat ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
- 启动Proxy服务并进行初始化
# 启动Proxy容器
docker run --restart=always --name opsany-proxy -d \
-p 4505:4505 -p 4506:4506 -p 8010:8010 \
-v ${INSTALL_PATH}/logs:${INSTALL_PATH}/logs \
-v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \
-v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \
-v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \
-v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \
-v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \
-v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \
-v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
-v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \
-v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \
-v /etc/localtime:/etc/localtime:ro \
${PAAS_DOCKER_REG}/opsany-proxy:1.1.17
# 初始化Proxy数据库
docker exec -e OPS_ANY_ENV=production \
opsany-proxy /bin/sh -c "/usr/local/bin/python3 /opt/opsany-proxy/manage.py makemigrations && /usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate"
- 修改OpenResty配置并重新创建。
/bin/cp /opt/opsany-paas/install/conf/nginx-conf.d/nginx_proxy.conf ${INSTALL_PATH}/conf/nginx-conf.d/
sed -i "s/LOCAL_IP/${PROXY_LOCAL_IP}/g" ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf
sed -i "s/DOMAIN_NAME/${DOMAIN_NAME}/g" ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf
cat ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf
docker stop opsany-openresty && docker rm opsany-openresty
docker run -d --restart=always --name opsany-openresty \
-p 80:80 -p 443:443 -p 8011:8011 -p 8012:8012 \
-v ${INSTALL_PATH}/logs:/opt/opsany/logs \
-v ${INSTALL_PATH}/conf/nginx-conf.d:/etc/nginx/conf.d \
-v ${INSTALL_PATH}/conf/nginx.conf:/etc/nginx/nginx.conf \
-v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
-v /etc/localtime:/etc/localtime:ro \
${PAAS_DOCKER_REG}/openresty:1.17.8.2-alpine
如果遇到Openresty无法启动,请检查配置文件是否正确。
vim ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf
更新1.5.0 最新版本应用¶
在开发中心,挨个上传部署,或者使用saas-update.sh脚本进行批量更新。注意修改脚本中的admin密码。
./saas-update.sh base
saas-update.sh脚本的本质是通过API帮用户在开发中心进行上传部署,所以需要修改脚本中的admin密码,如果admin开启了MFA,请临时关闭后,再操作。
集成最新版本Proxy到管控平台¶
- 获取Proxy访问的密钥
docker exec -e OPS_ANY_ENV=production \
opsany-proxy /bin/sh -c " /usr/local/bin/python3 /opt/opsany-proxy/manage.py create_access" | grep 'Access' | awk -F ': ' '{print $2}' | awk -F '.' '{print $1}'
执行完毕后,会自动输出Proxy Token,请在【管控平台】-【采控管理】-【控制器】编辑默认控制器,填写Proxy的IP地址和Token。
- Proxy地址(外网): https://IP:8011
- Proxy地址(内网网): https://IP:8011
- Proxy密钥: 脚本输出的Proxy Token。不要增加引号!
如果你创建完毕之后忘记了Token,可以这样获取
docker exec -e OPS_ANY_ENV=production opsany-proxy /bin/sh -c " /usr/local/bin/python3 /opt/opsany-proxy/manage.py get_access"
- 旧数据同步
将主机同步到对应的Proxy的数据库中去。已经纳管的主机,可能需要进行重新纳管一下,也建议重新安装最新版本Agent。
cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env
cd /opt/opsany-paas/saas/
python3 sync_proxy_hosts.py --mysql_ip ${MYSQL_SERVER_IP} \
--mysql_port 3306 \
--control_username control \
--control_password ${MYSQL_OPSANY_CONTROL_PASSWORD} \
--control_db_name control \
--proxy_username opsany \
--proxy_password ${MYSQL_OPSANY_PASSWORD} \
--proxy_db_name opsany_proxy
更新最新版本Agent(必须更新)¶
最新版本Agent默认不再安装Zabbix Agent。由用户自行决定,并且最新版本的Agent。也不再依赖主机上的Python环境,已经自带Python环境。如遇到低版本Linux系统无法启动问题,可以在社区群中交流。
cd /opt/opsany/uploads/ && mv agent agent-bak
wget https://opsany-saas.oss-cn-beijing.aliyuncs.com/opsany-agent-1.3.0.tar.gz
tar zxf opsany-agent-1.3.0.tar.gz
初始化脚本和作业¶
OpsAny从1.5.0版本之后,默认内置常用脚本和作业,升级用户可以进行手工初始化导入。
# 如果没有Python3需要提前安装。
yum install mysql-devel python-devel gcc gcc-devel python3-devel -y
pip3 install mysqlclient
# 修改为OpsAny平台admin的密码
ADMIN_PASSWORD=admin
cd /opt/opsany-paas/install/init/
python3 import_script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} \
--target_type script --target_path ./job-script
python3 import_script.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} \
--target_type task --target_path ./job-task
v1.5.0版本更新记录¶
重大改进:¶
- 管控平台:控制器(Proxy)完成重构。
- Agent重构,不在依赖主机系统上的Python。
- 工作台:增加移动端支持(企业微信、钉钉)。
功能新增:¶
- 管控平台:提供独立Proxy安装部署脚本和卸载脚本,一键添加Proxy。
- 工作台:增加移动端支持,可以集成企业微信和钉钉。
- 管控平台、基础监控:增加网络设备管理和监控功能。
- 基础监控:重新开放服务拨测功能。
- 管控平台:主机管理分组改成左侧树形式展示同时支持多级分组。
- 基础监控:主机监控左侧树增加数字统计。
- 大屏展示:增加智能监控大屏和工单统计分析大屏。
- 作业平台:增加内置作业和内置脚本,实现开箱即用。
- 应用平台:应用详情左侧关联关系增加数字统计功能。
- 作业平台:作业市场和作业编排支持导入和导出功能。
缺陷修复和功能优化:¶
- 智能巡检:快速巡检与定时巡检选择巡检实例的弹框优化以及回显展示优化。
- 作业平台:选择目标主机弹框样式优化以及回显展示优化。
- 资源平台:孤岛分析选择模型分析下拉展示模型分组。
- 工作台:工单系统修复提单时字段不显示问题。
- 资源平台:自动采集选择执行主机弹框样式优化以及回显展示优化。
- 基础监控:概览页主机类型数量统计不对已修复。
- 管控平台:资产采集选择调试目标弹框以及回显展示样式优化。
- 云管平台:更新到阿里云、腾讯云最新版本SDK。
- 工作台:工单流程的第一个步骤,去除字段增加的限制,可以自由创建字段。