IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 在被管理节点上创建文件或目录 -> 正文阅读

[系统运维]在被管理节点上创建文件或目录

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@localhost ansible]# cat test.yml
--- 
- name: www
  hosts: all
  tasks: 
    - name: ss
      blockinfile: 
        path: /tmp/abc
        block: |		//多行内容
          123
          abc
          ag d sc s
[root@localhost tmp]# cat abc 
# BEGIN ANSIBLE MANAGED BLOCK
123
abc
ag d sc s
# END ANSIBLE MANAGED BLOCK

fetch:
把受控节点的文件copy到控制节点上,并将它们存储在按主机名组织的文件树中

[root@localhost ansible]# cat test.yml 
--- 
- name: www
  hosts: all
  tasks: 
    - name: www
      fetch: 
        src: /opt/123		//受控主机文件位置
        dest: /opt		//控制主机位置
[root@localhost opt]# tree
.			//按主机名组织的文件树中
└── 192.168.237.168
    └── opt
        └── 123

1.2 files模块的自动化示例

在受管主机上创建、复制、编辑和删除文件是用户可以使用Files模块库中的模块实施的常见任务。

1.2.1 确保受管主机上存在文件

使用file模块处理受管主机上的文件。其工作方式与touch命令类似,如果不存在则创建一个空文件,如果存在,则更新其修改时间。

- name: 
  file:
    path: /etc/123/file
    owner: user1    //确保受管主机已经有user1用户
    group: group1    //所属组为group1
    mode: 0640     //文件的权限
    state: touch   //状态为创建文件

1.2.2 修改文件属性

使用file模块还可以确保新的或现有的文件具有正确的权限和SELinux类型。

以下任务确保了anaconda-ks.cfg文件的SELinux上下文件类型属性是所需的samba_share_t类型。此行为与Linux中的chcon命令类似。

- name: 
  file:
    path: /etc/wjm1/file
    setype: samba_share_t

1.2.3 使SELinux文件上下文更改具有持久性

设置文件上下文时,file模块的行为与chcon类似。通过运行restorecon,可能会意外地撤消使用该模块所做的更改。
使用file设置上下文后,用户可以使用system模块集合中的sefcontext来更新SELinux策略,如semanage fcontext

- name: 
  samba_share_t:
  sefcontext:
    target: /etc/123/file
    setype: samba_share_t
    state: present

1.2.4 在受管主机上复制和编辑文件

copy模块用于将位于控制节点上的Ansible工作目录中的文件复制到选定的受管主机。

默认情况下,此模块假定设置了force: yes。这会强制该模块覆盖远程文件(如果存在但包含与正在复制的文件不同的内容)。如果设置force: no,则它仅会将该文件复制到受管主机(如果该文件尚不存在)。

- name: 
  copy:
    src: file
    dest: /path/to/file

要从受管主机检索文件,使用fetch模块。这可用于在将参考系统分发给其他受管主机之前从参考系统中检查诸如SSH公钥之类的文件。

name: 
  fetch:
    src: "/home/{{ user }}/.ssh/id_rsa.pub"
    dest: "files/keys/{{ user }}.pub"

要确保现有文件中存在特定的单行文本,使用lineinfile模块:

- name: Add a line of text to a file
  lineinfile:
    path: /path/to/file
    line: 'Add this line to the file'
    state: present

要将文本块添加到现有文件,请使用blockinfile模块:

- name: 
  blockinfile:
    path: /path/to/file
    block: |  //块 将块的两行内容添加到file文件中
      First line in the additional block of text
      Second line in the additional block of text
    state: present

1.2.5 从受管主机中删除文件

从受管主机中删除文件的基本示例是使用file模块和state: absent参数。state参数对于许多模块是可选的。一些模块也支持其他选项。

- name: Make sure a file does not exist on managed hosts
  file:
    dest: /path/to/file
    state: absent

1.2.6 同步控制节点和受管主机之间的文件

synchronize模块是一个围绕rsync工具的打包程序,它简化了playbook中的常见文件管理任务。rsync工具必须同时安装在本机和远程主机上。
默认情况下,在使用synchronize模块时,控制节点为本地主机,受控节点为目标主机。

synchronize:
推送模式push:将控制主机上的目录或文件推送到受控主机(默认模式)
拉取模式pull:将受控主机上的目录或文件拉取到控制主机
控制节点和受控节点都需要安装rsync程序才可以

//将控制主机上的目录或文件推送至受控主机
[root@localhost ansible]# cat test.yml 
---
- name: Simple Boolean Task Demo
  hosts: all 
  tasks:
    - name:
      yum:
        name: rsync
        state: present

    - name:
      synchronize:
        src: /var/123 		//目录或文件都可以
        dest: /opt
[root@localhost opt]# ls
123

//将受控主机上的目录或文件拉取到控制主机
[root@localhost ansible]# cat test.yml 
---
- name: Simple Boolean Task Demo
  hosts: all 
  tasks:
    - name:
      synchronize:
        src: /opt/123 
        dest: /opt 
        mode: pull		//改为拉取模式pull
[root@localhost ansible]# ls /opt/
123
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 12:03:21  更:2021-07-29 12:04:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:18:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码