如何在一个任务中链接两个Ansible模块

如何在一个任务中链接两个Ansible模块,ansible,Ansible,我需要在Ansible中实现一些我找不到起点的东西 我需要 以非root用户登录(远程用户:jane) 登录后将用户切换到root用户(此用户无法从SSH登录) 然后从root切换到另一个用户(nginx\u user),以避免密码 使用Ansible中的命令模块执行自定义命令 我有步骤2和步骤3的原因是,如果我从jane切换到nginx\u用户,系统将要求输入密码。而如果我从根目录切换,则不需要输入密码。另一个事实是,nginx_用户没有密码,如果在系统请求密码时只按enter键,它将无法进行

我需要在Ansible中实现一些我找不到起点的东西

我需要

  • 以非root用户登录(远程用户:jane)
  • 登录后将用户切换到root用户(此用户无法从SSH登录)
  • 然后从root切换到另一个用户(nginx\u user),以避免密码
  • 使用Ansible中的命令模块执行自定义命令
  • 我有步骤2和步骤3的原因是,如果我从jane切换到nginx\u用户,系统将要求输入密码。而如果我从根目录切换,则不需要输入密码。另一个事实是,nginx_用户没有密码,如果在系统请求密码时只按enter键,它将无法进行身份验证

    我开始这样做,假设remote\u user设置为jane

    - name: Task name
      sudo_user: root
      sudo: yes
      # Need to switch to **nginx_user** before executing this command below
      command: cp /var/www/a /var/www/b   
      
    
    问题是,在帐户切换到root之后,我需要将用户更改为nginx\u user,然后才能执行命令,是否有办法在Ansible中执行此操作

    更新:
    命令模块只是一个例子,我可能需要使用其他模块来代替,但它需要您首先切换到nginx\u用户,因此我无法破解bash命令。

    此任务的常见方法如下:

    您的远程用户(我建议仅为ansible任务增加一个用户)应该具有无密码sudo:

    jane ALL=NOPASSWD: ALL
    
    使用sudo_user:nginx_user保持任务的原样

    - name: Task name
      sudo_user: nginx_user
      sudo: yes
      command: cp /var/www/a /var/www/b   
    
    在这种情况下,Ansible会执行类似于sudo su nginx_user的操作,并且由于您的远程用户具有无密码sudo,因此不需要密码