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

查看文件或目录属性

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

选项 类型 默认值 描述
path str null 要检查的文件或目录的完整路径(必需)。
follow bool false 如果是符号链接,是否跟随到目标路径上获取其状态。
get_attributes bool true 是否返回扩展属性(如 SELinux 上的安全上下文、ACL 等),仅在底层文件系统支持时生效。
get_checksum bool true 是否计算并返回文件的校验和。
checksum_algorithm str sha1 指定用于计算校验和的算法,如 md5sha1sha224sha256sha384sha512。仅在 get_checksum: true 时生效。
get_mime bool true 是否检测并返回文件的 MIME 类型
- name: Get stats of a file
  ansible.builtin.stat:
    path: /etc/foo.conf
  register: 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 object
  ansible.builtin.stat:
    path: /path/to/something
  register: sym

- name: Print a debug message
  ansible.builtin.debug:
    msg: "islnk isn't defined (path doesn't exist)"
  when: sym.stat.islnk is not defined

- name: Print a debug message
  ansible.builtin.debug:
    msg: "islnk is defined (path must exist)"
  when: sym.stat.islnk is defined

- name: Print a debug message
  ansible.builtin.debug:
    msg: "Path exists and is a symlink"
  when: sym.stat.islnk is defined and sym.stat.islnk

- name: Print a debug message
  ansible.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 object
  ansible.builtin.stat:
    path: /path/to/something
  register: p
- name: Print a debug message
  ansible.builtin.debug:
    msg: "Path exists and is a directory"
  when: p.stat.isdir is defined and p.stat.isdir

- name: Do not calculate the checksum
  ansible.builtin.stat:
    path: /path/to/myhugefile
    get_checksum: no

- name: Use sha256 to calculate the checksum
  ansible.builtin.stat:
    path: /path/to/something
    checksum_algorithm: sha256

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

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

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

选项 类型 默认值 描述
access_time str null 要设置的访问时间(atime),格式由 access_time_format 指定。
access_time_format str %Y%m%d%H%M.%S access_time 的时间格式,基于默认的 Python 格式(详见 time.strftime 文档)。
attributes str null 设置文件扩展属性(如 +i 只读、+a append-only)。
follow bool true 如果 path 是符号链接,是否跟随到目标文件。
force bool false 在两种情况下强制创建符号链接:源文件不存在(但稍后会出现);目标文件存在且为文件(因此,我们需要取消链接 path 文件并创建指向 src 文件的符号链接来代替它)。
group str null 要设置的文件组。
mode str null 要设置的权限模式,格式如 0644u=rw,g=r,o=r
modification_time str null 文件的修改时间。可设为 preserve(保留原时间)、now(当前时间)或 YYYYMMDDHHMM.SS 格式。默认随 state 推断:touchnow,其他为 preserve
modification_time_format str %Y%m%d%H%M.%S modification_time 的时间格式,基于默认 Python 格式(参见 time.strftime 文档)。
owner str null 要设置的文件所有者。
path str null 要操作的文件或目录路径,别名 destname(必填)。
recurse bool false 是否递归设置目录及其子文件的权限、所有者等,仅用于目录。
selevel str null SELinux 等级,通常用于细粒度 SELinux 策略控制。
serole str null SELinux 角色。
setype str null SELinux 类型。
seuser str null SELinux 用户。
src str null state=linkstate=hard 时,指定链接到的文件的路径。
state str null 目标状态,如 filedirectorylinkabsenttouchhard
unsafe_writes bool false 避免创建临时文件后再移动,直接修改原文件。用于某些特殊场景,可能会影响原子性。

针对 state 补充一下:

  • 如果设置为 absent,将递归删除目录,或取消链接文件和符号链接。对于目录,若启用了 diff,在结果中会显示被删除的文件和子目录,列于 path_contents 字段中。需要注意的是:如果指定的 path 不存在,此状态不会导致 ansible.builtin.file 任务失败,因为状态本身未发生变化。
  • 如果设置为 directory,则会创建指定目录及其所有不存在的中间父目录。从 Ansible 1.7 起,这些目录将使用指定的权限(如 mode)创建。
  • 如果设置为 file 且未指定其他参数,则该任务会返回 path 的当前状态而不会进行更改。如果指定了权限等参数(如 mode),且文件存在,则会修改该文件。但如果文件不存在,则不会自动创建文件。若希望在文件不存在时创建,可使用 touch 状态,或改用 ansible.builtin.copyansible.builtin.template 模块。
  • 如果设置为 hard,将创建或更新一个硬链接,指向由 src 指定的路径。
  • 如果设置为 link,将创建或更新一个符号链接(软链接),目标路径由 src 指定。
  • 如果设置为 touch(Ansible 1.4 引入),将模拟命令行中的 touch 行为:若文件不存在,则创建一个空文件;若文件或目录已存在,则更新其访问时间和修改时间。
  • 默认行为:如果文件已存在,默认使用该文件的当前类型。如果设置了 recurse: yes,默认状态为 directory;否则为 file
- name: Change file ownership, group and permissions
  ansible.builtin.file:
    path: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'

- name: Give insecure permissions to an existing file
  ansible.builtin.file:
    path: /work
    owner: root
    group: root
    mode: '1777'

- name: Create a symbolic link
  ansible.builtin.file:
    src: /file/to/link/to
    dest: /path/to/symlink
    owner: foo
    group: foo
    state: link

- name: Create two hard links
  ansible.builtin.file:
    src: '/tmp/{{ item.src }}'
    dest: '{{ item.dest }}'
    state: hard
  loop:
    - { 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.conf
    state: touch
    mode: u=rw,g=r,o=r

- name: Touch the same file, but add/remove some permissions
  ansible.builtin.file:
    path: /etc/foo.conf
    state: touch
    mode: u+rw,g-wx,o-rwx

- name: Touch again the same file, but do not change times this makes the task idempotent
  ansible.builtin.file:
    path: /etc/foo.conf
    state: touch
    mode: u+rw,g-wx,o-rwx
    modification_time: preserve
    access_time: preserve

- name: Create a directory if it does not exist
  ansible.builtin.file:
    path: /etc/some_directory
    state: directory
    mode: '0755'

- name: Update modification and access time of given file
  ansible.builtin.file:
    path: /etc/some_file
    state: file
    modification_time: now
    access_time: now

- name: Set access time based on seconds from epoch value
  ansible.builtin.file:
    path: /etc/another_file
    state: file
    access_time: '{{ "%Y%m%d%H%M.%S" | strftime(stat_var.stat.atime) }}'

- name: Recursively change ownership of a directory
  ansible.builtin.file:
    path: /etc/foo
    state: directory
    recurse: yes
    owner: foo
    group: foo

- name: Remove file (delete file)
  ansible.builtin.file:
    path: /etc/foo.txt
    state: absent

- name: Recursively remove directory
  ansible.builtin.file:
    path: /etc/foo
    state: absent
Ansible 模块 —— 文件属性查看,文件或目录创建和属性修改
https://www.linuxstudynotes.com/2025/05/13/ansible-%e6%a8%a1%e5%9d%97/ansible-%e6%a8%a1%e5%9d%97-%e6%96%87%e4%bb%b6%e6%88%96%e7%9b%ae%e5%bd%95%e5%b1%9e%e6%80%a7%e6%9f%a5%e7%9c%8b%e3%80%81%e4%bf%ae%e6%94%b9%e5%92%8c%e5%88%9b%e5%bb%ba/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇