自定义脚本之普通用户重启苍穹服务脚本原创
金蝶云社区-吴辉宇
吴辉宇
1人赞赏了该文章 738次浏览 未经作者许可,禁止转载编辑于2022年11月23日 11:09:36

背景:出于安全考虑,有些伙伴或客户不能提供root用户管理苍穹,只提供普通用户,那么针对这种普通用户, 怎么在部署服务时可以重启苍穹呢?


前提条件:普通用户具备sodu权限


解决方案:通过ansible调用命令重启服务

ansible是一款基于python开发的自动化运维工具,集合了众多运维工具的有点,实现了批量系统配置,批量程序部署,批量命令运行等功能使用ansible,可以帮助我们实现跨服务连接时的交互问题,实现跨机器重启苍穹服务。


操作步骤如下:

1. 首先我们需要安装ansible工具,

    若操作系统是centos,可以使用命令“yum install ansible”安装工具。

    若操作系统是ubuntu,可以使用命令“apt install ansible”安装工具。


2. 安装完成后,修改ansible的配置信息。打开文件/etc/ansible/hosts文件,配置服务器连接信息,ansible可以配置单个服务,也可以配置多个服务组。有兴趣的同学可百度学习下。不管是单个服务器还是服务器组,服务器信息配置格式如下:

图片.png

serverIp ansible_ssh_user='user' ansible_ssh_port=port ansible_ssh_pass='password' ansible_become_pass='password'

其中:

    serverIp为服务器的IP地址,

    user为登录服务器的用户名,

    port为ssh的端口,

    password是用户的登录密码,这里ansible_ssh_pass是指用户的登录密码,ansible_become_pass为用户执行sudo命令时的密码


3. 第二步修改完成后,那么我们就可以进行验证了,ansible的命令使用方式为:ansible  IP/服务组 -m 命令类型 -a "执行内容"。例如我要服务器的IP地址,那么命令可以是ansible 172.20.14.40 -m shell -a "hostname -I"

图片.png


4. ansible配置完成后,我们怎么把这个工具应用到cosmicstudio这个工具里呢?在苍穹环境管理,选中环境,点击“管理”按钮,针对所需要的服务,点“高级配置”,在打开的对话框中,输入脚本即可。这样在构建部署时发现有自定义的服务脚本,执行重启命令时就会调用编写的自定义脚本了。

图片.png

图片.png


5. 以下是参考脚本:将脚本内容直接复制粘贴后,维护以下参数:

mservicepath:苍穹服务的安装目录。

cosmichost:苍穹服务所在机器的主机IP


脚本分两部分

1. 配置cuslibs:根据部署时的补丁包,需要自动修改CUSLIBS的值,服务重启才有效。

2. 使用ansible调用命令重启苍穹服务。(注意:如果是其他服务的自定义脚本,可以直接复制ansible的内容就可以了。)


#请维护以下参数
#-----------------------------
# 苍穹服务目录
mservicepath=
# 苍穹服务所在主机的host
cosmichost=

################################################

echo "修改setappenv.sh, 更新CUSLIBS值"
jarName=${jarName}
if [ ! -z ${jarName} ]; then
	cuslibs=$(ansible ${cosmichost} -m shell -a "cat ${mservicepath}/bin/setappenv.sh|grep CUSLIBS" --become --become-user=root --become-method=sudo|grep "CUSLIBS")
	if [ -z "${cuslibs}" ]; then
		cuslibs=${jarName}
		ansible ${cosmichost} -m shell -a "echo \"export CUSLIBS=${cuslibs}\" >> ${mservicepath}/bin/setappenv.sh" --become --become-user=root --become-method=sudo
	else
		if [[ ! ",${cuslibs}," =~ ",${jarName}," ]]; then
			newcuslibs=${cuslibs},${jarName}
			ansible ${cosmichost} -m shell -a "sed -i \"s/${cuslibs}/${newcuslibs}/g\" ${mservicepath}/bin/setappenv.sh" --become --become-user=root --become-method=sudo
		fi
	fi
fi

#调用systemctl命令重启苍穹服务
ansible ${cosmichost} -m shell -a "systemctl ${optype:-restart} mservice" --become --become-user=root --become-method=sudo


6. 若服务不是mservice,脚本中只需要重启命令这部分就可以了,不需要修改CUSLIBS。例如针对MC服务,脚本可以如下,将servicename值定义为mc。

#请维护以下参数
#-----------------------------
#服务名称
servicename=
# 服务所在主机的host
servicehost=

################################
#调用systemctl命令重启苍穹服务
ansible ${servicehost} -m shell -a "systemctl restart ${servicename}" --become --become-user=root --become-method=sudo



赞 1