未使用指定模式创建目录

时间:2018-09-19 05:50:51

标签: ansible

编辑:我犯了一个愚蠢的思想错误,我正在通过一个可行的docker基本映像运行ansible。该目录已创建,但是在运行ansible的容器中,而不是在ansible docker映像的主机上

我正在使用ansible创建目录,以后再用于Docker挂载。

在剧本中,我有以下内容:

  - name: Create DB mount point
    file:
      path: /mnt/sda1/bic-mounts/oracle-database
      state: directory
      directory_mode: "777"
      mode: "777"

即使没有记录它,我也必须添加directory_mode参数才能使它起作用:几个月前的this ansible issue看来我并不是唯一遇到此问题的人

使用该参数创建目录,但是其模式为755,而不是777。八进制vs十进制似乎不是问题(因为它不应该是字符串,但是应该知道,这不是应该的),因为十进制777是八进制1411。

有人知道导致权限错误的原因吗?我在阻止777的文档中找不到任何内容,但也没有记录对directory_mode的需求:)

1 个答案:

答案 0 :(得分:1)

我确认指定前导零有效:

  - name: Create DB mount point
    file:
      path: /mnt/sda1/bic-mounts/oracle-database
      state: directory
      mode: 0777

请参见official documentation

  

设置文件或目录的模式。对于那些习惯于/ usr / bin / chmod的用户,请记住模式实际上是八进制数。您必须指定前导零,以便Ansible的YAML解析器知道它是一个八进制数(例如0644或01777)或用引号引起来(例如'644'或'0644',以便Ansible接收字符串并可以将其自己从字符串转换为字符串在不遵循这些规则之一的情况下给出Ansible数字将以十进制数字结尾,这将产生意外结果。从版本1.8开始,该模式可以指定为符号模式(例如u + rwx或u = rw ,g = r,o = r)。