在做ubuntu集群初始化的时候第一步就是需要将具有sudo权限的账户ubuntu进行sudo命令的免密切换,设置sudo免密的方法有好几种,但是我们选择其中一种方法,就是在/etc/sudoers.d/目录下添加用户的配置文件。
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$(whoami)
chmod 440 /etc/sudoers.d/$(whoami)我一般都使用上述操作,但是做批量操作的时候不可能每个节点都去输入一遍当前用户的密码,所以我们使用ssh命名配合sudo -S bash -c命令来免输入密码,但是密码需要输入到文件中,所以我们在做完初始化以后删除密码的配置文件或者是命令记录。
设置sudo切换免密输入的配置如下,注意做这个之前还是的先做所有节点的具有sudo权限的账户免密登录。
PASSWORD=""
function LOOP_ADD_SUDO(){
INFO "开始循环配置节点sudo免密..."
if [ "$(whoami)" == "root" ]; then
INFO "当前用户为root,跳过循环免密配置!"
else
cat ${CURRENT_PATH:=.}/hosts | grep -E -v '^(#|$)' | while read HOST;
do
if [ "${HOST##* }" != "$(hostname)" ]; then
echo "开始设置节点 ${HOST} 免密..."
# 使用 -n 选项将输入重定向到 /dev/null
ssh -n -o StrictHostKeyChecking=no $(whoami)@${HOST%% *} "echo '$(echo $PASSWORD | base64 -d)' | sudo -S bash -c '
echo \"$(whoami) ALL=(ALL) NOPASSWD:ALL\" > /etc/sudoers.d/$(whoami)
chmod 440 /etc/sudoers.d/$(whoami)
'"
fi
done
fi
}
LOOP_ADD_SUDOPASSWORD变量值可以改为你密码的base64的值,base64转换可以直接使用本站的转换工具进行转换:https://sulao.cn/toolkits
host文件是你的IP 主机名绑定的文件,里面的内如格式如下
192.168.0.181 master
192.168.0.182 node1
192.168.0.183 node1
192.168.0.184 node1
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1146
评论列表