ansible - Ansible : Ansible SSH 登录后切换用户两次
问题描述
我正在使用 Ansible 安装 Oracle。我需要切换到应用程序用户(orauser)。当我在 Linux 终端上手动执行相同操作时,我按顺序执行以下步骤:
- 我必须使用我的用户作为 SSH 用户登录到虚拟机/服务器。
- 输入命令“ pbrun su - root ”
- 输入命令“ pbrun su - orauser ”或“ su - orauser ”
我必须按照上述 3 个步骤进行操作,因为我的用户 ID 没有直接切换到应用程序用户 ( orauser ) 的权限,而我首先需要切换到 root 用户。这意味着我需要切换用户 2 次。
我尝试在 Ansible 中实现上述 Linux 步骤,如下所示
- Ansible login using
ansible_user=<my_vm_user_id>
at ansible invocation => 上述 Linux 步骤的第 1 步 - 使用 SSH_USER 登录 become_user = root
在剧本级别使用become_method = pbrun
=> 上述 Linux 步骤的第 2 步 - 切换到 root 用户become_user = orauser
在任务/角色级别使用become_method = pbrun
=> 上述 Linux 步骤的第 2 步 - 切换到应用程序用户(orauser)
但是,它失败并出现以下错误:
can not switch user to orauser.
pbrun10.3.0-16[25697] request rejected by pbmasterd on <server>
后来我才知道,Ansible 不能为给定的任务或角色切换用户两次。我想确认以下几点:
- 我的理解是正确的。
- 使用 Ansible 功能的替代解决方案是什么。
注意:我们可以使用 shell/command 模块在命令级别运行安装,su -c 'shell_command*'
但是我们需要将 Ansible 任务转换为 shell 脚本,这不是首选方式。
解决方案
推荐阅读
- python - 文件已上传时预填充 Flask-WTF FileField
- python - 使用 python 网络抓取无法在此网站上获取表格
- node.js - 我是否需要让我的脚本运行以让 node-cron 执行计划任务?
- r - knitr kable 将单元格文本格式化为有序列表
- java - 为您的类实现父接口与该接口的子接口有什么好处
- java - 在反应中使用 Spring Boot 和 BrowserRouter 时的 Whitelabel 错误页面
- python - Django Signal卡在循环中
- windows-10 - Windows 10,xcopy 失败
- javascript - 如何使用谷歌驱动文件的 JavaScript 创建“href”
- c++ - 如何正确使用 RcppThread 并行化 for 循环