Permissions Ansible的Root权限问题(尽管以Root身份登录)

Permissions Ansible的Root权限问题(尽管以Root身份登录),permissions,installation,root,ansible,Permissions,Installation,Root,Ansible,我正在尝试自动化一个简单的软件包安装例程: 将程序包文件复制到远程Solaris主机 以root用户身份登录 执行pkgadd 这在手动执行时非常有效,但是Ansible在pkgadd步骤中失败,并出现一个错误:只能以root用户身份访问数据库,这在手动执行完全相同的过程时不会发生: --- - name: deploy JRE synchronize: src={{jre_path}} dest={{remote_pkg_repo}} - name: install JRE comm

我正在尝试自动化一个简单的软件包安装例程:

将程序包文件复制到远程Solaris主机 以root用户身份登录 执行pkgadd 这在手动执行时非常有效,但是Ansible在pkgadd步骤中失败,并出现一个错误:只能以root用户身份访问数据库,这在手动执行完全相同的过程时不会发生:

---
- name: deploy JRE
  synchronize: src={{jre_path}} dest={{remote_pkg_repo}}

- name: install JRE
  command: pkgadd {{jre_name}}  chdir={{remote_pkg_repo}}
我确信Ansible正在使用root用户,一个简单的调试语句向我显示它是以uid=0root gid=0root的身份登录的,但仍然发生了错误。这是怎么回事

PS:远程计算机上没有安装可以使用的sudo

更新

我可以在使用远程SSH命令执行pkgadd命令时再现错误:

ssh root@<remote_host> 'cd <remote_pkg_repo>; pkgadd <pkg_name>'

这个远程SSH调用和手动登录有什么区别?

我终于找到了解决上述问题的方法。由于Ansible通过SSH登录到远程主机,因此只创建了一个远程shell,与手动登录相比,它似乎缺少一些环境配置

因此,为了使Ansible以root用户身份远程登录并执行具有完全root权限的命令,必须在Ansible playbook中设置环境变量NONABI_SCRIPTS=true:

---
- hosts: <your_host>
  remote_user: root

  vars:
  # set the environment in a task to avoid a remote shell
  # but enforce a real local shell:
    enforce_local_shell:
      NONABI_SCRIPTS: true
有关设置Ansible环境的更多信息,请参见。

在Ansible运行中添加-vvv,将输出粘贴到此处。
- name: install JRE
  command: pkgadd {{jre_name}}  chdir={{remote_pkg_repo}}
  environment: enforce_local_shell