在實際生產環境中,應用程序的用戶爲不容許用戶直接登錄,即爲登錄用戶user1 ,操做應用程序爲user2,須要完成對應用程序的啓動關閉,須要登錄user1 切換user2 操做應用程序。shell
在ansible 實際應用中怎麼解決此類問題呢,經過多方查看資料發現能夠ansible_become這個參數能夠完美的解決這個問題。ssh
配置文件修改成一下ide
[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 用戶!!code
須要怎麼如何解決這個問題呢????
經過查看資料以及好友的幫助有兩條解決問題的方法:ip
方法一:it
在hosts 文件中不使用bcome 參數,在語句中進行附加class
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 這個參數,對同一個主機地址,同一個用戶都會有效果,即便指定不一樣的分組,優先級甚是高!解決問題方法的思路不少種,有時候換一下角度考慮,問題就能迎刃而解。