IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> batch_run,一种安全和自由的linux多机器批量部署开源工具 -> 正文阅读

[系统运维]batch_run,一种安全和自由的linux多机器批量部署开源工具

如果我有一台服务器,希望用它来处理特定事物(比如运行EDA工具),那么我可能需要:

* 查看和了解系统的基本信息

* 安装依赖的系统库

* 安装依赖的系统工具

* 启动或关闭系统服务

* ...

如果我有一批服务器,做同样的事情,我可能需要pssh或者ansible,但是他们存在或多或少地存在一些问题:

* 需要明文输入密码

* 打印的信息不够个性化(不够简洁或者不够详细)

* 执行任务脚本不够简单

* ...

如果你会一点点python,那么在batch_run的基础上,如上问题都可以轻松解决。

那么batch_run是什么?

类似于pssh或者ansible,batch_run用于在多机器环境中批量推送和运行指定命令,同时在快捷操作/简洁显示/密码安全方面有独到之处。

batch_run的底层也是基于ssh实现的。

batch_run的地址位于?https://gitee.com/liyanqing1987/batch_run

下面来演示如何安装/配置/使用它。

1. 获取安装包

登陆到batch_run的gitee地址,如下,点击“克隆/下载”来下载ZIP安装包。

?

将zip安装包拷贝到linux环境,安装目录下。

[root@cmp001 tools]# ls
anaconda3 ?batch_run-master.zip

解压缩。

[root@cmp001 tools]# unzip batch_run-master.zip?
Archive: ?batch_run-master.zip
c8a963fed55640a372b763935175749c36b8c093
? ?creating: batch_run-master/
? inflating: batch_run-master/.gitignore ?
? inflating: batch_run-master/LICENSE ?
? inflating: batch_run-master/README ?
? ?creating: batch_run-master/common/
? inflating: batch_run-master/common/common_password.so ?
? ?creating: batch_run-master/config/
? inflating: batch_run-master/config/host.list ?
?extracting: batch_run-master/config/password.encrypted ?
? inflating: batch_run-master/install.py ?
? ?creating: batch_run-master/scripts/
? inflating: batch_run-master/scripts/install_system_library.sh ?
? inflating: batch_run-master/scripts/install_system_tools.sh ?
?extracting: batch_run-master/scripts/print_os.sh ?
? ?creating: batch_run-master/tools/
? inflating: batch_run-master/tools/encrypt_python.py ?
? inflating: batch_run-master/tools/get_password.py ?
? inflating: batch_run-master/tools/save_password.py?

将解压后的目录?batch_run-master 重命名为 batch_run。

[root@cmp001 tools]# mv batch_run-master batch_run

进入batch_run目录,可见其文件结构如下。

[root@cmp001 tools]# cd batch_run/
[root@cmp001 batch_run]# ls
bin ?common ?config ?install.py ?LICENSE ?README ?scripts ?tools

2. 安装

batch_run的安装依赖python3.8,推荐采用对应版本的anaconda,比如Anaconda3-2021.05-Linux-x86_64.sh.。

同时需要在python中安装加密模块Crypto,采用命令“pip install pycryptodome”可以便捷安装。

之后,进入batch_run的安装包目录下,采用命令 python3 install.py安装。

[root@cmp001 batch_run]# /ic/tools/anaconda3/bin/python3 install.py 
>>> Check python version.
    Required python version : (3, 8)
    Current  python version : (3, 8)

>>> Generate script "/ic/tools/batch_run/bin/batch_run".

>>> Generate script "/ic/tools/batch_run/tools/save_password".

>>> Generate script "/ic/tools/batch_run/tools/get_password".

>>> Generate script "/ic/tools/batch_run/tools/encrypt_python".

>>> Generate config file "/ic/tools/batch_run/config/config.py".

Done, Please enjoy it.

如果没有报错,那么就正常安装上了。

3. 配置

需要配置的主要文件位于安装目录的config目录下。

[root@cmp001 config]# ls
config.py  host.list  password.encrypted

其中config.py是常规配置,可以不配置。

host.list用于配置所有的默认机器ip列表,最好配置。

password.encrypted用于保存加密的用户名密码信息,最好配置。

3.1 配置config.py

默认的config.py如下。

# Specify host list, default is "host.list" on current configure directory.
HOST_LIST = "/ic/tools/batch_run/config/host.list"

# Valid ip format, for example, "10.212.20[67].\d+".
VALID_IP_FORMAT = ""

# Pre-ip, for example, "10.212.206".
PRE_IP = ""

# Default ssh command, for example, "ssh -X -o StrictHostKeyChecking=no".
DEFAULT_SSH_COMMAND = ""

HOST_LIST是默认配置好的,不需要修改。

VALID_IP_FORMAT用于ip合规性检查,如果你的host.list中的ip地址没有规律,此处可以不设置。

PRE_ID用于ip简写的支持(只写最后一个.后面的数字)。

DEFAULT_SSH_COMMAND用于配置默认的ssh命令(batch_run底层基于ssh)。

我们的配置如下。

# Specify host list, default is "host.list" on current configure directory.
HOST_LIST = "/ic/tools/batch_run/config/host.list"

# Valid ip format, for example, "10.212.20[67].\d+".
VALID_IP_FORMAT = ""

# Pre-ip, for example, "10.212.206".
PRE_IP = "192.168.246"

# Default ssh command, for example, "ssh -X -o StrictHostKeyChecking=no".
DEFAULT_SSH_COMMAND = "ssh -o StrictHostKeyChecking=no"

?

3.2 host.list的配置

默认的host.list如下,仅仅定义了格式。

## Format ##
# # Description
# # GROUP(group_name)
# ip <port>
# ip <port>
# ip <port>

我们把当前的3台机器配置其中。

# Master host
# GROUP(master)
192.168.246.141

# Cluster hosts
# GROUP(cluster)
192.168.246.140
192.168.246.128

其中192.168.246.141是当前机器,分到master组。

192.168.246.140和192.168.246.128是cluster相关的机器,分到cluster组。

如果机器的ssh端口从22修改为其他值,可以在host ip追加ssh port信息,比如 192.168.246.140 8080,这样batch_run可以从配置文件中直接获取机器默认的ssh port。

3.3?password.encrypted的配置

batch_run支持交互式输入ssh登陆密码,但是这样不太安全,你可以通过batch_run自带的工具将用户密码信息加密并保存于此,batch_run可以自动引用,既便捷,又能保证安全。

[root@cmp001 config]# ../tools/save_password -u root -p 870222
[root@cmp001 config]# cat password.encrypted 
root  30a777e97f52da1f7a1731b216f8ee6d

4. batch_run用法

batch_run支持多个参数。

[root@cmp001 batch_run]# bin/batch_run -h
usage: batch_run.py [-h] [-H HOSTS [HOSTS ...]] [-G HOST_GROUPS [HOST_GROUPS ...]] [-P PORT] [-u USER] [-p PASSWORD] [-c COMMAND [COMMAND ...]] [-m MULTI_COMMANDS] [-t TIMEOUT] [-C]
                    [-d]

optional arguments:
  -h, --help            show this help message and exit
  -H HOSTS [HOSTS ...], --hosts HOSTS [HOSTS ...]
                        Specify host(s) which run command on, default is all.
  -G HOST_GROUPS [HOST_GROUPS ...], --host_groups HOST_GROUPS [HOST_GROUPS ...]
                        Specify host group which run command on, default is all.
  -P PORT, --port PORT  Specify host port which ssh connect with, default is none.
  -u USER, --user USER  Specify the user when connectting host as.
  -p PASSWORD, --password PASSWORD
                        Specify the user password when connectting host with.
  -c COMMAND [COMMAND ...], --command COMMAND [COMMAND ...]
                        Specify command you want run on specified host(s).
  -m MULTI_COMMANDS, --multi_commands MULTI_COMMANDS
                        Specify command file, will execute line by line.
  -t TIMEOUT, --timeout TIMEOUT
                        Specify ssh command timeout, default is 100 seconds.
  -C, --compact         Enable compact mode, try to print output message on one line.
  -d, --debug           Enable debug mode,print more debug messages.

-H,用于指定一个或多个host ip,可以是ip全称,如果config.py中配置了PRE_IP变量,此处也可以仅输入最后一个.后面的数字。

-G,用于指定一个或多个host group,既host.list中的GROUP。通过group来区分和管理多台不同用途的host会非常方便。

-P,如果机器的ssh port不是22,可以通过参数-P指定ssh port。

-u,batch_run指定ssh的时候,默认使用当前用户登陆,你也可以设置制定的登陆用户,它会采用ssh USER@ip的方式登陆。

-p,如果没有配置ssh免密登陆,需要用参数-p明文输入用户密码,但是这样是不安全的,建议将常用的用户密码配置到password.encrypted文件中。

-c,登陆到指定机器上执行的命令。

-m,如果登陆到指定机器上后需要执行多条命令,可以将多条命令写入到一个文件中去,然后采用-m FILE的方式来执行,需要注意的是,文件中的“-”符号最好写成“\-”的方式转义一下。

-t,默认batch_run在每台机器上允许最长100秒的任务执行时间,如果任务执行时间过长,需要在此处指定最长时间。

-C,简洁输出模式,如果命令输出只有一行,可以采用这个参数。

-d,debug模式,输出详细信息,包括执行命令和执行输出结果。

其中-m参数,常用的一些多行命令文件,比如安装系统库的文件,比如安装系统工具的文件,可以写到安装目录下的scripts目录下,那么-m FILE的用法中,FILE不需要写明绝对路径,仅注明文件名就可以直接引用。

5. 示例

5.1 查看所有机器的操作系统版本,简洁显示

[root@cmp001 batch_run]# bin/batch_run -C -c "cat /etc/redhat-release"
>>> 192.168.246.141     CentOS Linux release 7.9.2009 (Core)
>>> 192.168.246.140     CentOS Linux release 7.9.2009 (Core)
>>> 192.168.246.128     CentOS Linux release 7.9.2009 (Core)

5.2 指定机器组安装系统工具,debug模式

[root@cmp001 batch_run]# bin/batch_run -c "yum install \-y ksh" -G cluster -d

>>> 192.168.246.140
    ssh -o StrictHostKeyChecking=no root@192.168.246.140 yum install \-y ksh
    ==== output ====
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.tuna.tsinghua.edu.cn
     * extras: mirrors.huaweicloud.com
     * updates: mirrors.tuna.tsinghua.edu.cn
    Package ksh-20120801-142.el7.x86_64 already installed and latest version
    Nothing to do
    ================

>>> 192.168.246.128
    ssh -o StrictHostKeyChecking=no root@192.168.246.128 yum install \-y ksh
    ==== output ====
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.tuna.tsinghua.edu.cn
     * epel: mirrors.tuna.tsinghua.edu.cn
     * extras: mirrors.huaweicloud.com
     * updates: mirrors.huaweicloud.com
    Resolving Dependencies
    --> Running transaction check
    ---> Package ksh.x86_64 0:20120801-142.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package       Arch             Version                    Repository      Size
    ================================================================================
    Installing:
     ksh           x86_64           20120801-142.el7           base           884 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 884 k
    Installed size: 3.1 M
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : ksh-20120801-142.el7.x86_64                                  1/1 
      Verifying  : ksh-20120801-142.el7.x86_64                                  1/1 
    
    Installed:
      ksh.x86_64 0:20120801-142.el7                                                 
    
    Complete!
    ================

5.3 指定机器安装多个系统库,机器ip简写

[root@cmp001 batch_run]# bin/batch_run -m install_system_library.sh -H 140

>>> 192.168.246.140
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
...
    Dependencies Resolved
    
    ================================================================================
     Package       Arch            Version                      Repository     Size
    ================================================================================
    Installing:
     gitk          noarch          1.8.3.1-23.el7_8             base          152 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 152 k
    Installed size: 587 k
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : gitk-1.8.3.1-23.el7_8.noarch                                 1/1 
      Verifying  : gitk-1.8.3.1-23.el7_8.noarch                                 1/1 
    
    Installed:
      gitk.noarch 0:1.8.3.1-23.el7_8                                                
    
    Complete!

6. 特色功能说明

6.1 密码安全

不同于pssh的明文密码,batch_run的用户密码可以通过工具save_password加密后密文保存,batch_run执行ssh的时候可以自行引用,既免去了用户输入密码的繁琐,也保证了用户密码安全。

6.2 简洁显示

batch_run同时支持 简洁模式/正常模式/debug模式,可以确保按照自己需要的力度输出命令输出信息。

其中的简洁模式(-C参数)非常适合一些简短信息的收集。

6.3 便捷操作

支持单命令行模式(-c参数),也支持多命令行模式(-m参数),而且针对多命令行模式,还可以把一些常用操作(比如install_system_tools.sh)直接以文件的形式保存到安装目录下的scripts中,需要的时候直接文件名调用,非常方便。

6.4 可定制化

虽然pssh和ansible本身功能强大,但是他们总有一些不能满足用户个性化需求的地方,而用户很难找到合适的接口和途径对他们做定制化开发。

而batch_run采用python明文开发(除了common_password.so密码模块本身做了加密),用户可以按照自己的需求,在batch_run的基础上做二次开发,打造一款适用于自己公司的定制化多机器批量推送和任务运行工具!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:57:18  更:2021-08-24 16:01:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:33:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计