ansible-shell为ansible所衍生的一个批量命令行执行工具,可以基于SSH秘钥并发执行临时任务
1、安装ansible-shell
$ sudo apt-get install python-pip $ sudo apt-get install git $ cd /usr/local $ sudo git clone https://github.com/dominis/ansible-shell.git $ sudo pip install -e ./ansible-shell 注意:如报有gcc编译错误,则检查是否安装python-dev以及pycrypto版本是否低于2.6版本 $ sudo apt-get install python-dev $ sudo pip install pycrypto==2.6
2、配置Inventory文件
1)主机
[1] 支持主机名通配以及正则表达式,例如test[1:4].cominggo.com
[2] 支持基于非标准的ssh端口,例如test5.cominggo.com:5566
[3] 未分组的主机需要在hosts的顶部保留
[4] 支持指定变量,可对个别主机的特殊配置,如登陆用户、端口、私钥等
[5] 支持设置别名,如test2 ansible_ssh_host=10.4.2.123
2)主机组
[1] 支持嵌套组,例如[game:children]在下面的组即为game组所包含
[2] 支持指定变量,例如[game:vars]在下面指定变量
3)内置变量(Inventory)
ansible_ssh_host # 通过ssh连接的主机IP ansible_ssh_port # 通过ssh连接的主机端口号 ansible_ssh_user # 通过ssh连接的用户名 ansible_ssh_pass # 通过ssh连接的登陆密码(需安装sshpass) ansible_sudo_pass # sudo用户密码 ansible_connection # 指定ssh连接类型(local,ssh,paramiko) ansible_ssh_private_key_file # 通过ssh连接时使用的私钥文件 ansible_shell_type # 指定shell解释器,默认sh ansible_python_interpreter # 指定python解释器(路径) ansible\_\*\_interpreter # 指定其他语言解释器
4)配置范例
$ sudo vim /etc/ansible/hosts [game:children] test ceshi [ceshi] 10.4.2.123 10.4.13.105 [test] test[1:4].cominggo.com
3、修改ansible-shell程序
$ sudo vim /usr/local/ansible-shell/ansible-shell self.options.serial = 10 # 修改执行并发,默认为2
4、ansible-shell命令行使用
$ sudo ansible-shell root@ceshi (2)[s:10]$ 用户@分组名称 (主机数)[s:并发数]$
$ sudo ansible-shell # 进入命令行 root@ (0)[s:10]$ list groups # 列出主机组 all ceshi game ungrouped test root@ (0)[s:10]$ cd ceshi # 进入ceshi主机组 root@ceshi (2)[s:10]$ list # 列出该组的所有主机 10.4.2.123 10.4.13.105 root@ceshi (2)[s:10]$ date # 执行date =============== 10.4.13.105 ================ Wed Aug 8 14:48:13 CST 2014 =============== 10.4.2.144 ================ Wed Aug 8 14:52:21 CST 2014 root@ceshi (2)[s:10]$ raw mysql -uUSER -pPASSWORD -e "show databases;" # 使用raw模块执行任意shell命令 =============== 10.4.2.123 ================ +--------------------+ | Database | +--------------------+ | information_schema | | ceshi_db | | mysql | | performance_schema | | test | +--------------------+ =============== 10.4.13.105 ================ +--------------------+ | Database | +--------------------+ | information_schema | | ceshi_db | | mysql | | performance_schema | +--------------------+
注意:在ansible-shell命令行中避免使用与模块同名的命令,使用raw模块可以支持任意命令
转载于:https://blog.51cto.com/phenixikki/1537539