编辑:我犯了一个愚蠢的想法错误,我运行ansible通过一个可使用的码头基地形象。该目录是创建的,但在运行ansible的容器中,而不是在ansible docker映像的主机上。
我正在使用ansible创建目录,这些目录稍后用于停靠器挂载。
在剧本中,我有以下几点:
- name: Create DB mount point
file:
path: /mnt/sda1/bic-mounts/oracle-database
state: directory
directory_mode: "777"
mode: "777"我不得不添加directory_mode参数,尽管它没有文档化才能使它工作:看看几个月前的这个不可接受的问题,似乎我不是唯一有这个问题的人。
使用该参数创建了目录,但是它的模式是755而不是777。它似乎不是八进制和小数之间的问题(因为它不是字符串,但谁知道),因为小数点中的777是八进制的1411。
有人知道是什么导致权限错误吗?我在阻止777的文档中找不到任何东西,但是对directory_mode的需求也没有文档化:)
发布于 2018-09-19 06:04:45
我确认指定前导零是有效的:
- name: Create DB mount point
file:
path: /mnt/sda1/bic-mounts/oracle-database
state: directory
mode: 0777请参阅正式文件
模式文件或目录应该是。对于那些习惯于/usr/bin/chmod的人,请记住模式实际上是八进制数。您必须指定前导零,以便Ansible的YAML解析器知道它是一个八进制数(比如0644或01777),或者引用它(比如'644‘或'0644’),这样Ansible就会接收到一个字符串,并可以自己从字符串转换为数字。在没有遵循这些规则的情况下给Ansible一个数字,最终会得到一个十进制数,这将产生意想不到的结果。从版本1.8开始,可以将模式指定为符号模式(例如,u+rwx或u=rw、g=r、o=r)。
https://stackoverflow.com/questions/52398979
复制相似问题