ansible file模块、参数详细讲解、例子

Ansible的file模块是用来管理文件和目录的模块。它可以用来创建、删除、修改文件和目录的权限、所有权等属性。

一些常用的file模块的功能有:

  • 创建目录:通过设置state为directory,可以创建目录。
  • 删除文件或目录:通过设置state为absent,可以删除文件或目录。
  • 修改文件和目录的权限:通过设置mode参数,可以修改文件和目录的权限。
  • 修改文件和目录的所有权:通过设置owner和group参数,可以修改文件和目录的所有权。
  • 复制文件:通过设置src和dest参数,可以复制文件。
  • 移动文件:通过设置src和dest参数,可以移动文件。
  • 设置文件的粘滞位:通过设置sticky参数,可以设置文件的粘滞位。

命令形式

ansible 主机组名 -m file -a "key=value1 key=values2..."

主机组名可以写在前方或者后方。

模块参数

参数选项说明类型
path:必需性:是的,path是file模块的必填参数。

(必需)

path告诉Ansible你要操作的文件或目录的具体位置。

要管理的文件的路径。如果在默认位置/etc/ansible/下可以只写文件名。

字符串,应包含你希望操作的文件或目录的绝对路径或相对路径。
state:absent(删除)、directory(目录)、touch(文件)、hard(硬链接)、link(软连接)、present(创建)

absent:确保文件或目录不存在。如果文件或目录存在,则删除它们。

directory:确保目录存在。如果目录不存在,则创建它。如果目录已经存在,则不会执行任何操作。

file:确保文件存在。如果文件不存在,则创建它。如果文件已经存在,则不会执行任何操作。

hard:确保硬链接存在。如果硬链接不存在,则创建它。如果硬链接已经存在,则不会执行任何操作。

link:确保符号链接存在。如果符号链接不存在,则创建它。如果符号链接已经存在,则不会执行任何操作。

present:确保文件或目录存在。如果文件或目录不存在,则创建它们。如果文件或目录已经存在,则不会执行任何操作。这是默认值。

mode:通常以八进制数字表示,如06440755等。

指定文件的权限。

前两位控制所有者权限,中间两位控制所属组权限,最后两位控制其他人权限。每一位可以是0、1、2、3、4、5、6、7,分别对应无权限、执行权限、写权限、写+执行权限、只读权限、读+执行权限、读+写权限、读+写+执行权限。

owner:用户名称

指定文件所有者。

注意事项

  • 确保指定的用户名存在于系统中,否则Ansible会在执行时失败。
  • 当使用sudo或become特性以提升权限执行Ansible任务时,必须确保有权限更改指定文件或目录的所有权。
  • 如果同时需要改变组所有权,可以结合使用group选项。
字符串,通常应该是系统中存在的用户名。
group:组名称

指定文件所属用户组。

注意事项

  • 确保指定的用户组名存在于系统中,否则Ansible执行任务时会遇到错误。
  • 使用sudobecome提升权限执行Ansible任务时,需确保有权限修改文件或目录的组所有权。
  • 可以与owner选项一起使用,以同时改变文件或目录的所有者和所属组。
字符串,通常是系统中存在的用户组名。
src:

文件绝对路径

默认路径在/etc/ansible/下

用途:指定要复制的源文件路径。

当使用state参数为link、hard、copy或template时,src参数是必需的。

它可以是一个本地文件路径或远程URL。

如果src参数是一个文件路径,则可以使用相对路径或绝对路径。

默认位置在/etc/ansible/下。

字符串,可以是本地文件路径(相对于playbook或使用lookup插件的绝对路径),或者是远程主机上的文件路径(当使用Ansible的URL或ansible.builtin.fetch模块下载文件时)。
dest:

指定了文件  [  复制 |  或模板  ]  输出后在远程主机上的存放位置。

默认位置在/etc/ansible/下。

用途:指定文件复制或生成的目标路径。

当使用state参数为link、hard、copy、move、template或absent时,dest参数是必需的。

是看选用模块如copy所意思就是复制到远程主机的位置是哪里。

如果dest参数是一个文件路径,则可以使用相对路径或绝对路径。

字符串,表示目标主机上的文件或目录路径。
force:

覆盖写入,yes为覆盖,no不覆盖。

  1. file模块中,直接使用force选项的场景较少见,因为该模块更多是用于改变文件或目录的基本属性,而非内容替换。对于文件内容的复制,通常会用到copy模块,而在该模块中,force参数更常见且实用。
  2. 当使用copy或其他涉及文件内容操作的模块时,考虑是否真的需要强制覆盖现有文件,以避免不必要的数据丢失。
force:

注意事项:

force参数用于指定是否强制覆盖目标文件或目录。

当force参数设置为true时,如果目标文件或目录已经存在,Ansible会强制覆盖它。如果目标文件或目录不存在,则会创建它。

当force参数设置为false时,如果目标文件或目录已经存在,Ansible不会进行任何更改。如果目标文件或目录不存在,则会创建它。

follow:yes/no

follow参数用于指定是否跟随符号链接。

  • 作用:当设置为yes时,Ansible会跟随符号链接并对其指向的目标文件或目录执行操作。如果设置为no,Ansible则直接对符号链接本身进行操作,而不是它的目标。
follow选项是一个布尔类型的参数,用于控制符号链接(symlinks)的处理方式,默认值为yes
access_time:

参数用于设置或修改文件的访问时间。

access_time参数可以接受以下几种格式的值:

  • Unix时间戳(以秒为单位):可以使用整数值来表示特定的时间。
  • 绝对日期和时间:可以使用ISO 8601格式(例如2022-01-01T12:00:00Z)或其他常用日期格式来指定时间。
  • 相对时间:可以使用+或-符号来指定相对于当前时间的偏移量,例如+1h表示将访问时间设为当前时间后的1小时。
access_time_format:

参数用于指定access_time参数值的日期和时间格式。access_time_format参数的值为"unix",即将access_time参数值解释为Unix时间戳(以秒为单位)。

常见的access_time_format参数值及其对应的日期和时间格式:

  • "iso8601":使用ISO 8601格式表示日期和时间(例如"2022-01-01T12:00:00Z")。
  • "short":使用短日期和时间格式表示(例如"2022-01-01"或"12:00:00")。
  • "long":使用长日期和时间格式表示(例如"January 1, 2022"或"12:00:00 PM")。
attributes:

参数用于设置文件或目录的属性。

attributes参数的值应该是一个字符串,由以下字符组成:

  • "a"表示只能追加写入文件。
  • "b"表示将文件内容存储为二进制格式。
  • "c"表示将文件内容压缩。
  • "d"表示当访问到达文件结尾时,将其作为目录。
  • "e"表示删除文件时不要将其关闭。
  • "f"表示将文件视为固定长度记录。
  • "i"表示文件内容不可修改。
  • "l"表示文件为符号链接。
  • "n"表示当写入文件时,文件指针不追加到文件末尾。
  • "p"表示文件为FIFO(命名管道)。
  • "r"表示文件可读取。
  • "s"表示文件为套接字。
  • "t"表示文件是字节流文本文件。
  • "u"表示文件有未高速缓冲区的同步更新。
  • "w"表示文件可写入。
  • "x"表示文件可执行。

可以组合一起使用。

modification_time:

参数用于设置文件或目录的修改时间。

修改时间(modification time)指的是文件或目录最后一次被修改的时间戳。在Ansible中,modification_time参数可以用来设置文件或目录的修改时间。

modification_time参数的值可以是一个绝对时间戳,也可以是一个相对时间。绝对时间戳是一个特定的日期和时间,而相对时间是相对于当前时间的偏移量。

modification_time_format:

用于设置文件或目录修改时间的格式。

允许指定修改时间的格式,以便将时间字符串解析为正确的时间戳。它支持的格式与Python的strftime格式化字符串相同。

请注意,这种方法依赖于目标系统上的 touch 命令支持 -d 参数来指定日期时间格式。
recurse:yes/no

用于指定是否递归地处理目录。

当使用file模块操作目录时,可以通过设置recurse参数来控制是否递归地处理目录中的文件和子目录。recurse参数的取值为布尔类型,即True或False,默认为False。

当recurse参数设置为True时,file模块会递归地处理目录中的所有文件和子目录。这意味着,无论在操作文件还是目录时,都会对目录及其内容进行相应操作。

selevel:
  • selevel:设置SELinux安全级别的部分,如s0
  • serole:设置SELinux角色,如system_r
  • setype:设置SELinux类型,这是最具体的分类,如httpd_sys_content_t
  • seuser:设置SELinux用户上下文,如system_u

用于指定SELinux安全策略的级别。

在SELinux中,每个文件和进程都有一个安全上下文(Security Context),用于控制其访问权限。selevel参数用于指定要应用的SELinux安全策略的级别。

selevel参数的取值可以是一个字符串,表示安全策略的级别,也可以是一个变量,根据需要动态设置安全策略级别。

serole:system_robject_r等。设置SELinux角色(SEROLE)的名称。SELinux角色定义了一组权限,这些权限决定了哪些域(类型)可以由拥有该角色的进程执行。字符串,代表SELinux角色,如system_robject_r等。

例子

  • 复制管理机/tmp/test.log到客户机的/root目录下

touch /tmp/test.txt
echo "hello" > /tmp/test.txtansible all -m copy -a "src=/tmp/test.txt dest=/root"     # 默认force=yes
# 查看
ansible all -m shell -a "ls -al /root && cat test.txt"
  • 复制管理机/tmp/test.log到客户机的/root目录下并备份

echo "hello ansible ..." > /tmp/test.txt
ansible all -m copy -a "src=/tmp/test.txt dest=/root backup=yes"
  • 写入数据到客户机的/test/yum.log中

ansible all -m copy -a "content='你好,全世界' dest=/root/test02.txt"

src与content选项互斥

  • 向客户机/tmp目录下创建单/多级目录 test(单级) aa/bb/cc(多级)

ansible all -m file -a "path=/tmp/test state=directory"
ansible all -m file -a "path=/tmp/aa/bb/cc state=directory"
  • 向指定组中的客户机/tmp目录下创建demo03.txt文件

ansible test -l 192.168.88.201 -m file -a "path=/tmp/demo03.txt state=touch"
  • 向指定组/tmp目录下创建demo02.txt文件

ansible test -m file -a "path=/tmp/demo02.txt state=touch"
  • 向所有客户机的/tmp目录下创建demo01.txt文件

ansible all -m file -a "path=/tmp/demo01.txt state=touch mode=777 owner=ftp group=daemon"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue使用workbox-webpack-plugin完成打包部署提醒用户版本更新刷新获取,再也不用担心缓存问题导致用户体验不好了

**以下是使用 workbox 和 Service Worker 实现版本控制的完整代码实例。这个实例包括配置 vue.config.js,创建 service-worker.js 文件,并在 main.js 文件中注册 Service Worker。** 第一步:安装依赖 首先,安装 workbox-webpack-plugin: npm install workbox-webpack-pl…

Git多用户之间的切换

解决问题:本地git设置了全局用户名和邮箱都是公司的,如果私人项目推送gitee上也会携带公司信息,如何解决呢。 1、在 C:\Users\主机名 路径下,创建个人配置信息: .gitconfig-personal [user]name xxxemail xxxqq.co…

Flutter 如何发布安卓应用?

android:hardwareAccelerated“true” android:windowSoftInputMode“adjustResize”> <meta-data android:name“flutterEmbedding” android:value“2” /> Flutter生成的文件建议是大部分内容可以保留不动&#xff0c;但是可以根据需要进行修改。 具体可能要修…

Highcharts 饼图

Highcharts 饼图 介绍 Highcharts 是一个流行的 JavaScript 图表库,广泛用于网页和应用程序中创建交互式图表。其中,饼图(Pie Chart)是 Highcharts 提供的一种基础图表类型,用于展示数据在整体中的占比关系。饼图通过将数据集分割成不同的扇形区域来表示不同类别的数据,…

STM32读写备份寄存器和实时时钟

文章目录 1. 硬件电路 2. RTC操作注意事项 操作步骤 3. 代码实现 3.1 读写备份寄存器 3.1.1 main.c 3.2 实时时钟 3.2.1 MyRTC.c 3.2.2 MyRTC.h 3.2.3 main.c 1. 硬件电路 对于BKP备份寄存器和RTC实时时钟的详细解析可以看下面这篇文章&#xff1a; STM32单片机BKP备…

Linux查看公网IP的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

洛谷:P1909 [NOIP2016 普及组] 买铅笔

1. 题目链接 https://www.luogu.com.cn/problem/P1909 P1909 [NOIP2016 普及组] 买铅笔 2. 题目描述 题目描述&#xff1a;小P老师去买笔&#xff0c;商店有3种包装的笔&#xff0c;不拆开单独卖。小P决定只买一种包装的笔&#xff0c;问&#xff1a;在每种包装都足量的情况下…

字节大牛耗时八个月又一力作,Android性能调优秘籍:设计思想与代码质量优化+程序性能优化+开发效率优化(全网疯传)

第一章、设计思想与代码质量优化 一、六大原则 二、设计模式 三、数据结构 四、算法 第二章、 程序性能优化 一、启动速度与执行效率优化 二、 布局检测与优化 三、 内存优化 四、耗电优化 五、网络传输与数据存储优化 六、APK 大小优化 第三章、 开发效率优化 一、…

双叒叕-一个-Android-MVVM-组件化架构框架?

LifecycleViewModelLiveDataViewBindingAndroid KTXOkHttp:网络请求Retrofit:网络请求MMKV:腾讯基于 mmap 内存映射的 key-value 本地存储组件Glide:快速高效的Android图片加载库ARoute:阿里用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦BaseR…

【学习笔记】CSS

CSS 1、 基础篇 1.1、选择器 1.2、长度单位 1.3、CSS2 常用属性 1.4、盒模型 1.5、浮动 1.6、定位 position2、 CSS3 2.1、新增长度单位 2.2、新增颜色表示 2.3、新增选择器 2.4、新增盒子属性 2.5、新增背景属性 …

STM32单片机BKP备份寄存器和RTC实时时钟详解

文章目录 1. Unix时间戳 2. UTC/GMT 3. 时间戳转换 4. BKP简介 5. BKP基本结构 6. RTC简介 7. RTC框架图 8. RTC基本结构 9. 代码示例 1. Unix时间戳 实时时钟&#xff0c;本质上是一个定时器&#xff0c;专门用来产生年月日时分秒。 Unix 时间戳&#xff08;Unix T…

CausalMMM:基于因果结构学习的营销组合建模

1. 摘要 在线广告中&#xff0c;营销组合建模&#xff08;Marketing Mix Modeling&#xff0c;MMM&#xff09; 被用于预测广告商家的总商品交易量&#xff08;GMV&#xff09;&#xff0c;并帮助决策者调整各种广告渠道的预算分配。传统的基于回归技术的MMM方法在复杂营销场景…

Windows10中端口被占用处理方法

前言 在Windows 10中&#xff0c;查看端口被占用情况的方法主要依赖于命令行工具netstat。以下是详细步骤&#xff0c;以及必要的解释和归纳&#xff1a; 打开命令提示符 方法1&#xff1a;使用快捷键Win R&#xff0c;打开“运行”对话框&#xff0c;输入cmd&#xff0c;然…

大疆炸机后MOV修复方法(DJI Inspire 3)

dji大疆可以说是无人机中的华为&#xff0c;产品线之广性能之高让高傲的美国人侧面&#xff0c;质量和性价比才是王道。另外产品线的细分也是制胜法宝&#xff0c;无论是手持、农用机、特殊无人机还是影视级产品DJI都有涉及&#xff0c;给人的感觉就是在无人机细分方面它已经无…

Java中的实例变量和类变量

在面向对象编程中&#xff0c;实例变量和类变量&#xff08;也称为静态变量&#xff09;是两种重要的成员变量类型。它们各自具有不同的特性和用途。以下是关于这两种变量的详细介绍&#xff1a; 实例变量&#xff08;Instance Variables&#xff09; 定义&#xff1a;实例变量…

kafka 集群 Controller 节点和 zookeeper 集群 leader 节点有何区别联系?

kafka 集群 Controller 节点和 zookeeper 集群 leader 节点有何区别联系? Kafka 集群中的 Controller 节点和 ZooKeeper 集群中的 Leader 节点在角色和功能上有明显的区 别,但它们之间也有一定的联系。以下是它们的详细区别和联系: Kafka 集群中的 Controller 节点 角色和…

kafka(五)spring-kafka(1)集成方法

一、集成 1、pom依赖 <!--kafka--><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></dependency><dependency><groupId>org.springframework.kafka</groupId><artif…

java泛型学习

没有java泛型会存在的问题 假设我们有一个方法&#xff0c;希望通过传递不同类型的参数&#xff0c;输出不同类型的对象值。正常情况下我们可能会写不同的方法来实现&#xff0c;但是这样会导致类不断增加&#xff0c;并且类方法很相似&#xff0c;不能够复用。进而导致类爆炸…

cuda 与 opencl 的概念对应关系 备忘

OpenCL&#xff08;Open Computing Language&#xff09;和 CUDA&#xff08;Compute Unified Device Architecture&#xff09;都是用于并行编程的框架&#xff0c;允许开发者利用 GPU&#xff08;以及其他处理器&#xff09;进行高性能计算。尽管它们的目标相似&#xff0c;但…

基于顺序存储的环形队列算法库构建

学习贺利坚老师基于数组的环形队列 数据结构之自建算法库——顺序环形队列_下空队列q中依次入队列数据元素abc-CSDN博客文章浏览阅读5.2k次&#xff0c;点赞6次&#xff0c;收藏6次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列中第9课时环形队列的存储及基本操…