Ansible-在被管理节点上创建文件或目录

1. 修改文件并将其复制到主机

1.1 描述文件模块

Files模块库包含的模块允许用户完成与Linux文件管理相关的大多数任务,如创建、复制、编辑和修改文件的权限和其他属性。下表提供了常用文件管理模块的列表:

常用文件模块

模块名称

模块说明

blockinfile

插入、更新或删除由可自定义标记线包围的多行文本块

copy

将文件从本地或远程计算机复制到受管主机上的某个位置。
类似于file模块,copy模块还可以设置文件属性,包括SELinux上下文件。

fetch

此模块的作用和copy模块类似,但以相反方式工作。此模块用于从远程计算机获取文件到控制节点,
并将它们存储在按主机名组织的文件树中。

file

设置权限、所有权、SELinux上下文以及常规文件、符号链接、硬链接和目录的时间戳等属性。
此模块还可以创建或删除常规文件、符号链接、硬链接和目录。其他多个与文件相关的
模块支持与file模块相同的属性设置选项,包括copy模块。

lineinfile

确保特定行位于某文件中,或使用反向引用正则表达式来替换现有行。
此模块主要在用户想要更改文件的某一行时使用。

stat

检索文件的状态信息,类似于Linux中的stat命令。

synchronize

围绕rsync命令的一个打包程序,可加快和简化常见任务。
synchronize模块无法提供对rsync命令的完整功能的访问权限,但确实最常见的调用更容易实施。
用户可能仍需通过run command模块直接调用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

你可能感兴趣的:(ansible,linux,运维)