当前位置: 首页 > news >正文

Ansible模块——文件属性查看,文件或目录创建和属性修改

ansible.builtin.stat 可以查看文件信息。

选项

类型

默认值

描述

pathstrnull

要检查的文件或目录的完整路径(必需)。

followboolfalse

如果是符号链接,是否跟随到目标路径上获取其状态。

get_attributesbooltrue

是否返回扩展属性(如 SELinux 上的安全上下文、ACL 等),仅在底层文件系统支持时生效。

get_checksumbooltrue

是否计算并返回文件的校验和。

checksum_algorithmstrsha1

指定用于计算校验和的算法,如 md5sha1sha224sha256sha384 和 sha512。仅在 get_checksum: true 时生效。

get_mimebooltrue

是否检测并返回文件的 MIME 类型

- name: Get stats of a fileansible.builtin.stat:path: /etc/foo.confregister: st
- name: Fail if the file does not belong to 'root'ansible.builtin.fail:msg: "Whoops! file ownership has changed"when: st.stat.pw_name != 'root'- name: Get stats of the FS objectansible.builtin.stat:path: /path/to/somethingregister: sym- name: Print a debug messageansible.builtin.debug:msg: "islnk isn't defined (path doesn't exist)"when: sym.stat.islnk is not defined- name: Print a debug messageansible.builtin.debug:msg: "islnk is defined (path must exist)"when: sym.stat.islnk is defined- name: Print a debug messageansible.builtin.debug:msg: "Path exists and is a symlink"when: sym.stat.islnk is defined and sym.stat.islnk- name: Print a debug messageansible.builtin.debug:msg: "Path exists and isn't a symlink"when: sym.stat.islnk is defined and sym.stat.islnk == False- name: Get stats of the FS objectansible.builtin.stat:path: /path/to/somethingregister: p
- name: Print a debug messageansible.builtin.debug:msg: "Path exists and is a directory"when: p.stat.isdir is defined and p.stat.isdir- name: Do not calculate the checksumansible.builtin.stat:path: /path/to/myhugefileget_checksum: no- name: Use sha256 to calculate the checksumansible.builtin.stat:path: /path/to/somethingchecksum_algorithm: sha256

修改文件或目录属性(或创建文件\软链接)

ansible.builtin.file:设置文件、目录或符号链接及其目标的属性。或者,删除文件、符号链接或目录。

有些功能其他模块也能实现。

选项

类型

默认值

描述

access_timestrnull

要设置的访问时间(atime),格式由 access_time_format 指定。

access_time_formatstr%Y%m%d%H%M.%Saccess_time

 的时间格式,基于默认的 Python 格式(详见 time.strftime 文档)。

attributesstrnull

设置文件扩展属性(如 +i 只读、+a append-only)。

followbooltrue

如果 path 是符号链接,是否跟随到目标文件。

forceboolfalse

在两种情况下强制创建符号链接:源文件不存在(但稍后会出现);目标文件存在且为文件(因此,我们需要取消链接 path 文件并创建指向 src 文件的符号链接来代替它)。

groupstrnull

要设置的文件组。

modestrnull

要设置的权限模式,格式如 0644 或 u=rw,g=r,o=r

modification_timestrnull

文件的修改时间。可设为 preserve(保留原时间)、now(当前时间)或 YYYYMMDDHHMM.SS 格式。默认随 state 推断:touch 为 now,其他为 preserve

modification_time_formatstr%Y%m%d%H%M.%Smodification_time

 的时间格式,基于默认 Python 格式(参见 time.strftime 文档)。

ownerstrnull

要设置的文件所有者。

pathstrnull

要操作的文件或目录路径,别名 destname(必填)。

recurseboolfalse

是否递归设置目录及其子文件的权限、所有者等,仅用于目录。

selevelstrnull

SELinux 等级,通常用于细粒度 SELinux 策略控制。

serolestrnull

SELinux 角色。

setypestrnull

SELinux 类型。

seuserstrnull

SELinux 用户。

srcstrnull

当 state=link 或 state=hard 时,指定链接到的文件的路径。

statestrnull

目标状态,如 filedirectorylinkabsenttouchhard

unsafe_writesboolfalse

避免创建临时文件后再移动,直接修改原文件。用于某些特殊场景,可能会影响原子性。

针对 state 补充一下:

  • 如果设置为 absent,将递归删除目录,或取消链接文件和符号链接。对于目录,若启用了 diff,在结果中会显示被删除的文件和子目录,列于 path_contents 字段中。需要注意的是:如果指定的 path 不存在,此状态不会导致 ansible.builtin.file 任务失败,因为状态本身未发生变化。

  • 如果设置为 directory,则会创建指定目录及其所有不存在的中间父目录。从 Ansible 1.7 起,这些目录将使用指定的权限(如 mode)创建。

  • 如果设置为 file 且未指定其他参数,则该任务会返回 path 的当前状态而不会进行更改。如果指定了权限等参数(如 mode),且文件存在,则会修改该文件。但如果文件不存在,则不会自动创建文件。若希望在文件不存在时创建,可使用 touch 状态,或改用 ansible.builtin.copy 或 ansible.builtin.template 模块。

  • 如果设置为 hard,将创建或更新一个硬链接,指向由 src 指定的路径。

  • 如果设置为 link,将创建或更新一个符号链接(软链接),目标路径由 src 指定。

  • 如果设置为 touch(Ansible 1.4 引入),将模拟命令行中的 touch 行为:若文件不存在,则创建一个空文件;若文件或目录已存在,则更新其访问时间和修改时间。

  • 默认行为:如果文件已存在,默认使用该文件的当前类型。如果设置了 recurse: yes,默认状态为 directory;否则为 file

- name: Change file ownership, group and permissionsansible.builtin.file:path: /etc/foo.confowner: foogroup: foomode: '0644'- name: Give insecure permissions to an existing fileansible.builtin.file:path: /workowner: rootgroup: rootmode: '1777'- name: Create a symbolic linkansible.builtin.file:src: /file/to/link/todest: /path/to/symlinkowner: foogroup: foostate: link- name: Create two hard linksansible.builtin.file:src: '/tmp/{{ item.src }}'dest: '{{ item.dest }}'state: hardloop:- { src: x, dest: y }- { src: z, dest: k }- name: Touch a file, using symbolic modes to set the permissions (equivalent to 0644)ansible.builtin.file:path: /etc/foo.confstate: touchmode: u=rw,g=r,o=r- name: Touch the same file, but add/remove some permissionsansible.builtin.file:path: /etc/foo.confstate: touchmode: u+rw,g-wx,o-rwx- name: Touch again the same file, but do not change times this makes the task idempotentansible.builtin.file:path: /etc/foo.confstate: touchmode: u+rw,g-wx,o-rwxmodification_time: preserveaccess_time: preserve- name: Create a directory if it does not existansible.builtin.file:path: /etc/some_directorystate: directorymode: '0755'- name: Update modification and access time of given fileansible.builtin.file:path: /etc/some_filestate: filemodification_time: nowaccess_time: now- name: Set access time based on seconds from epoch valueansible.builtin.file:path: /etc/another_filestate: fileaccess_time: '{{ "%Y%m%d%H%M.%S" | strftime(stat_var.stat.atime) }}'- name: Recursively change ownership of a directoryansible.builtin.file:path: /etc/foostate: directoryrecurse: yesowner: foogroup: foo- name: Remove file (delete file)ansible.builtin.file:path: /etc/foo.txtstate: absent- name: Recursively remove directoryansible.builtin.file:path: /etc/foostate: absent

相关文章:

  • 量子计算 | 量子密码学的挑战和机遇
  • Docker配置容器开机自启或服务重启后自启
  • 【iOS】探索消息流程
  • PCB设计(十九)PCB设计中NPN/PNP选型策略
  • 【甲方安全建设】拉取镜像执行漏洞扫描教程
  • 智慧大楼综合信息化建设方案,技术解决方案(PPT)
  • 【YOLO(txt)格式转VOC(xml)格式数据集】以及【制作VOC格式数据集 】
  • 掌握生成式 AI 的未来:Google Cloud 全新认证
  • 电子电路:怎么理解电子在导体中的热运动?
  • 上位机知识篇---涂鸦智能云平台
  • Open CASCADE学习|几何体切片处理:OpenMP与OSD_Parallel并行方案深度解析
  • 如何设置 MySQL 的 root 密码:详细指南
  • 创建型:原型模式
  • 配置代理服务器访问github、google
  • 408考研逐题详解:2009年第16题
  • 一文掌握工业相机选型计算
  • 【C++】set、map 容器的使用
  • Linux干货(六)
  • 网络安全深度解析:21种常见网站漏洞及防御指南
  • WRFOUT投影转换——兰伯特转等经纬度
  • 网站制作协议书/互联网推广员是做什么的
  • 新网站建设一般多少钱/百度收录技术
  • 企业门户网站优化/凡科网建站系统源码
  • 泰安做网站/如何优化关键词
  • 济南冰河世纪网站建设/青岛seo杭州厂商
  • WordPress缓存规则设置/seo是指什么职位