当前位置: 首页 > 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
http://www.xdnf.cn/news/515233.html

相关文章:

  • 外观数列 --- 模拟
  • 【JAVA】HashMap深度剖析:哈希冲突与扩容机制(25)
  • Debezium快照事件监听器系统设计
  • esp32课设记录(一)按键的短按、长按与双击
  • TYUT-企业级开发教程-第三章
  • leetcode hot100刷题日记——1.两数之和
  • 玄机-第一章 应急响应-webshell查杀
  • Neovim 如何安装和配置缩进标识插件 indent-blankline.nvim
  • 在Gitee中配置SSH公钥,建立远程仓库和本地仓库的连接
  • C++编程起步项目
  • java中的Servlet1.x详解
  • 黑马k8s(十一)
  • LeetCode 155. 最小栈:Java 双栈解法详解
  • 【DeepSeek论文精读】11. 洞察 DeepSeek-V3:扩展挑战和对 AI 架构硬件的思考
  • STM32F103_LL库+寄存器学习笔记24 - TIM产生中心PWM波,中心对齐模式1 + PWM模式2(FOC算法专用)
  • AM32电调学习解读五:tenKhzRoutine
  • 第二十八天打卡
  • Linux常用命令44——bzip2压缩或解压缩.bz2文件
  • 【Spring】核心机制:IOC与DI深度解析
  • docker 安装 jenkins
  • 通俗解释Transformer在处理序列问题高效的原因(个人理解)
  • C++几何计算器
  • 【IP101】图像多尺度分析:金字塔结构的原理、构建与高级应用
  • 【SpringBoot】✈️整合飞书群机器人发送消息
  • JavaScript基础-获取元素
  • 【QGIS二次开发】地图编辑-09
  • python + pip 独家秘籍
  • printf函数参数与入栈顺序
  • 翻到了一段2005年写的关于需求的文字
  • java每日精进 5.18【文件存储】