Ansible 剧本 - 权限被拒绝
Ansible playbook - permission denied
我正在尝试 运行 来自 Ansible 2.3.1.0 的剧本。
我的远程机器是安装了 Python 到 /usr/bin/python 的 RHEL7。
我的剧本是这样的:
---
- hosts: my-test
remote_user: myuser
become: true
become_method: sudo
tasks:
#Extend /opt to 1GB
- name: Extend /opt 2048m.
lvol:
vg: rootvg
lv: rootvg-opt
size: 1024m
我收到的错误:
fatal: [my-test.host.nu]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to my-test.host.nu closed.\r\n", "module_stdout": "/usr/bin/python: can't open file '/home/myuser/.ansible/tmp/ansible-tmp-1523204435.39-113929450187838/setup.py': [Errno 13] Permission denied\r\n", "msg": "MODULE FAILURE", "rc": 1}
由 Ansible 创建的文件 "setup.py" 具有权限“700 myuser myuser”,我猜这是一个问题?
如何让 Ansible 允许 root 运行 脚本?
我什至不确定这是否是问题所在?
我设法查明了问题所在。 setup.py 文件不应该在 root 无权访问的主文件夹“/home/myuser”中创建。
我尝试在 ansible.cfg 中设置环境变量 TMPDIR 和变量 "remote_tmp",如下所示。
ansible.cfg :
remote_tmp = /tmp/ansible-$USER
问题是,我在指定 "remote_tmp" 参数之前错过了包含“[defaults]”"section header"。下面的 ansible.cfg 文件按预期工作。
ansible.cfg :
[defaults]
remote_tmp = /tmp/ansible-$USER
我正在尝试 运行 来自 Ansible 2.3.1.0 的剧本。 我的远程机器是安装了 Python 到 /usr/bin/python 的 RHEL7。
我的剧本是这样的:
---
- hosts: my-test
remote_user: myuser
become: true
become_method: sudo
tasks:
#Extend /opt to 1GB
- name: Extend /opt 2048m.
lvol:
vg: rootvg
lv: rootvg-opt
size: 1024m
我收到的错误:
fatal: [my-test.host.nu]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to my-test.host.nu closed.\r\n", "module_stdout": "/usr/bin/python: can't open file '/home/myuser/.ansible/tmp/ansible-tmp-1523204435.39-113929450187838/setup.py': [Errno 13] Permission denied\r\n", "msg": "MODULE FAILURE", "rc": 1}
由 Ansible 创建的文件 "setup.py" 具有权限“700 myuser myuser”,我猜这是一个问题?
如何让 Ansible 允许 root 运行 脚本? 我什至不确定这是否是问题所在?
我设法查明了问题所在。 setup.py 文件不应该在 root 无权访问的主文件夹“/home/myuser”中创建。
我尝试在 ansible.cfg 中设置环境变量 TMPDIR 和变量 "remote_tmp",如下所示。
ansible.cfg :
remote_tmp = /tmp/ansible-$USER
问题是,我在指定 "remote_tmp" 参数之前错过了包含“[defaults]”"section header"。下面的 ansible.cfg 文件按预期工作。
ansible.cfg :
[defaults]
remote_tmp = /tmp/ansible-$USER