自动化-远程执行命令、拷贝目录或者文件

一:远程执行命令
语法:ansible 【group\ip\host】  -m【模块】-a 【命令】
示列: ansible 192.168.2.252 -m command -a 'w'
 
 
1.使用远程执行命令前需要修改ansible配置,添加testhosts组,添加对应的远程Ip
[root@ghs ~]# vim /etc/ansible/hosts
[testhosts]
127.0.0.1
192.168.2.252
 
 
2:远程执行w命令查看127.0.0.1和192.168.2.252的状态,以ip地址形式执行
[root@ghs ~]# ansible 192.168.2.252 -m command -a 'w'
192.168.2.252 | SUCCESS | rc=0 >>
 08:21:03 up  3:05,  5 users,  load average: 0.01, 0.03, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                05:16    3:03m  0.09s  0.09s -bash
root     pts/0    192.168.2.108    06:10    1:12m  0.46s  0.18s bash
root     pts/1    192.168.2.251    07:43   37:29   0.04s  0.04s -bash
root     pts/2    192.168.2.108    08:13    8:00   0.15s  0.15s -bash
root     pts/3    192.168.2.251    08:21    0.00s  0.35s  0.01s /bin/sh -c /usr
 
或者以定义的组执行
[root@ghs ~]# ansible testhosts -m command -a 'w'
192.168.2.252 | SUCCESS | rc=0 >>
 08:21:03 up  3:05,  5 users,  load average: 0.01, 0.03, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                05:16    3:03m  0.09s  0.09s -bash
root     pts/0    192.168.2.108    06:10    1:12m  0.46s  0.18s bash
root     pts/1    192.168.2.251    07:43   37:29   0.04s  0.04s -bash
root     pts/2    192.168.2.108    08:13    8:00   0.15s  0.15s -bash
root     pts/3    192.168.2.251    08:21    0.00s  0.35s  0.01s /bin/sh -c /usr
 
127.0.0.1 | SUCCESS | rc=0 >>
 22:14:29 up 15:33,  7 users,  load average: 0.01, 0.05, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                06:42   15:15m  0.11s  0.11s -bash
root     pts/0    192.168.2.108    19:13   37:35   0.48s  0.07s ssh root@192.16
root     pts/1    192.168.2.108    22:06    3.00s  0.44s  0.28s ssh 127.0.0.1
root     pts/2    localhost        22:06    3.00s  0.29s  0.21s ssh 127.0.0.1
root     pts/3    localhost        22:07    3.00s  0.20s  0.04s ssh 127.0.0.1
root     pts/4    localhost        22:14    3.00s  1.14s  0.89s /usr/bin/python
root     pts/7    localhost        22:14    1.00s  0.89s  0.00s /bin/sh -c /usr
 
 
3:command模块是不支持|管道符的会报错
[root@ghs ~]# ansible testhosts -m command -a 'cat /etc/passwd|grep root'
192.168.2.252 | FAILED | rc=1 >>
cat: /etc/passwd|grep: 没有那个文件或目录
cat: root: 没有那个文件或目录
 
127.0.0.1 | FAILED | rc=1 >>
cat: /etc/passwd|grep: 没有那个文件或目录
cat: root: 没有那个文件或目录
 
使用管道符号需要调用shell模块
[root@ghs ~]# ansible testhosts -m shell -a 'cat /etc/passwd|grep root'
192.168.2.252 | SUCCESS | rc=0 >>
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
 
127.0.0.1 | SUCCESS | rc=0 >>
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
 
 
 
二:拷贝目录和文件copy模板
src:【source】【Route】
dest:【target】【Route】
拷贝的目标路径如果目录存在,会在目标目录下创建,如果不存在,直接创建目标的目录名
 
host1 :192.168.2.251
1:拷贝目录
将本机的/etc/ansible文件夹拷贝到远程上的/tmp/
[root@ghs ~]# ansible 192.168.2.252 -m copy -a "src=/etc/ansible dest=/tmp/ owner=root group=root mode=0755"
192.168.2.252 | SUCCESS => {
    "changed": true,
    "dest": "/tmp/",
    "src": "/etc/ansible"
}
 
host2:192.168.2.252
查看tmp目录下是否有ansible目录
[root@ghs2 ~]# ls /tmp/ansible/
ansible.cfg  hosts
 
 
host1 :192.168.2.251
2:拷贝文件
拷贝本机的/etc/passwd到远程机上的/tmp目录下
[root@ghs ~]# ansible 192.168.2.252 -m copy -a "src=/etc/passwd dest=/tmp/1.txt "
192.168.2.252 | SUCCESS => {
    "changed": true,
    "checksum": "bb5f5e7ec89beebcd7dc7fe5d188ccfd4ded3ac5",
    "dest": "/tmp/1.txt",
    "gid": 0,
    "group": "root",
    "md5sum": "17f24152f467a0e80b9b4aa96af47ece",
    "mode": "0644",
    "owner": "root",
    "secontext": "unconfined_u:object_r:admin_home_t:s0",
    "size": 902,
    "src": "/root/.ansible/tmp/ansible-tmp-1500738575.79-49230594941144/source",
    "state": "file",
    "uid": 0
}
 
host1 :192.168.2.251
查看是否有/tmp/1.txt文件
[root@ghs2 ~]# ls /tmp/
1.txt  aa  ansible  yum.log
posted @ 2019-09-25 11:00  一颗小豆子  阅读(788)  评论(0编辑  收藏  举报