This commit is contained in:
Pengzhi Sun 2017-10-17 12:31:52 +08:00
Родитель ce0e0370ae
Коммит 6e70be4af1
4 изменённых файлов: 45 добавлений и 7 удалений

4
.gitignore поставляемый
Просмотреть файл

@ -286,3 +286,7 @@ __pycache__/
*.btm.cs *.btm.cs
*.odx.cs *.odx.cs
*.xsd.cs *.xsd.cs
# DevOps Sample Solution
controller_parameters.debug.json
azuredeploy.parameters.debug.json

Просмотреть файл

@ -68,6 +68,13 @@
"description": "The private key for kubernetes master FQDN, need to be base64 encoded" "description": "The private key for kubernetes master FQDN, need to be base64 encoded"
}, },
"defaultValue": "" "defaultValue": ""
},
"dockerEngineDownloadRepo": {
"metadata": {
"description": "docker-engine download repo."
},
"defaultValue": "https://mirror.azure.cn/docker-engine/apt/repo",
"type": "string"
} }
}, },
"variables": { "variables": {
@ -266,7 +273,7 @@
] ]
}, },
"protectedSettings": { "protectedSettings": {
"commandToExecute": "[concat('./' , variables('_extensionScript'),' -jf \"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\" -u \"', parameters('adminUsername') , '\" -g \"', parameters('gitRepository') , '\" -r \"', parameters('privateRegistryUrl'), '\" -ru \"', parameters('privateRegistryUserName'), '\" -rp \"', parameters('privateRegistryPassword'), '\" -al \"', variables('_artifactsLocation'), '\" -st \"', variables('_artifactsLocationSasToken'), '\" -kmf \"', parameters('kubernetesMasterFQDN'), '\" -kun \"', parameters('kubernetesUserName'), '\" -kpk \"', parameters('kubernetesPrivateKey'), '\"' )]" "commandToExecute": "[concat('./' , variables('_extensionScript'),' -jf \"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\" -u \"', parameters('adminUsername') , '\" -g \"', parameters('gitRepository') , '\" -r \"', parameters('privateRegistryUrl'), '\" -ru \"', parameters('privateRegistryUserName'), '\" -rp \"', parameters('privateRegistryPassword'), '\" -al \"', variables('_artifactsLocation'), '\" -st \"', variables('_artifactsLocationSasToken'), '\" -kmf \"', parameters('kubernetesMasterFQDN'), '\" -kun \"', parameters('kubernetesUserName'), '\" -kpk \"', parameters('kubernetesPrivateKey'), '\" -dedr \"', parameters('dockerEngineDownloadRepo'),'\"' )]"
} }
} }
} }

Просмотреть файл

@ -76,7 +76,7 @@ function retry_until_successful {
else else
let counter++ let counter++
fi fi
sleep 10 sleep 15
"${@}" "${@}"
done; done;
} }

Просмотреть файл

@ -17,6 +17,7 @@ Arguments
--kubernetes_private_key|-kpk [Required] : kubernetes private key log in to master FQDN --kubernetes_private_key|-kpk [Required] : kubernetes private key log in to master FQDN
--artifacts_location|-al : Url used to reference other scripts/artifacts. --artifacts_location|-al : Url used to reference other scripts/artifacts.
--sas_token|-st : A sas token needed if the artifacts location is private. --sas_token|-st : A sas token needed if the artifacts location is private.
--docker_engine_download_repo|-dedr : docker-engine download repo
EOF EOF
} }
@ -48,8 +49,8 @@ function install_kubectl() {
fi fi
} }
function install_docker_fromMirror() { function install_docker_fromMirror() {
curl -fsSL https://mirror.azure.cn/docker-engine/apt/gpg | sudo apt-key add - curl --max-time 60 -fsSL https://aptdocker.azureedge.net/gpg | apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirror.azure.cn/docker-engine/apt/repo ubuntu-xenial main" sudo add-apt-repository "deb [arch=amd64] ${docker_engine_download_repo} ubuntu-xenial main"
sudo apt-get update --fix-missing sudo apt-get update --fix-missing
apt-cache policy docker-engine apt-cache policy docker-engine
sudo apt-get install -y unzip docker-engine nginx apache2-utils sudo apt-get install -y unzip docker-engine nginx apache2-utils
@ -129,6 +130,10 @@ do
kubernetes_private_key="$1" kubernetes_private_key="$1"
shift shift
;; ;;
--docker_engine_download_repo|-dedr)
docker_engine_download_repo="$1"
shift
;;
--help|-help|-h) --help|-help|-h)
print_usage print_usage
exit 13 exit 13
@ -147,7 +152,10 @@ throw_if_empty --registry_password $registry_password
throw_if_empty --jenkins_fqdn $jenkins_fqdn throw_if_empty --jenkins_fqdn $jenkins_fqdn
throw_if_empty --kubernetes_master_fqdn $kubernetes_master_fqdn throw_if_empty --kubernetes_master_fqdn $kubernetes_master_fqdn
throw_if_empty --kubernetes_user_name $kubernetes_user_name throw_if_empty --kubernetes_user_name $kubernetes_user_name
throw_if_empty --kubernetes_private_key $kubernetes_private_key
if [ -z "$docker_engine_download_repo" ] ; then
docker_engine_download_repo="https://mirror.azure.cn/docker-engine/apt/repo"
fi
if [ -z "$repository" ]; then if [ -z "$repository" ]; then
repository="${vm_user_name}/myfirstapp" repository="${vm_user_name}/myfirstapp"
@ -170,6 +178,25 @@ sleep 5
sudo gpasswd -a jenkins docker sudo gpasswd -a jenkins docker
skill -KILL -u jenkins skill -KILL -u jenkins
sudo service jenkins restart sudo service jenkins restart
# check jenkins is fully up
echo "waiting jenkins fully up at $(date "+%Y-%m-%d %H:%M:%S")"
jenkins_up_counter=0
jenkins_fully_up=1
while [[ $(curl -s -w "%{http_code}" http://localhost:8080/ -o /dev/null) == "503" ]]; do
if [[ "$jenkins_up_counter" -gt 30 ]]; then
echo "jenkins still not fully up at $(date "+%Y-%m-%d %H:%M:%S")"
jenkins_fully_up=0
break
else
let jenkins_up_counter++
fi
sleep 10
done
if [ ! -z $jenkins_fully_up ] ; then
echo "jenkins fully up at $(date "+%Y-%m-%d %H:%M:%S"), retried $jenkins_up_counter time(s)."
fi
echo "Including the pipeline" echo "Including the pipeline"
run_util_script "jenkins/add-docker-build-deploy-k8s.sh" -j "http://localhost:8080/" -ju "admin" -g "${git_url}" -r "${registry}" -ru "${registry_user_name}" -rp "${registry_password}" -rr "$repository" -sps "* * * * *" -al "$artifacts_location" -st "$artifacts_location_sas_token" run_util_script "jenkins/add-docker-build-deploy-k8s.sh" -j "http://localhost:8080/" -ju "admin" -g "${git_url}" -r "${registry}" -ru "${registry_user_name}" -rp "${registry_password}" -rr "$repository" -sps "* * * * *" -al "$artifacts_location" -st "$artifacts_location_sas_token"
install_kubectl install_kubectl