在Linux 服務器中牺勾,出于安全考慮,往往給用戶不是root 賬號,而是一個普通用戶 纫普。這樣對于使用ansible 執(zhí)行時候就會造成一些權限問題,因此我們希望通過一個普通用戶先登陸好渠,再su切到root執(zhí)行昨稼。由于每臺主機的普通用戶和root用戶的密碼又不同。希望在通過ansible執(zhí)行的時候不需要交互輸入密碼拳锚,而是直接執(zhí)行后輸出結果假栓。如何操作呢?
下面方法前提是ansible 主機這個普通用戶在遠程機器需要有 sudo 權限霍掺,如果沒有請?zhí)砑迂揖#瑘?zhí)行命令:
echo " "你的usernam"? ?ALL=(ALL)? NOPASSWD: ALL" >> /etc/sudoers
方法一:
修改??ansible.cfg? 配置文件 ,將下列參數(shù)注釋掉 ,再執(zhí)行
#remote_user = root? ?遠程用戶?
[privilege_escalation]
#become=True? ?允許用戶切換
#become_method=sudo? ?用戶切換方式
#become_user=root? ?切換后用戶身份
#become_ask_pass=False? 是否需要輸入密碼
方法二:
在執(zhí)行ansible 命令時添加執(zhí)行參數(shù):
–become (-b)? 允許切換用戶
–become-method? 切換方式 默認sudo
–become-user 切換后用戶
–ask-become-pass (-K)大寫K? 忽略提示密碼
ansible 10.203.90.114? -m shell -a 'date' -b --become-method su --become-user root --ask-become-pass(-K)大寫K
如果對host文件有對應的配置文件話杆烁,可以在執(zhí)行ansible-playbook或ansible? 時候 提前對host文件進行修改牙丽,如下:
[ucentos]? ?主機組名
xxx.xxx.xxx.xxx? 主機IP
[all:vars]? ?如果允許多個主機組使用 ,否則可以將all 設置成主機組名
ansible_ssh_user=root? 連接用戶
ansible_ssh_pass=password? 連接密碼
ansible_become_pass=password? ?提權密碼
方法三 yaml 文件參數(shù)修改
對于復雜的操作兔魂,我們通常會用到playbook 執(zhí)行烤芦,因此我們也可以在playbook 把需要提權的操作加上權限,這樣最小化控制析校,從而更加符合日常安全運維需求拍棕,例如,
---
- hosts: 主機IP
? ? remote_user:? xxx
? become: yes? ? 允許切換
? become_user: root? ?切換身份
? ?become_method: sudo? 切換方式
? tasks:? ? 具體執(zhí)行任務模塊
? ? ? - name: date
? ? ? ? ?shell: date
以上就是常用的三種方法提權勺良,歡迎補充