一、file模块(重点)
file模块用于对文件或文件夹相关的操作,主要用来设置文件、链接、目录的属性,或者移除文件、链接、目录,很多其他的模块也会包含这种作用,例如copy,assemble和template。
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
参数 |
说明 |
path |
文件绝对路径 |
state |
操作(touch文件新建、absent删除、link软连接、hard硬链接、directory目录创建) |
owner |
设置所有者 |
group |
设置所属的组 |
mode |
权限 0000 |
recurse |
递归 yes or no |
文件的创建
在所有的业务机器的/tmp下创建一个文件:test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| [root@manage01 ~]# ansible -m file group1 -a "path=/tmp/test state=touch" 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "dest": "/tmp/test", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "size": 0, "state": "file", "uid": 0 } 192.168.98.203 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "dest": "/tmp/test", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "size": 0, "state": "file", "uid": 0 } 192.168.98.201 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "dest": "/tmp/test", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "size": 0, "state": "file", "uid": 0 }
|
文件的删除
将node1(192.168.98.201)机器的/tmp/test文件删除
1 2 3 4 5 6 7 8 9
| [root@manage01 ~]# ansible -m file 192.168.98.201 -a "path=/tmp/test state=absent" 192.168.98.201 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "path": "/tmp/test", "state": "absent" }
|
文件权限
修改node2机器文件/tmp/test:
所有者:sko
所属组:nobody
权限:600
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@manage01 ~]# ansible -m file 192.168.98.202 -a "path=/tmp/test owner=sko group=nobody mode=0600" 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 65534, "group": "nobody", "mode": "0600", "owner": "sko", "path": "/tmp/test", "size": 0, "state": "file", "uid": 1001 }
###执行前提:192.168.98.202 有sko用户
|
创建链接文件[软连接、硬链接]
为node2机器的/tmp/test文件创建以下链接
软连接 /tmp/test
硬链接 /tmp/test_
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #软连接 [root@manage01 ~]# ansible -m file 192.168.98.202 -a "src=/tmp/test path=/tmp/test_com state=link" 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "dest": "/tmp/test_com", "gid": 0, "group": "root", "mode": "0777", "owner": "root", "size": 13, "src": "/tmp/test", "state": "link", "uid": 0 }
#硬链接 [root@manage01 ~]# ansible -m file 192.168.98.202 -a "src=/tmp/test path=/tmp/test_com_cn state=hard" 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "dest": "/tmp/test_com_cn", "gid": 65534, "group": "nobody", "mode": "0600", "owner": "sko", "size": 0, "src": "/tmp/test", "state": "hard", "uid": 1001 }
|
创建一个目录
为所有的业务机器创建一个目录: /tmp/test123
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| [root@manage01 ~]# ansible -m file group1 -a "path=/tmp/test123 state=directory" 192.168.98.203 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "0755", "owner": "root", "path": "/tmp/test123", "size": 6, "state": "directory", "uid": 0 } 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "0755", "owner": "root", "path": "/tmp/test123", "size": 6, "state": "directory", "uid": 0 } 192.168.98.201 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "0755", "owner": "root", "path": "/tmp/test123", "size": 6, "state": "directory", "uid": 0 }
|
修改目录及子文件权限
设置业务机器的/tmp/test123目录及子文件的权限
所有者设置为sko
权限为2775
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| [root@manage01 ~]# ansible -m file group1 -a "path=/tmp/test123 owner=sko mode=2755 recurse=yes" 192.168.98.203 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "02755", "owner": "sko", "path": "/tmp/test123", "size": 19, "state": "directory", "uid": 1000 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "02755", "owner": "sko", "path": "/tmp/test123", "size": 19, "state": "directory", "uid": 1001 } 192.168.98.201 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "gid": 0, "group": "root", "mode": "02755", "owner": "sko", "path": "/tmp/test123", "size": 19, "state": "directory", "uid": 1001 }
|
删除一个目录[包括子文件全部删除]
删除所有业务机器的/tmp/test123目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [root@manage01 ~]# ansible -m file group1 -a "path=/tmp/test123 state=absent" 192.168.98.203 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "path": "/tmp/test123", "state": "absent" } 192.168.98.202 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "path": "/tmp/test123", "state": "absent" } 192.168.98.201 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": true, "path": "/tmp/test123", "state": "absent" }
|
二、学习视频
视频:file模块