2.ansible 命令模块 command shell script 文件模块 copy fetch file

ansible-doc -l 查看模块使用说明
ansible-doc yum 显示模块举例说明
ansible-doc -s yum 查看指定模块详细说明

ansible命令语法:
ansible 主机信息(IP 主机组 all) -m (模块名)command -a "操作动作"
01 02 03 04 05 06
绿色 操作执行成功 没有对远程主机做任何改动
黄色 操作执行成功 对远程主机数据信息有改动
红色 操作失败
粉色 警告
蓝色 显示命令操作执行过程

command 在目标主机执行命令 默认模块

ansible all -m command -a "hostname"
参数:
chdir 切换目录

ansible all -m command -a "chdir=/tmp  pwd"

creates 判断文件是否存在 如果存在就跳过后面的操作

ansible 192.168.1.214 -m command -a "creates=/var/run/rsyncd.pid systemctl start rsyncd"

removes 判断文件是否不存在 不存在就跳过后面的操作

ansible 192.168.1.214 -m command -a "removes=/var/run/rsyncd.pid echo 11"
192.168.1.214 | CHANGED | rc=0 >>
11

shell 万能模块

ansible all -m shell  -a "hostname && awk 'NR==3{print $1}' /etc/resolv.conf"

参数:
chdir 切换目录

ansible all -m shell -a "chdir=/tmp  pwd"

creates 判断文件是否存在 如果存在就跳过后面的操作

ansible 192.168.1.214 -m shell -a "creates=/var/run/rsyncd.pid systemctl start rsyncd"

removes 判断文件是否不存在 不存在就跳过后面的操作

ansible 192.168.1.214 -m shell -a "removes=/var/run/rsyncd.pid echo 11"
192.168.1.214 | CHANGED | rc=0 >>
11

scripts 命令模块 执行脚本

第一个历程:编写脚本

[root@m01 scripts]# cat yum.sh 
#!/bin/bash
yum install -y iftop

第二个历程:运行脚本

ansible backup -m script -a "/server/scripts/yum.sh"

copy 批量分发文件

作用:
1 分发文件数据信息 从管理端分发到被管理端
2 修改文件权限及属性
3 移动远程主机数据
src: 指定要推送的数据信息
dest: 指定保存文件的路径

ansible all -m copy -a 'src=/etc/hosts dest=/tmp'

owner: 文件属组信息
group: 文件属组信息
mode: 文件权限

ansible all -m copy -a 'src=/etc/hosts dest=/tmp owner=root group=root mode=600'

remote_src: 远程主机复制一份数据备份 cp /etc/hosts /tmp/hosts.bak

备份
ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts.bak remote_src=yes'
还原
ansible all -m copy -a 'src=/tmp/hosts.bak dest=/etc/hosts remote_src=yes'

content: 直接编辑信息 并进行批量分发

 ansible backupclient -m copy -a "content='oldboy123' dest=/etc/rsync.password mode=600"

fetch 批量拉取数据

ansible 192.168.1.203 -m fetch -a 'src=/etc/hosts dest=/tmp'
[root@rstx-53 scripts]# tree /tmp/192.168.1.203/
/tmp/192.168.1.203/
└── etc
    └── hosts

src: 源文件
dest: 存放到本地的路径

file 修改远程主机文件权限

作用:
1 修改远程主机文件权限信息
2 创建远程主机数据信息/删除远程主机数据信息
path: 远程主机文件路径
owner: 属主
group: 属组
mode: 权限

ansible 192.168.1.203 -m file -a 'path=/tmp/hosts mode=777'

特殊用法
state
absent 删除数据信息
touch 创建文件
directory 创建目录
hard 硬链接
link 软连接
创建文件:

[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible.txt state=touch"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "dest": "/root/ansible.txt", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "state": "file", 
    "uid": 0
}

创建目录:

[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible state=directory"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/root/ansible", 
    "size": 6, 
    "state": "directory", 
    "uid": 0
}
[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/root/ansible state=absent"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "path": "/root/ansible", 
    "state": "absent"
}

创建链接文件:软连接/硬链接
创建硬链接:

[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "src=/etc/hosts path=/tmp/hosts  state=hard"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "dest": "/tmp/hosts", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "size": 158, 
    "src": "/etc/hosts", 
    "state": "hard", 
    "uid": 0
}

创建软链接

[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "src=/etc/hosts path=/tmp/hosts_link   state=link"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "dest": "/tmp/hosts_link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 10, 
    "src": "/etc/hosts", 
    "state": "link", 
    "uid": 0
}

删除文件数据:

[root@rstx-53 ~]# ansible 192.168.1.201 -m file -a "path=/tmp/hosts   state=absent"
192.168.1.201 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "path": "/tmp/hosts", 
    "state": "absent"
}
原文地址:https://www.cnblogs.com/yangtao416/p/14582275.html