gpt4 book ai didi

java - Ansible:更改目录权限问题

转载 作者:行者123 更新时间:2023-11-30 02:40:49 48 4
gpt4 key购买 nike

我正在运行以下 Ansible 任务来更改目录及其内容的权限。

- name: Change ownership of everything below /opt/as2/app-server
file: path=/opt/as2/app-server state=directory recurse=yes owner=adrt group=adrt

运行时我遇到以下问题:

TASK [appserver : Change ownership of everything below /opt/as2/app-server] ****
fatal: [192.168.1.182]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "Traceback (most recent call last):\r\n File \"/tmp/ansible_UrBo6x/ansible_module_file.py\", line 451, in \r\n main()\r\n File \"/tmp/ansible_UrBo6x/ansible_module_file.py\", line 335, in main\r\n changed |= recursive_set_attributes(module, to_bytes(file_args['path'], errors='surrogate_or_strict'), follow, file_args)\r\n File \"/tmp/ansible_UrBo6x/ansible_module_file.py\", line 146, in recursive_set_attributes\r\n changed |= module.set_fs_attributes_if_different(tmp_file_args, changed)\r\n File \"/tmp/ansible_UrBo6x/ansible_modlib.zip/ansible/module_utils/basic.py\", line 1163, in set_fs_attributes_if_different\r\n File \"/tmp/ansible_UrBo6x/ansible_modlib.zip/ansible/module_utils/basic.py\", line 929, in set_owner_if_different\r\n File \"/tmp/ansible_UrBo6x/ansible_modlib.zip/ansible/module_utils/basic.py\", line 842, in user_and_group\r\nOSError: [Errno 2] No such file or directory: '/opt/as2/app-server-1.0.0/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class'\r\n", "msg": "MODULE FAILURE"}

基本上它说没有这样的文件或目录,

/opt/as2/app-server-1.0.0/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class

目录 /opt/as2/app-server/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/ 的内容是,

As2MetricsService$_$tt__CountStatisticsLists_closure3.class
As2MetricsService$_$tt__collectStats_closure10.class
As2MetricsService$_$tt__collectStats_closure11.class
As2MetricsService$_$tt__collectStats_closure12.class
As2MetricsService$_$tt__collectStats_closure13.class
As2MetricsService$_$tt__collectStats_closure14.class
As2MetricsService$_$tt__collectStats_closure15.class
As2MetricsService$_$tt__collectStats_closure4.class
As2MetricsService$_$tt__collectStats_closure5.class
As2MetricsService$_$tt__collectStats_closure6.class
As2MetricsService$_$tt__collectStats_closure7.class
As2MetricsService$_$tt__collectStats_closure8.class
As2MetricsService$_$tt__collectStats_closure9.class
As2MetricsService$_CountStatisticsLists_closure1.class
As2MetricsService$_collectStats_closure2.class
As2MetricsService.class

没有子目录。

此外,当我在目录 /opt/as2/app-server 中运行命令 chown -R adrt:adrt . 时,它执行时没有任何问题。

帮助我了解这里发生的事情。

最佳答案

Help me to understand what is happening here.

您刚刚在 Ansible 中发现了一个错误,当它处理的文件名包含 $_ 序列时,该错误会导致模块失败。

名称在不转义 $ 字符的情况下传递(或者更确切地说,通过显式转换请求 os.path.expandvars(filename) ),并且序列 $_ 作为内置处理变量解析为当前进程的路径(在本例中为 /usr/bin/python,因为 Ansible 使用 Python 来运行其模块)。

结果文件名:

As2MetricsService$_$tt__collectStats_closure14.class

解释为:

As2MetricsService/usr/bin/python$tt__collectStats_closure14.class

系统会抛出一个错误,指出该文件不存在(这是真的)。​​

<小时/>

在修复之前,我猜你必须使用command模块调用chown

关于java - Ansible:更改目录权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41760420/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com