forked from EaglesWing/blueEagleAutomate
-
Notifications
You must be signed in to change notification settings - Fork 1
tabniu/blueEagleAutomate
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
一:介绍 "蓝鹰(下称平台)" 是一个运维平台化、任务自动化的一般解决方案, 主要面向运维人员; 主要解决资产管理、服务器登陆信息管理、任务自动化和日志可视化、信息收集等;详情见 '平台简介' 采用B/S + C/S模式开发; 前端(angularjs + semantic): 后台数据和平台功能展现, 运行环境为谷歌浏览器; webServer(python tornado): 用于和前端数据交互, 运行环境为linux; 需要安装python模块(见平台安装与启动); tcpServer(python twisted): 用于前端和client端数据交互, 运行环境为linux 需要安装python模块(见平台安装与启动); tcpClient(python Epoll + threading): 接收前端任务请求及任务调用,运行环境为linux; 若主机客户端模式为no, 则采用ssh方式调用任务(见平台简介); 不需要安装python模块, 使用os自带的python版本即可; 不能和tornado部署在同台服务器上; 部署方式1: 在平台上配置登陆信息; 平台主机管理-客户端管理-部署客户端; 部署方式2: 拷贝daemon.py和comm_lib.py到eagleclient目录; 拷贝eagleclient目录到客户端服务器进行部署; 执行python client.py start 二:平台安装与启动 安装: 平台采用mysql数据库, mysql版本应该为5.6及以上, 数据库字符集为'utf8'(包含client/connection); 时间和os保持一致为标准时间; 平台为python实现, 版本为2.7.*到python3(不包含); 运行环境准备: linux系统; 安装mysql5.6以上版本; 安装python2.7.* 需要安装的python模块有: tornado MySQL-python torndb futures tenjin PyCrypto pexpect twisted(linux下源码安装:http://twistedmatrix.com/trac/wiki/Downloads) 启动: 首次启动前修改配置文件: config/db_config.xml: 数据库配置文件, 按照配置文件内说明填写 config/tornado/config.xml: tornado配置文件, 按照配置文件内说明填写 config/twisted/config.xml twisted配置文件, 按照配置文件内说明填写 eagleclient/config/config.xml client配置文件, 按照配置文件内说明填写 首次启动前生成表信息: sql/exec_sql.sh: 修改配置文件后, 执行exec_sql.sh生成数据库表信息; cd sql; sh exec_sql.sh 注: 此操作会预设平台登录用户admin、组admin和verify_key; 也就是会重置admin登录信息、admin组成员和后台认证key信息,非首次操作需谨慎; 启动tornado: python eagle_tornado.py start 可选参数有<start|stop|restart|debug> 启动twisted: python eagle_twisted.py start 可选参数有<start|stop|restart|debug> 注1: 平台不支持windows, 运行系统环境为linux 注2: 平台有文件上传功能, 若你对平台设置了nginx/apache类代理, 代理服务器需要支持文件上传功能; 否则, 你在进行文件上传操作时候需要直接访问tornado服务器地址, 上传文件大小不超过300M; 特别注意: 需要确保os和db时间(包含数据库连接会话时间)一致, 统一为标准时间; 这对自动化任务至关重要; 三:平台简介 此项目不足之处会持续优化完善, 不定期更新, 这里只是平台能力简单介绍, 后续整理详细资料(帮助手册)集成到平台内部; 若你在使用过程中发现不足之处或BUG, 可以邮件到2414417456@qq.com, 也可以帮助修改更新, 共同完善项目, 在这里表示感谢!(*^__^*) 平台体验环境: 地址:http://54.200.219.196:7010 admin/admin 由于没考虑浏览器兼容性, 建议使用谷歌浏览器访问/高版本的IE, 其他厂商浏览器未测试过; 为了环境安全考虑, 此环境不能进行用户密码修改和文件上传操作; vm带宽问题, 首次访问时候加载比较慢(加载css/js文件, 浏览器缓存文件后就没这问题了); 登录页: 默认只有admin用户能登录, 登录前会提示设置密码, 应该保管好admin用户密码; 其他用户需要admin使用用户组管理添加用户信息才能登录, 首次登录会提示设置密码; 首页: 首页界面为预留页面, 目前为空白; 权限管理: 用户组管理: 管理平台用户组信息 key管理: 管理后台接口认证key信息; 权限分配: 对平台用户进行权限分配, 粒度最小化到每个请求, 组可以自定义; 其中admin组拥有平台所有权限; 通知管理: 设置消息接收信息, 邮箱/微信; 主要用于任务执行完成后通知平台用户; 资产管理: 资产管理: 管理资产信息; 统计资产信息; 资产变更记录; 也可以根据业务特征设置资产显示顺序; 登录管理: 设置资产里服务器登录信息, 可以对单/多台服务器设置登录信息; 单台服务器登录信息设置 在登录管理界面搜索ip信息后使用 "登录设置/修改" 功能; 默认登录管理: 根据资产特征, 设置多台服务器登录信息; 在默认登录管理界面过滤资产信息后设置; 登录信息可以为静态登录信息和动态获取登录信息; 若为动态获取, 则需要分别上传user/port/pwd获取工具; 工具执行返回值应该为0, 并且只能有一行信息输出; 登录信息获取/设置规则: 若资产ip设置了单独的登录信息, 则使用此信息进行登录服务器; 否则, 从默认登录管理获取; 默认登录管理中, 登录信息获取规则为最小化到最大化匹配获取; 如: 有资产信息A: a产品线-a业务-a应用-a机房-a负责人 有资产信息B: a产品线-a业务-a应用-a机房 资产A设置了登录信息, B没设置: 在获取资产内服务器登录信息时候, 资产B和A登录信息都为A所设置的; 资产A设置了登录信息, B也设置: 在获取资产内服务器登录信息时候; 资产A登录信息为A所设置的; 资产B登录信息也为A所设置的; 资产A没设置登录信息, B设置: 在获取资产内服务器登录信息时候, 资产B和A登录信息都为B所设置的; 初始化管理: 应用场景: 服务器配置还为默认出厂设置, 对服务器配置信息做初始化操作; 服务器初始化: 对服务器配置信息做初始化操作 初始化工具: 执行初始化操作的工具 初始化登录: 服务器的初始登录信息, 支持静态/动态获取设置; 主机管理: 对业务使用中的资产进行分类管理; 此时, 资产相当于ip 池, 主机为任务管理的操作对象 操作顺序: 添加主机分类; 添加主机组; 添加主机/成员; 主机分类: 对主机组进行分类管理, 可进行迁移操作; 迁移后, 当前分类下的所有主机组(包含主机)将会变更到新的分类下 主机组: 对主机进行管理, 可进行迁移操作、查看组员客户端状态、部署客户端操作; 主机组模式: 添加主机/成员时候会继承当前模式, 若需修改可以添加主机/成员后对主机使用变更操作; yes: 为yes则说明需要部署client, 执行任务时候使用socket和client通信方式; no: 为no则说明不需要部署client, 执行任务时候使用ssh登录服务器操作方式; 缺点: 此模式下执行任务时候, 若登录超时会多尝试2次, 效率慢; 客户端状态/部署客户端操作: 此操作对象为当前主机组下的所有主机; 迁移: 迁移后, 当前主机组下的所有主机主机将会变更到新的主机组下; 注: id栏lable为主机组模式; 主机/成员: 主机组下的服务器信息, 可进行迁移操作、查看组员客户端状态、部署客户端、添加标签操作; 主机模式, 同上; 添加主机/成员时候会继承当前主机组模式, 若需修改可主机使用变更操作; 客户端状态/部署客户端操作: 此操作对象为当前主机; 迁移: 迁移后, 当前主机将会变更到新的主机组下; 标签: 可以对当前主机添加一个或多个标签信息; 注: 成员栏lable为 资产应用类型和主机模式 权限配置: 主机组服务器配置提供可控的对外开发的权限能力(添加规则); 包含文件的下载, 更新, 调用; 添加规则时候执行perl正则 权限信息: 主机组服务器配置规则为前提, 对所配置的规则进行管理操作; 如: 配置日志下载权限, 供开发使用 任务管理: 需要确保os和db时间一致, 这对自动化任务至关重要; 任务创建: 在创建任务之前需要先进行"关联任务"操作, 关联之前应先使用自定义任务上传任务文件; 任务执行对象为主机组或主机; 任务执行时间: 立即执行: 任务创建后立即运行任务 设置任务执行时间: 创建任务后, 到了执行时间才运行 关联任务: 任务依赖: 若开启此功能, 则调用任务时候所有主机的执行会产生依赖, 即上一步完成后才进行下一步任务; 若上一步任务有主机执行失败, 则所有主机停止任务执行; 若没开启此功能, 主机间任务执行互不影响; 任务推送路径: 任务文件都推送到此路径下调用, 登录用户权限需要配置正确; 并且, 主机模式为no时候需要确保此文件路径存在; 默认为/tmp/${relevance_id}/${task_name}/ ${relevance_id}:关联任务ID, ${task_name}:任务名称 任务执行范围: 控制当前步骤任务需要在什么应用服务器上运行; 为空则为所有类型都运行, 默认为空; 是否执行: 当前步骤任务是否需要执行, 若为no, 则只进行文件推送操作, 默认为yes; 信息收集: 当前任务执行结果进行信息收集操作(收集规则见 '信息收集'); 为空则不进行, 默认为空 预处理任务: 每个关联任务可以设置一个预处理任务和多个预处理文件推送, 按需设置; 预处理任务及其推送文件在任务执行时间前调用; 预处理任务执行时间: 单位为分, 在任务执行时间前多少分执行预处理任务; 推送文件: 推送文件为经预处理任务生成的文件, 推送文件路径为预处理任务生成文件的绝对路径; 任务记录: 自动化任务执行记录 此页面每隔5秒会自动刷新, 默认不显示确认为完成的任务; 取消执行: 取消执行当前任务, 若任务在运行, 则到服务器上停止任务(kill方式) 重新执行: 重新执行当前任务, 当前任务下的所有任务重新执行 确认完成: 当不需要对任务进行操作时, 使用此功能; 修改任务执行时间: 修改任务状态为非runing的任务执行时间 详情: 展示当前任务的详细信息, 包含主机信息和任务文件执行信息; 详情界面6秒刷新一次; 显示任务日志: 点击详情页面任务信息, 动态显示当前任务log; 下载日志: 下载当前任务的执行日志 重新执行: 重新执行当前服务器上当前任务的当前步骤任务文件; 这里不同于任务记录的'重新执行'功能, 这里属于单独执行次任务文件; 自定义任务: 上传任务文件到服务器, 为任务关联提供, 相当于任务池; 信息收集: 通过任务配置信息收集模板或接口使用此功能; 格式: json格式或a=>b:::c=>d格式(相当于一维哈希;且只支持一维) 模板管理: 设置信息收集的模板 信息收集: 展示收集信息 故障处理: 简单的处理故障记录 使用接口提交故障到平台(见接口), 然后使用此功能 接口: 获取主机组信息: http://{{tornado_ip}}:{{tornado_port}}/interface/get_group_info?line={{line_name}}&product={{product_name}}&app={{app_name}}&group={{group_name}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 line_name: 产品线名称, 必须 product_name: 业务名称, 必须 app_name: 主机分类名称, 必须 group_name: 主机组名称, 必须 key_value: 后台认证key(verify_key)的值, 必须 资产查询: http://{{tornado_ip}}:{{tornado_port}}/interface/asset_search?verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 key_value: 后台认证key(verify_key)的值, 必须 组成员导入: 可以配合资产查询使用 assetapp 为资产的app, app 为主机组分类 http://{{tornado_ip}}:{{tornado_port}}/interface/group_member_add?ine={{line_name}}&product={{product_name}}&group={{group_name}}&name={{member_ip}}&app={{app_name}}&assetapp={{assetapp}}&c_user={{opertion_user}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 line_name: 产品线名称, 必须 product_name: 业务名称, 必须 app_name: 主机分类名称, 必须 group_name: 主机组名称, 必须 member_ip: 需要导入的主机ip opertion_user: 操作用户(平台用户) assetapp: 资产应用类型(asset_search获取) key_value: 后台认证key(verify_key)的值, 必须 获取ip登录信息: http://{{tornado_ip}}:{{tornado_port}}/interface/get_server_loginfo?iplist={{iplist}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 iplist: 需要获取登录信息的ip, 多个用逗号分割 key_value: 后台认证key(verify_key)的值, 必须 获取主机组成员信息: http://{{tornado_ip}}:{{tornado_port}}/interface/get_server_info?line={{line_name}}&product={{product_name}}&app={{app_name}}&group={{group_name}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 line_name: 产品线名称, 必须 product_name: 业务名称, 必须 app_name: 主机分类名称, 必须 group_name: 主机组名称, 必须 key_value: 后台认证key(verify_key)的值, 必须 获取产品线-业务信息: http://{{tornado_ip}}:{{tornado_port}}/interface/get_login_list?verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 key_value: 后台认证key(verify_key)的值, 必须 获取主机分类-主机组信息: http://{{tornado_ip}}:{{tornado_port}}/interface/get_servergroup_info?line={{line_name}}&product={{product_name}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 line_name: 产品线名称, 必须 product_name: 业务名称, 必须 key_value: 后台认证key(verify_key)的值, 必须 信息收集: http://{{tornado_ip}}:{{tornado_port}}/interface/add_informationcollect?ip={{ip}}&template_id={{template_id}}&info={{info}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 ip: 收集信息的ip地址, 必须 template_id: 信息收集模板id, 必须 info: 收集的信息, 必须 key_value: 后台认证key(verify_key)的值, 必须 添加故障: http://{{tornado_ip}}:{{tornado_port}}/interface/fault_add?ip={{ip}}&name={{name}}&key={{key}}&des={{des}}&verify_key={{key_value}} tornado_ip: tornado服务器ip地址, 必须 tornado_port: tornado服务器端口号, 必须 ip: 发生故障的ip地址, 必须 name: 故障名称(可自定义), 必须 key: 故障key(可自定义), 可选 des: 故障简单描述, 可选 key_value: 后台认证key(verify_key)的值, 必须 后台工具(serverlogin): usage: -[h|H] 查看帮助 登录方式1(默认): -[l|L] 菜单方式登录主机组服务器 f 菜单登录下,跳转到首级菜单 p 菜单登录下,跳转到上级菜单 e 菜单登录下,退出菜单 登录方式2: --ip 指定需要操作的服务器IP地址(资产内的ip信息,逗号分割),如(--ip '192.168.1.1,192.168.1.2') 主机组操作: -[g|G] 指定需要操作的主机组名称,如(-g group1) -[a|A] 和-[g|G]一起使用,若你确定当前group唯一或对当前匹配的组进行操作 --line 和-[g|G]一起使用指定group所属的产品线 --product 和-[g|G]一起使用指定group所属的业务 --app 和-[g|G]一起使用指定group所属的类型 -[c|C] 登录方式2/主机组操作 登录服务器并执行命令 -[f|F] 登录方式2/主机组操作 登录服务器并执行文件 -[n|N] 和-[f|F]一起使用, 只传文件,不执行
About
运维平台
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- JavaScript 54.2%
- CSS 37.0%
- Python 6.4%
- HTML 2.3%
- Shell 0.1%