四、Rancher server 自动初始化

一般情况,在 Rancher server 部署完成后,需要登录 Rancher UI 进行一些列初始化设置后才能去创建集群,最后复制集群注册命令到节点去执行安装 K8S。

有时候可能需要在 Rancher server 部署完成后,使用自动化工具通过 Rancher server API 去自动创建 K8S 集群,下面的脚本可以对新安装的 Rancher 进行初始化。

如果后期需要自动安装 K8S 集群,建议将临时 token (TELEMETRY_TOKEN)的 TTL 增大,比如 5 个小时或者一天。

 #!/bin/bash
 
 export RANCHER_URL='https://192.168.100.100:8443' # url 格式: 协议头 + Ip/域名 + 端口号,443 这种默认端口可不用填写。
 export CURRENT_PASSWORD=admin # 新环境默认用户名/密码: admin/admin
 export NEW_PASSWORD=admin123456789
 export WAIT_TIME=5s
 
 # check jq install
 
 jq -V >> /dev/null 2>1
 if [ $(echo $?) != "0" ]; then
     echo 'JQ is not installed.'
 fi
 
 # rancher 容器启动要将近一分半的时间,此处循环检查其运行状态。
 export i=100
 
 while (( i > 10 ))
 do
     export CHECK_FIRST_LOGIN=$( curl -k -s  -H Expect:"" ${RANCHER_URL}/v3/settings/first-login | jq -r .value )
 
     if [ "${CHECK_FIRST_LOGIN}" = 'true' ] || [ "${CHECK_FIRST_LOGIN}" = 'false' ]; then
         export i=1
     fi
     echo "Rancher not ready, wait ${WAIT_TIME} seconds."
     sleep ${WAIT_TIME}
 done
 
 if [ "${CHECK_FIRST_LOGIN}" = 'true' ]; then
 
 response_body()
 {
 cat <<EOF
 {
     "description": null,
     "password": "admin",
     "responseType": "json",
     "ttl": 3600,
     "username": "admin"
 }
 EOF
 }
 
 # 这里设置了 ttl 为 3600 秒,也就是一个小时后临时 token 将会失效,如果后面需要使用这个 token 进行集群的安装,可将 ttl 增大。
 TELEMETRY_TOKEN=$( curl -LSs -k -X POST \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(response_body)" \
    "${RANCHER_URL}/v3-public/localProviders/local?action=login" | jq -r .token )
 
 # change-password
 change_password()
 {
 cat <<EOF
 {
     "currentPassword": "${CURRENT_PASSWORD}",
     "newPassword": "${NEW_PASSWORD}"
 }
 EOF
 }
 
 curl -k -X POST \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(change_password)" \
     "${RANCHER_URL}/v3/users?action=changepassword"
 
 # set-server-url
 set_server_url()
 {
 cat <<EOF
 {
     "baseType":"setting",
     "created":"",
     "createdTS":"",
     "creatorId":null,
     "customized":true,
     "default":"",
     "id":"server-url",
     "name":"server-url",
     "source":"db",
     "type":"setting",
     "uuid":"",
     "value":"${RANCHER_URL}"
 }
 EOF
 }
 
 curl -LSs -k -X PUT \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(set_server_url)" \
     "${RANCHER_URL}/v3/settings/server-url"
 
 # eula-agreed
 eula_agreed()
 {
 cat <<EOF
 {
     "type":"setting",
     "name":"eula-agreed",
     "value":""
 }
 EOF
 }
 
 curl -LSs -k -X POST \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(eula_agreed)" \
     "${RANCHER_URL}/v3/setting"
 
 # ui-default-landing
 ui_default_landing()
 {
 cat <<EOF
 {
     "baseType":"setting",
     "creatorId":null,
     "customized":false,
     "default":"",
     "id":"ui-default-landing",
     "name":"ui-default-landing",
     "source":"default",
     "type":"setting",
     "value":"ember"
 }
 EOF
 }
 
 curl -LSs -k -X PUT \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(ui_default_landing)" \
     "${RANCHER_URL}/v3/settings/ui-default-landing"
 
 # preference
 preference()
 {
 cat <<EOF
 {
     "type":"preference",
     "name":"landing",
     "value":"\"ember\""
 }
 EOF
 }
 
 curl -LSs -k -X POST \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(preference)" \
     "${RANCHER_URL}/v3/preference"
 
 # telemetry-opt
 telemetry_opt()
 {
 cat <<EOF
 {
     "baseType":"setting",
     "created":"",
     "createdTS":"",
     "creatorId":null,
     "customized":false,
     "default":"",
     "id":"telemetry-opt",
     "name":"telemetry-opt",
     "source":"default",
     "type":"setting",
     "uuid":"",
     "value":"in"
 }
 EOF
 }
 
 curl -LSs -k -X PUT \
     -H "Authorization: Bearer ${TELEMETRY_TOKEN}" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d "$(telemetry_opt)" \
     "${RANCHER_URL}/v3/settings/telemetry-opt"
 
 fi
赞(0) 打赏
未经允许不得转载:大咖说Rancher » 四、Rancher server 自动初始化

支付宝扫一扫打赏

img

微信扫一扫打赏

img