ansible 远程执行命令

2018-08-03

ansible 远程执行命令

  更改配置文件

  建立一个主机组,可以针对这一整个组去执行命令

[root@server ~]# vim /etc/ansible/hosts

[testhosts]

127.0.0.1

#192.168.56.128           //IP和域名选填一种

client.test.com        

  远程执行一个命令:

[root@server ~]# ansible testhosts -m command -a 'w'



192.168.56.128 | SUCCESS | rc=0 >>

 23:03:41 up 13:29,  2 users,  load average: 0.00, 0.00, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    192.168.56.1     22:12    9:43   0.03s  0.03s -bash

root     pts/1    server.test.com  23:03    0.00s  0.04s  0.00s /bin/sh -c LANG



127.0.0.1 | SUCCESS | rc=0 >>

 23:03:34 up 13:28,  2 users,  load average: 0.08, 0.02, 0.01

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    192.168.56.1     22:12    1.00s  0.49s  0.26s /usr/bin/python

root     pts/3    localhost        23:03    0.00s  0.03s  0.00s /bin/sh -c LANG


[root@server ~]# ansible testhosts -m command -a 'hostname'

192.168.56.128 | SUCCESS | rc=0 >>

client



127.0.0.1 | SUCCESS | rc=0 >>

server

  这样就可以批量执行命令了。这里的 testhosts 为主机组名,-m 后边是模块名字,-a 后面是命令。也可以直接写一个 ip,针对某一台机器来执行命令。

[root@server ~]# ansible 192.168.56.128 -m command -a 'hostname'

192.168.56.128 | SUCCESS | rc=0 >>

client

[root@server ~]# ansible client.test.com -m command -a 'hostname'

client.test.com | SUCCESS | rc=0 >>

client

  注意:有可能遇到错误:"msg":"Aborting,target uses selinux but python bindings (libselinux-python) aren't installed!"

    解决:yum install -y libselinx-python

  还有一个模块 shell 同样能实现远程执行命令

[root@server ~]# ansible client.test.com -m shell -a 'hostname'

client.test.com | SUCCESS | rc=0 >>

client

  command 模块与 shell 模块的区别:

[root@server ~]# ansible client.test.com -m command -a 'cat /etc/passwd|grep root'

client.test.com | FAILED | rc=1 >>

cat: /etc/passwd|grep: 没有那个文件或目录

cat: root: 没有那个文件或目录



[root@server ~]# ansible client.test.com -m shell -a 'cat /etc/passwd|grep root'

client.test.com | SUCCESS | rc=0 >>

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

  shell 的作用是远程执行一个脚本,也能执行这种管道符式的组合命令


标题:ansible 远程执行命令
作者:散宜生
地址:https://17kblog.com/articles/2018/08/03/1533288074832.html