ansible file 模块

ansible file 模块

概要

  • 设置文件、符号链接或目录的属性。
  • 或者,删除文件、符号链接或目录。
  • 许多其他模块支持与该模块相同的选项file- 包括复制、模板和组装。
  • 对于 Windows 目标,请改用win_file模块。

参数

parameters(参数)choices/defaults(选项)comments(注释)
access_time该参数表示应该设置文件访问时间的时间。应该在不需要修改时保留,YYYYMMDDHHMM.SS时使用默认的时间格式,或now。默认为None,这意味着保存是state=[file,directory,link,hard]的默认值,现在是state=touch的默认值。
access_time_format默认 "%Y%m%d%H%M.%S"当与access_time一起使用时,表示必须使用的时间格式。
attributes生成的文件或目录应该具有的属性。要获得支持的标志,请查看目标系统上chatr的手册页。这个字符串应该包含与lsattr显示的相同顺序的属性。=操作符被假定为默认值,否则需要在字符串中包含+-操作符。
followyes or no,默认yes这个标志指示文件系统链接(如果存在的话)应该被跟随。
forceyes or no,默认no强制在以下两种情况下创建符号链接:源文件不存在(但稍后会出现);目的地已经存在,并且是一个文件(因此,我们需要取消path文件的链接,并创建到src文件的符号链接来代替它)。
group应该拥有该文件/目录的组的名称,这将提供给chown。
mode生成的文件或目录应有的权限。对于那些习惯使用/usr/bin/chmod的人,请记住模式实际上是八进制数字。你必须添加一个前导零,以便Ansible的YAML解析器知道它是一个八进制数字(如0644或01777)或引用它(如’644’或’1777’),以便Ansible接收到一个字符串,并可以进行自己的转换,从字符串到数字。给Ansible一个数字,而不遵循这些规则之一,将结束与一个十进制数字,这将有意想不到的结果。在Ansible 1.8中,模式可以被指定为符号模式(例如,u+rwx或u=rw,g=r,o=r)。
modification_time该参数表示设置文件修改时间的时间。应该在不需要修改时保留,YYYYMMDDHHMM.SS时使用默认的时间格式,或now。默认为None,这意味着保存是state=[file,directory,link,hard]的默认值,现在是state=touch的默认值。
modification_time_format默认 "%Y%m%d%H%M.%S"与“modification_time”一起使用时,表示必须使用的时间格式。
owner应该拥有文件/目录的用户名,这将被提供给chown。
path被管理文件的路径。
resourceyes or no,默认no递归地对目录内容设置指定的文件属性。这只适用于将state设置为directory的情况。
selevel默认“s0”SELinux文件上下文的级别部分。这就是MLS/MCS属性,有时也被称为范围。当设置为_default时,如果可用,它将使用策略的level部分。
seroleSELinux文件上下文的角色部分。当设置为_default时,它将使用策略的role部分(如果可用的话)。
setypeSELinux文件上下文的类型部分。当设置为_default时,它将使用策略的type部分(如果可用的话)。
seuserSELinux文件上下文的用户部分。在默认情况下它使用系统策略,当设置为_default时,它将使用策略的user部分(如果可用)。
src要链接的文件的路径。这只适用于state=linkstate=hard。对于state=link,这也将接受一个不存在的路径。相对路径是相对于正在创建的文件(path)的,这是Unix命令ln -s SRC DEST处理相对路径的方式。
stateabsent or directory or file or hard or link or touch1、如果absent,目录将被递归删除,文件或符号链接将被解除链接。对于目录,如果声明了diff,您将看到列出在path_contents下的文件和文件夹被删除。注意,如果path不存在,缺席不会导致文件失败,因为状态没有改变。2、如果中间directory不存在,则创建所有中间子目录。因为Ansible 1.7,他们将被创建与提供的权限。3、如果file,没有任何其他选项,这主要作为一个“统计”,并将返回路径的当前状态。即使有其他选项(即模式),文件将被修改,但不会创建如果它不存在;如果你想要那个行为,可以查看触摸值或复制或模板模块。4、如果是hard,则会创建或更改硬链接。5、如果link,符号链接将被创建或更改。6、如果touch(1.4中的新功能),如果path不存在,将创建一个空文件,而现有的文件或目录将接收更新的文件访问和修改时间(类似于touch从命令行工作的方式)。
unsafe_writesyes or no,默认no影响何时使用原子操作来防止数据损坏或从目标文件进行不一致的读取。默认情况下,该模块使用原子操作来防止数据损坏或不一致地读取目标文件,但有时系统配置或破坏的方式会防止这种情况。一个例子是docker挂载的文件,它不能从容器内部原子地更新,只能以不安全的方式写入。当原子操作失败时,这个选项允许Ansible退回到不安全的方法来更新文件(但是,它不会强迫Ansible执行不安全的写操作)。重要!不安全的写操作会受到竞争条件的影响,并可能导致数据损坏

例子

- name: Change file ownership, group and permissions
  file:
    path: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'

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

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

- name: Create two hard links
  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)
  file:
    path: /etc/foo.conf
    state: touch
    mode: u=rw,g=r,o=r

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

- name: Touch again the same file, but dont change times this makes the task idempotent
  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
  file:
    path: /etc/some_directory
    state: directory
    mode: '0755'

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

- name: Set access time based on seconds from epoch value
  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
  file:
    path: /etc/foo
    state: directory
    recurse: yes
    owner: foo
    group: foo

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

- name: Recursively remove directory
  file:
    path: /etc/foo
    state: absent
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值