网站开发招标技术规范书,网站建设动态静态,网站定制二次开发,网页制作素材网站推荐转载说明#xff1a;如果您喜欢这篇文章并打算转载它#xff0c;请私信作者取得授权。感谢您喜爱本文#xff0c;请文明转载#xff0c;谢谢。 接《关于Ansible的模块 ①-CSDN博客》#xff0c;继续学习和梳理Ansible的常用文件类模块 1. copy模块
从当前机器上复制文件到…
转载说明如果您喜欢这篇文章并打算转载它请私信作者取得授权。感谢您喜爱本文请文明转载谢谢。 接《关于Ansible的模块 ①-CSDN博客》继续学习和梳理Ansible的常用文件类模块 1. copy模块
从当前机器上复制文件到远程节点上并且设置合理的文件权限。
参数含义src指定要copy的文件源路径dest指定copy文件的目标路径必须有content当不使用src指定拷贝的文件时可以使用content直接指定文件内容与src二者必选一force当远程主机的目标路径中已经存在同名文件并且与ansible主机中的文件内容不同时可加force参数表示是否强制覆盖文件可选值有yes和no。默认值为yes表示覆盖如果设置为no则不会执行覆盖拷贝操作远程主机中的文件保持不变。backup当远程主机的目标路径中已经存在同名文件并且与ansible主机中的文件内容不同时是否对远程主机的文件进行备份可选值有yes和no当设置为yes时会先备份远程主机中的文件然后再将ansible主机中的文件拷贝到远程主机。owner指定文件拷贝到远程主机后的属主但是目标主机上必须已存在该用户。group指定文件拷贝到远程主机后的属组但是目标主机上必须已存在该组。mode指定文件拷贝到目标主机后的权限如果想将权限设置为rw-r--r--则可以使用mode0644表示必须以0开始如果想要在user对应的权限位上添加执行权限则可以使用modeux表示
copy模块在复制文件的时候会先比较一下文件的checksum如果相同则不会复制返回状态为SUCCESS如果不同才会复制返回状态为changed。
例如下面的例子ansible主机和被管理主机的/tmp下都存在testsre.txt这个文件但是里面的内容不完全一样也是会复制成功且不会改变被管理主机上testsre.txt这个文件原本的文件权限。 1复制文件并修改文件权限前提是目标服务器必须有对应的user和group 2复制前备份原文件
如果两个文件不同且需要备份原文件则加上backupyes:
ansible all -m copy -a src/tmp/testsre.txt dest/tmp/testsre.txt backupyes
执行结果 2. template模块
如果复制的是静态文件那么用copy模块就可以了。如果在复制的同时需要根据实际情况修改部分内容则需要用到template模块。比如将带有参数的配置文件传递到目标地址等。
参数含义srcAnsible 控制器上 Jinja2 格式模板的路径。这可以是相对路径或绝对路径。文件必须使用 utf-8 编码但可以使用 output_encoding 来控制输出模板的编码dest在远程计算机上呈现模板的位置backup创建一个包含时间戳信息的备份文件以便在您以某种方式错误地破坏它时可以恢复原始文件owner文件或目录的所有者group文件或目录的组所有者mode文件或目录的权限
1一个简单的文件推送与系统变量获取
[roottest101 templates]# cat test.conf.j2 #创建一个.j2文件
my ip is {{ ansible_host }}
[roottest101 templates]# #将test.conf.j2推送到目标主机生成/tmp/ip文件
[roottest101 templates]# ansible all -m template -a srctest.conf.j2 dest/tmp/ip 2将远程主机的hostname写入其/tmp/hostname文件这个文件原本不存在
在ansible主机创建如下文件
[roottest101 test]# tree
.
├── hostname.yml
└── templates└── test.j21 directory, 2 files
[roottest101 test]#
[roottest101 test]# cat hostname.yml
---
- name: Write hostnamehosts: alltasks:- name: write hostname using jinja2ansible.builtin.template:src: templates/test.j2dest: /tmp/hostname
[roottest101 test]#
[roottest101 test]# cat templates/test.j2
My name is {{ ansible_facts[hostname] }}
[roottest101 test]#
执行yaml文件 3. file模块
fle 模块可以用来设置远程主机上的文件、软链接(symlinks)和文件夹的权限也可以用来创建和删除它们。
参数含义path指定远程服务器的路径也可以写成‘dest’‘name’state 指定操作可以将值设定为 directory创建目录 touch创建文件 link创建软连接 hard创建硬连接 absent删除目录文件或链接 mode文件复制到远程并设定权限默认file644directory755owner文件复制到远程并设定属主默认为rootgroup文件复制到远程并设定属组默认为rootrecurese递归修改
1改变文件权限
mode 参数既可以直接赋值数字权限(必须以0开头)还可以用来增加和删除权
#将目标主机/tmp/test目录的权限设置为sre:sre权限改为777
ansible all -m file -a path/tmp/test statedirectory mode0777 ownersre groupsre
执行效果 还可以通过如下方式修改权限
ansible all -m file -a path/tmp/test statedirectory modeurw,gr,or ownersre groupsre
ansible all -m file -a path/tmp/test statedirectory modeux,owr ownersre groupsre 2创建文件软链接
注意这里的src和dest参数的含义和copy不一样。file模块里操作的都是远程节点上的文件。
ansible all -m file -a src/tmp/test dest/tmp/test1 statelink
若加上owner和group字段则会创建一个软连接并修改源文件的属主信息 3创建一个新文件
创建一个文件并指定属主和权限
ansible all -m file -a path/tmp/test/sre.txt statetouch mode0400 ownersre groupsre 4创建一个目录
创建一个指定了owner和group并设置了权限的目录
ansible all -m file -a path/tmp/sre statedirectory mode0400 ownersre groupsre 5删除文件
ansible all -m file -a path/tmp/test1 stateabsent 未完待续......