自动化运维作业中心
什么是作业中心

面对越来越复杂的业务场景,运维过程中对自动化的需求也越来越大,行云管家作业中心是在现有云资源管理平台基础上,形成的一个能够支持批量脚本执行、文件分发的基础运维工具,希望借助这个工具,能够满足一些批量、快速的简单自动化运维场景。

目前作业中心主要包含“脚本库”、“命令控制台”、“脚本控制台”、“文件分发控制台”四部分,它们分别用于处理不同场景下的批量操作业务。

脚本库

脚本是实现自动化运维的基础,运维人员经常通过脚本来替代以往一些需要手工操作的业务,提升工作效率。脚本库是脚本的容器,团队所有的脚本皆位于脚本库中。脚本库有两类:预设脚本库、个人脚本库,预设脚本库是系统内置的一些业界知名脚本,供用户日常使用,用户也可以创建个人脚本库,来编写自己的脚本。

查看预设脚本库

目前行云管家为用户预设了业界知名的SaltStack脚本库,这些脚本库足够满足日常运维的需求,后期还将视情况继续加入更多优秀的脚本库。

创建个人脚本库

如果需要对脚本进行分类,可创建新的脚本库。

脚本库授权

脚本库作为团队的一种“资源”,也存在进行授权的需求,您可以进入“团队设置/权限管理/脚本库授权”。

点击“指定角色”,在打开的授权界面上,选择授权目标后,点击“确定”即可。

查看脚本

行云管家暂时只支持shell和python两种类型的脚本,系统默认会准备一些常用的脚本库资源,方便用户的使用。

在某个脚本库中,您可点击需要查看的脚本,右侧将会打开一个新的tab页来展示该脚本的详情,您可在标签页进行脚本的编辑或直接执行该脚本。

创建新的脚本

如果您要创建新的脚本,请点击上方的“创建新的脚本”,输入脚本名称、类型以及所属脚本库后点“创建”即可,建议用户在本地将脚本调试完成后再保存到行云管家;

脚本创建完成后,在输入脚本内容的同时,建议您设置好脚本的默认超时时间和脚本说明,其中脚本说明可以填写脚本的作用和参数说明,这样能够方便自己和团队其他成员在执行脚本时,快速了解如何使用该脚本。

脚本控制台

拥有了可执行的脚本后,我们可以通过脚本控制台来将这些脚本在已导入到行云管家中的主机上执行:

脚本设置

在执行脚本之前,您需要对脚本做一些简单的设置,点击“脚本控制台”,打开脚本执行控制台,选择需要执行的脚本、设置脚本超时时间、脚本参数,如果您对脚本设置不熟悉,可以展开“脚本说明”,查看脚本的使用说明。因此,建议大家在编辑脚本时,能够尽量丰富脚本说明。

选择主机

目前行云管家支持通过主机的Agent和SSH快捷方式来执行脚本(延伸阅读:什么是行云管家Agent什么是主机访问快捷方式),因此,您的主机需要至少满足以下一个条件才能执行脚本:

1、主机已经安装了行云管家Agent;

2、主机支持SSH协议,且已经创建了SSH快捷方式,并填写了登录凭证(用户名、密码或密钥);

主机列表默认会将团队中所有主机列出,如有需要,您可以通过云账户或标签来过滤。执行脚本前,您需要为主机指定好执行方式(Agent或SSH快捷方式,建议优先使用Agent)并选中前面的复选框,只有勾选的主机才会被执行脚本;

执行脚本

选择好脚本、设置脚本超时时间、脚本参数,并选择需要执行的主机后,点击“立即执行”即开始执行脚本。

查看脚本执行结果

脚本执行时,在控制台将自动打开一个新的tab,展示该次执行的进度和结果,如果您已经将此tab关闭,可以通过右侧的“脚本执行历史”再次将其打开。

命令控制台

相比脚本控制台,命令控制台是一种更加轻量的批量执行方法,用户无需提前编写命令,而是可以随时对所选主机执行任何命令,主机输出界面更友好,方便实时查看命令输出。

1、打开“命令控制台”,点击添加主机图标,将需要执行的主机加入到控制台中(同样需要满足已安装Agent或拥有SSH快捷方式的要求);

2、根据客户端浏览器分辨率,设置适合的子窗口布局;

3、输入命令,如“ls”,您可以实时的查看当前路径下的文件;

命令控制台属于个人所有,所选主机和界面布局设置将被保存,方便您下次继续使用。如有需要,您还可以创建新的命令控制台,团队内其他成员无法查看您的命令控制台。

文件分发控制台

在现实场景中,经常需要将文件批量分发到多台主机中,如安装补丁包。在行云管家中,可以借助文件分发控制台来完成这一功能;

1、打开“文件分发控制台”,首先,您需要先将需要分发的文件传输到控制台中,目前支持“本地文件”、“网盘文件”、“主机文件”三种文件上传途径;

2、填写目标主机文件分发的路径,所有的文件将会被传输到指定的路径,您还可以设置目标主机存在重名文件和路径不存在时的处理策略;

3、和前面两个控制台不同的是,文件分发仅支持通过主机Agent来完成,因此您需要确保目标主机已经安装了Agent并处于正常运行状态,主机选择完毕后,点击“立即分发”图标即开始将文件分发至所选主机;

4、查看文件分发情况和脚本执行一致,会在文件分发控制台右侧打开新的Tab页签来展示。

文件采集控制台

在文件批量操作场景中,除文件分发外,还存在从多台主机中批量采集某些共同特征文件的情况,如:定期收集多台主机上的日志文件。在行云管家中,我们可以通过文件采集控制台来实现这个需求。

1、打开“文件分采集控制台”,可以看到一个流程化的界面,分别是:选择源主机、设置待采集的文件规则、设置文件的网盘存储目录;

2、在“源主机”节点中,点击“选择”,弹出主机选择对话框,选择要批量采集文件的主机。需要注意的是,由于文件采集需要Agent支持,因此请确保待选主机已经安装了行云管家Agent且运行正常;

3、在“待采集的文件”节点中,输入待采集的文件/文件夹完整路径,点击“添加”即可,可重复添加多个采集目标,支持Windows/Linux操作系统。所选主机中如果存在这些文件/文件夹,将会全部采集,若不存在,将跳过继续采集下一个目标;

4、在“目标网盘”中,点击“设置”,设置文件存放到网盘的路径,可选团队网盘、任何一台主机网盘中的任意位置,文件采集完毕后,请前往该网盘地址下载已采集的文件;

5、采集条件设置完毕后,点击“立即采集”即开始从所选主机中采集文件,并最终存放在目标网盘中;

6、采集进度和结果将以新的tab页签的形式进行展示,同时在审计日志中也将提供记录。

常见问题
1、什么是SaltStack脚本库?

SaltStack是业界知名的IT基础架构集中化管理平台,在SaltStack运行环境中,拥有一套非常完善的函数库,包含了日常运维领域的常见操作,行云管家将其作为预设脚本库的形式提供给用户,便于用户使用这些脚本进行日常运维操作。

进入作业中心,在左侧导航中,将可直接看到“预设脚本库(SaltStack)”,选中后,将展现脚本库中的所有Package和脚本。

2、在行云管家中使用SaltStack的先决条件是什么?

想要在主机上执行SaltStack脚本,请确保以下几点:

a、只有Linux主机才能执行SaltStack脚本;

b、主机上需要安装行云管家Agent 如何安装Agent

c、主机已经安装了Python2.6或以上版本;

3、如何在命令控制台中使用SaltStack?

行云管家允许用户直接在命令控制台中执行SaltStack,用户只需在命令输入框中执行:salt-local <module>.<function> <params> 即可,示例:salt-local ip.get_routes。

4、如何在脚本控制台中使用SaltStack?

在脚本控制台中,用户只需选择“预设脚本库(SaltStack)”,即可使用SaltStack脚本资源。

5、在用户自己的脚本中如何使用SaltStack?

目前行云管家支持两种自定义脚本:shell脚本和python脚本,在需要的时候,这两种脚本均可引用SaltStack脚本,具体引用方式如下:

shell脚本:脚本中直接输入salt-local <module>.<function> <params>

python脚本:在python脚本文件头部加入以下声明

import sys
sys.path.append('/usr/local/YunAgent/salt/bin')
from saltlocal import getSaltCall

需要运行SaltStack脚本的地方输入:

caller = getSaltCall('/usr/local/YunAgent/salt')
caller.run(['<module>', '<function>'])
6、文件采集控制台中如何使用通配符来定义待采集的文件(夹)?

在文件采集控制台中,我们支持用户使用通配符来定义待采集的文件,具体规则如下:

  • *:匹配指定目录下文件名中0或多个字符;
  • **:匹配指定目录及其子目录下文件名中0或多个字符;
  • ?:匹配文件名中的一个字符;

我们来看下面这个例子,有4个文件,分别是:

1、bar.txt;

2、src/bar.c;

3、src/baz.c;

4、src/test/bartest.c;

对于这些文件,我们可以通过以下的通配符规则来匹配其中若干个文件:

  • *.c:无法匹配,因为*只能在当前目录下进行匹配,而当前目录下没有.c文件;
  • src/*.c:匹配文件2和3,在src下存在src/bar.c和src/baz.c两个文件;
  • */*.c:匹配文件2和3 ,因为*只在当前目录下进行匹配,文件4位于子目录,因此无法匹配;
  • **/*.c:匹配文件2、3和4,因为**可以在子目录下进行匹配;
  • bar.*:匹配文件1;
  • **/bar.*:匹配文件1和2 ;
  • **/bar*.*:匹配文件1、2和4;
  • src/ba?.c:匹配文件2和3,因为?可以匹配任意一个字符 ;