在執(zhí)行ansible劇本的時(shí)候遇到這樣一個(gè)報(bào)錯(cuò),意思是這個(gè)命令必須在root用戶下執(zhí)行命黔。因?yàn)槲疫@個(gè)錯(cuò)誤是在執(zhí)行roles時(shí)遇到的攀痊,這里就說(shuō)一下我找到的解決方法。
一棺滞、問(wèn)題
報(bào)錯(cuò)提示:”FAILED! => {"changed": false, "msg": "This command has to be run under the root user.", "results": []}“
如下所示:
二裁蚁、問(wèn)題分析
這個(gè)問(wèn)題其實(shí)是因?yàn)槲沂峭ㄟ^(guò)目標(biāo)主機(jī)的普通用戶去執(zhí)行ansible命令的,這里就涉及到一個(gè)權(quán)限的問(wèn)題继准,我這里是想通過(guò)dnf安裝chrony服務(wù)枉证。所以需要root權(quán)限去執(zhí)行dnf安裝命令。所以只需要將普通用戶提權(quán)到root用戶就可以移必。
三室谚、解決方法
方法一、在執(zhí)行ansible命令時(shí)通過(guò)”-b“ 參數(shù)啟用提權(quán)崔泵,這里需要在hosts清單文件中指明root的密碼ansible_become_pass="密碼"或者使用--become-password-file指定存有root用戶密碼的文件秒赤。
命令如下:ansible-playbook -b chrony.yml --become-password-file testpasswd
命令注解:
-b : 啟用sudo提權(quán)
--become-password-file : 指定root用戶密碼文件testpasswd
不使用--become-password-file參數(shù)情況下,可以在主機(jī)清單文件hosts中指定root用戶的密碼憎瘸,如下所示:
注解:
ansible_become_pass :root用戶的密碼
ansible_ssh_pass :普通用戶的密碼
方法二入篮、不使用”-b“ 參數(shù)啟用提權(quán),在yaml文件中使用become來(lái)啟用提權(quán)幌甘。需要在hosts清單文件中指明root的密碼ansible_become_pass="密碼"或者使用--become-password-file指定存有root用戶密碼的文件
如下所示:
效果如下: