重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在实际生产环境中,应用程序的用户为不允许用户直接登陆,即为登陆用户user1 ,操作应用程序为user2,需要完成对应用程序的启动关闭,需要登陆user1 切换user2 操作应用程序。
创新互联建站长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为金水企业提供专业的网站设计制作、网站设计,金水网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。 在ansible 实际应用中怎么解决此类问题呢,通过多方查看资料发现可以ansible_become这个参数可以完美的解决这个问题。
配置文件修改为一下
[pro1]
192.168.0.226 ansible_ssh_user=user1 ansible_ssh_pass='passwd' ansible_become=true ansible_become_user=user2 ansible_become_pass='passwd'
[pro2]
10.111.36.72 ansible_ssh_user=manager ansible_ssh_pass='O5e2#L9w'
注释如下:
ansible_user # ssh用户
ansible_ssh_pass # 密码
ansible_port # ssh端口
ansible_become # true or false,是否切换用户
ansible_become_method # 切换用户使用的方法,如sudo、su
ansible_become_user # 要切换的用户
ansible_become_pass # 切换用户是需要的密码
注意:
这里还有一个非常重要的问题!!!
博主今天遇到了!!!
就是同一台主机,同一个用户登陆操作不同的应用程序
user1 可以正常登陆 正常操作应用程序
user1 可以正常登陆 切换user2 操作应用程序
这里就出现了冲突矛盾的问题!!!
在ansible 应用组里面 即使指定了组 但是user1 执行任何程序的时候还是会自动切换成user2 用户!!
需要怎么如何解决这个问题呢????
通过查看资料以及好友的帮助有两条解决问题的方法:
方法一:
在hosts 文件中不使用bcome 参数,在语句中进行附加
ansible-playbook /etc/ansible/pro1.yml -e "ansible_become='yes'ansible_become=true ansible_become_user='user2' ansible_become_pass='passwd'"
方法二:
这里博主是使用了方法二,因为密码有特殊字符不好处理。
当查看主机的时候发现主机有多网卡,于是就把pro2的ip地址改成另一个内网地址,经过测试,两个项目都能正常使用了!!!
总结:
经过测试,ansible_become=true 这个参数,对同一个主机地址,同一个用户都会有效果,即使指定不同的分组,优先级甚是高!解决问题方法的思路很多种,有时候换一下角度考虑,问题就能迎刃而解。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。