? 在實際生產環境中,應用程序的用戶為不允許用戶直接登陸,即為登陸用戶user1 ,操作應用程序為user2,需要完成對應用程序的啟動關閉,需要登陸user1 切換user2 操作應用程序。
? 在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 這個參數,對同一個主機地址,同一個用戶都會有效果,即使指定不同的分組,優先級甚是高!解決問題方法的思路很多種,有時候換一下角度考慮,問題就能迎刃而解。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。