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