ansible切换用户问题

  

ansible切换用户问题

  

?在实际生产环境中,应用程序的用户为不允许用户直接登陆,即为登陆用户user1,操作应用程序为user2,需要完成对应用程序的启动关闭,需要登陆user1切换user2操作应用程序。

  

?在ansible实际应用中怎么解决此类问题呢,通过多方查看资料发现可以ansible_become这个参数可以完美的解决这个问题。

  

配置文件修改为一下

  
 <代码类=" language-shell "> [pro1]
  192.168.0.226 ansible_ssh_user=user1 ansible_ssh_pass=皃asswd”ansible_become=true ansible_become_user=user2 ansible_become_pass=皃asswd”
  (pro2)
  经理ansible_ssh_pass 10.111.36.72 ansible_ssh_user==' O5e2 # L9w '
   
  

注释如下:

  
 <代码类=" language-shell "> ansible_user # ssh用户
  ansible_ssh_pass #密码
  ansible_port # ssh端口
  ansible_become #或真或假,是否切换用户
  ansible_become_method #切换用户使用的方法,如sudo,苏
  ansible_become_user #要切换的用户
  ansible_become_pass #切换用户是需要的密码代码 
  

<强>注意:
这里还有一个非常重要的问题! ! !
博主今天遇到了! ! !
就是同一台主机,同一个用户登陆操作不同的应用程序
user1可以正常登陆正常操作应用程序
user1可以正常登陆切换user2操作应用程序
这里就出现了冲突矛盾的问题! ! !
在ansible应用组里面即使指定了组但是user1执行任何程序的时候还是会自动切换成user2用户! !

  

需要怎么如何解决这个问题呢? ? ? ?
通过查看资料以及好友的帮助有两条解决问题的方法:

  

方法一:

  

在主机文件中不使用做参数,在语句中进行附加

  
 <代码类=" language-shell "> ansible-playbook/etc/ansible/pro1.yml - e " ansible_become=堑?ansible_become=true ansible_become_user=' user2 ' ansible_become_pass=皃asswd” 
  

方法二:

  

这里博主是使用了方法二,因为密码有特殊字符不好处理。

  

当查看主机的时候发现主机有多网卡,于是就把pro2的ip地址改成另一个内网地址,经过测试,两个项目都能正常使用了! ! !

  

总结:   

经过测试,ansible_become=true这个参数,对同一个主机地址,同一个用户都会有效果,即使指定不同的分组,优先级甚是高!解决问题方法的思路很多种,有时候换一下角度考虑,问题就能迎刃而解。

ansible切换用户问题