1. 修改文件并将其复制到主机
1.1 描述文件模块
Files模块库包含的模块允许用户完成与Linux文件管理相关的大多数任务,如创建、复制、编辑和修改文件的权限和其他属性。下表提供了常用文件管理模块的列表:
常用文件模块
模块名称 |
模块说明 |
blockinfile |
插入、更新或删除由可自定义标记线包围的多行文本块 |
copy |
将文件从本地或远程计算机复制到受管主机上的某个位置。 |
fetch |
此模块的作用和copy模块类似,但以相反方式工作。此模块用于从远程计算机获取文件到控制节点, |
file |
设置权限、所有权、SELinux上下文以及常规文件、符号链接、硬链接和目录的时间戳等属性。 |
lineinfile |
确保特定行位于某文件中,或使用反向引用正则表达式来替换现有行。 |
stat |
检索文件的状态信息,类似于Linux中的stat命令。 |
synchronize |
围绕rsync命令的一个打包程序,可加快和简化常见任务。 |
例如:blockinfile模块
[root@157 ~]# ls
anaconda-ks.cfg
[root@157 ~]# cp anaconda-ks.cfg abc
[root@157 ~]# vim abc
[root@master project]# vim play.yml
[root@master project]# ansible-playbook play.yml
PLAY [web1] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [web1]
TASK [block test] **************************************************************************************
changed: [web1]
PLAY RECAP *********************************************************************************************
web1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@master project]# cat play.yml
---
- hosts: web1
tasks:
- name: block test
blockinfile:
path: /root/abc
block: |
hello tom
hello world
[root@master project]#
[root@157 ~]# cat abc
#version=RHEL8
# Use graphical install
graphical
# BEGIN ANSIBLE MANAGED BLOCK
hello tom
hello world
# END ANSIBLE MANAGED BLOCK
[root@157 ~]#
#在执行一遍,没有任何反应
[root@master project]# ansible-playbook play.yml
[root@157 ~]# cat abc
#version=RHEL8
# Use graphical install
graphical
# BEGIN ANSIBLE MANAGED BLOCK
hello tom
hello world
# END ANSIBLE MANAGED BLOCK
[root@157 ~]#
lineinfile:模块
[root@master project]# vim play.yml
[root@master project]# cat play.yml
---
- hosts: web1
tasks:
- name: block test
lineinfile:
path: /root/abc
line: |
hello tom
hello world
[root@master project]# ansible-playbook play.yml
PLAY [web1] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [web1]
TASK [block test] **************************************************************************************
changed: [web1]
PLAY RECAP *********************************************************************************************
web1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@master project]#
[root@157 ~]# cat abc
#version=RHEL8
# Use graphical install
graphical
# BEGIN ANSIBLE MANAGED BLOCK
hello tom
hello world
# END ANSIBLE MANAGED BLOCK
hello tom
hello world
[root@157 ~]#
#可以重复执行模块命令
[root@master project]# ansible-playbook play.yml
[root@157 ~]# cat abc
#version=RHEL8
# Use graphical install
graphical
# BEGIN ANSIBLE MANAGED BLOCK
hello tom
hello world
# END ANSIBLE MANAGED BLOCK
hello tom
hello world
hello tom
hello world
[root@157 ~]#
#还可以自主创建文件
[root@157 ~]# rm -rf abc
[root@157 ~]#
[root@157 ~]# ls
anaconda-ks.cfg
[root@master project]# vim play.yml
[root@master project]# cat play.yml
---
- hosts: web1
tasks:
- name: block test
lineinfile:
path: /root/abc
create: yes
line: |
hello tom
hello world
[root@master project]#
[root@master project]# ansible-playbook play.yml
PLAY [web1] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [web1]
TASK [block test] **************************************************************************************
changed: [web1]
PLAY RECAP *********************************************************************************************
web1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@master p