在Ansible中模拟“sudo su ”

53次阅读
没有评论

问题描述

在使用Ansible时,用户遇到了一个问题:他的服务器上,他的用户可以无需密码就能从普通用户升级到root用户,然后root用户可以无需密码就能从root升级到第三方用户。然而,他的用户无法直接从普通用户升级到第三方用户,而这个需求在Ansible中实现的方式与传统的sudo方式有所不同。他已经尝试在一个代码块中使用become_user: root,并在该代码块内的任务中使用become_user: <other-user>,但是Ansible似乎会覆盖代码块的定义,而不是按照他的预期嵌套执行sudo调用。

解决方案

以下解决方案基于提供的问答数据和你的知识库,可能会因操作系统版本、Ansible版本等因素而有所差异。在执行操作前请确保备份重要数据。

方案1:使用shell命令在Ansible中模拟“sudo su ”

在Ansible中,可以通过使用shell模块以及相关的sudo命令来模拟“sudo su ”操作。以下是一个具体的步骤:

  1. 使用shell模块执行sudo命令,以普通用户的身份启动shell,然后切换到目标用户。
- name: Run command as target user
  shell: sudo -u target_user bash -c "<your commands>"
  become: true

请注意,上述示例中的<your commands>需要替换为你实际需要执行的命令。

这个方案通过在shell模块中使用sudo命令,以目标用户的身份运行特定的命令,从而模拟了“sudo su ”的操作。

方案2:使用become模块在Ansible中切换用户

如果要在Ansible中切换用户,可以使用become模块以及become_user参数来实现。以下是一个示例:

- name: Run command as target user
  shell: "<your commands>"
  become: true
  become_user: target_user

同样,上述示例中的<your commands>需要替换为你实际需要执行的命令。

这个方案通过使用become模块的become_user参数,在任务级别切换用户,从而实现了模拟切换用户的操作。

总结

在使用Ansible时,模拟“sudo su ”操作可以通过在Ansible任务中使用shell模块或become模块来实现。这两种方法都允许你在执行任务时切换用户,以实现类似于“sudo su ”的操作。选择哪种方法取决于你的实际需求和偏好。

请注意,由于不同的系统配置、Ansible版本等因素,实际操作步骤可能会有所不同。在执行操作之前,请确保阅读相关文档并备份重要数据,以避免不必要的风险。

正文完