我需要在Ansible中实现一些我无法从哪里开始的东西。
我需要
我有step2和step3的原因是因为如果我从 jane 切换到 nginx_user ,系统会要求输入密码。如果我从root切换,则不需要密码输入。另一个事实是 nginx_user 没有密码,如果您只是在系统要求输入密码时按Enter键,则无法进行身份验证。
我开始这样的事情,假设 remote_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_user 才能执行命令,有没有办法在Ansible中执行此操作?
命令模块只是一个例子,我可能需要在我的情况下使用其他模块,但它需要你先切换到 nginx_user ,所以我无法攻击bash命令。
答案 0 :(得分:0)
这项任务的通常方法如下:
您的远程用户(我建议仅为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,因此无需密码。