Vagrant now using pre-built binaries.

This commit is contained in:
Joe Beda
2014-09-29 13:37:04 -07:00
parent 69a14a032c
commit 881cf80182
9 changed files with 178 additions and 80 deletions

View File

@@ -21,7 +21,6 @@ NUM_MINIONS=${KUBERNETES_NUM_MINIONS-"3"}
# IP LOCATIONS FOR INTERACTING WITH THE MASTER
export KUBE_MASTER_IP="10.245.1.2"
export KUBERNETES_MASTER="https://10.245.1.2"
INSTANCE_PREFIX=kubernetes
MASTER_NAME="${INSTANCE_PREFIX}-master"

View File

@@ -18,6 +18,57 @@
set -e
source $(dirname $0)/provision-config.sh
# # Install Docker on master to run the build. This is a necessary chunk of
# # bootstrapping.
# yum install -y docker-io
# SYSTEMD_LOG_LEVEL=notice systemctl enable docker
# systemctl start docker
# # Build release
# echo "Building release"
# pushd /vagrant
# bash -x ./build/release.sh
# popd
function release_not_found() {
echo "It looks as if you don't have a compiled version of Kubernetes. If you" >&2
echo "are running from a clone of the git repo, please run ./build/release.sh." >&2
echo "Note that this requires having Docker installed. If you are running " >&2
echo "from a release tarball, something is wrong. Look at " >&2
echo "http://kubernetes.io/ for information on how to contact the development team for help." >&2
exit 1
}
# Look for our precompiled binary releases. When running from a source repo,
# these are generated under _output. When running from an release tarball these
# are under ./server.
server_binary_tar="/vagrant/server/kubernetes-server-linux-amd64.tar.gz"
if [[ ! -f "$server_binary_tar" ]]; then
server_binary_tar="/vagrant/_output/release-tars/kubernetes-server-linux-amd64.tar.gz"
fi
if [[ ! -f "$server_binary_tar" ]]; then
release_not_found
fi
salt_tar="/vagrant/server/kubernetes-salt.tar.gz"
if [[ ! -f "$salt_tar" ]]; then
salt_tar="/vagrant/_output/release-tars/kubernetes-salt.tar.gz"
fi
if [[ ! -f "$salt_tar" ]]; then
release_not_found
fi
echo "Running release install script"
rm -rf /kube-install
mkdir -p /kube-install
pushd /kube-install
tar xzf "$salt_tar"
cp "$server_binary_tar" .
./kubernetes/saltbase/install.sh "${server_binary_tar##*/}"
popd
# Setup hosts file to support ping by hostname to each minion in the cluster from apiserver
minion_ip_array=(${MINION_IPS//,/ })
for (( i=0; i<${#MINION_NAMES[@]}; i++)); do
@@ -103,19 +154,10 @@ EOF
SYSTEMD_LOG_LEVEL=notice systemctl enable salt-api
systemctl start salt-api
else
# Only run highstate when updating the config. In the first-run case, Salt is
# set up to run highstate as new minions join for the first time.
echo "Executing configuration"
salt '*' mine.update
salt --force-color '*' state.highstate
fi
# Build release
echo "Building release"
pushd /vagrant
./release/build-release.sh kubernetes
popd
echo "Running release install script"
pushd /vagrant/_output/release/master-release/src/scripts
./master-release-install.sh
popd
echo "Executing configuration"
salt '*' mine.update
salt --force-color '*' state.highstate

View File

@@ -19,8 +19,7 @@
source $(dirname ${BASH_SOURCE})/${KUBE_CONFIG_FILE-"config-default.sh"}
function detect-master () {
echo "KUBE_MASTER_IP: $KUBE_MASTER_IP"
echo "KUBE_MASTER: $KUBE_MASTER"
echo "KUBE_MASTER_IP: ${KUBE_MASTER_IP}"
}
# Get minion IP addresses and store in KUBE_MINION_IP_ADDRESSES[]
@@ -31,7 +30,7 @@ function detect-minions {
# Verify prereqs on host machine
function verify-prereqs {
for x in vagrant virtualbox; do
if [ "$(which $x)" == "" ]; then
if ! which "$x" >/dev/null; then
echo "Can't find $x in PATH, please fix and retry."
exit 1
fi
@@ -40,7 +39,6 @@ function verify-prereqs {
# Instantiate a kubernetes cluster
function kube-up {
get-password
vagrant up
@@ -51,26 +49,37 @@ function kube-up {
# verify master has all required daemons
echo "Validating master"
MACHINE="master"
REQUIRED_DAEMON=("salt-master" "salt-minion" "apiserver" "nginx" "controller-manager" "scheduler")
VALIDATED="1"
until [ "$VALIDATED" -eq "0" ]; do
VALIDATED="0"
for daemon in ${REQUIRED_DAEMON[@]}; do
vagrant ssh $MACHINE -c "which $daemon" >/dev/null 2>&1 || { printf "."; VALIDATED="1"; sleep 2; }
local machine="master"
local -a required_daemon=("salt-master" "salt-minion" "apiserver" "nginx" "controller-manager" "scheduler")
local validated="1"
until [[ "$validated" == "0" ]]; do
validated="0"
local daemon
for daemon in "${required_daemon[@]}"; do
vagrant ssh "$machine" -c "which '${daemon}'" >/dev/null 2>&1 || {
printf "."
validated="1"
sleep 2
}
done
done
# verify each minion has all required daemons
local i
for (( i=0; i<${#MINION_NAMES[@]}; i++)); do
echo "Validating ${VAGRANT_MINION_NAMES[$i]}"
MACHINE=${VAGRANT_MINION_NAMES[$i]}
REQUIRED_DAEMON=("salt-minion" "kubelet" "docker")
VALIDATED="1"
until [ "$VALIDATED" -eq "0" ]; do
VALIDATED="0"
for daemon in ${REQUIRED_DAEMON[@]}; do
vagrant ssh $MACHINE -c "which $daemon" >/dev/null 2>&1 || { printf "."; VALIDATED="1"; sleep 2; }
local machine=${VAGRANT_MINION_NAMES[$i]}
local -a required_daemon=("salt-minion" "kubelet" "docker")
local validated="1"
until [[ "$validated" == "0" ]]; do
validated="0"
local daemon
for daemon in "${required_daemon[@]}"; do
vagrant ssh "$machine" -c "which $daemon" >/dev/null 2>&1 || {
printf "."
validated="1"
sleep 2
}
done
done
done
@@ -78,11 +87,16 @@ function kube-up {
echo
echo "Waiting for each minion to be registered with cloud provider"
for (( i=0; i<${#MINION_NAMES[@]}; i++)); do
MACHINE="${MINION_NAMES[$i]}"
COUNT="0"
until [ "$COUNT" -eq "1" ]; do
$(dirname $0)/kubecfg.sh -template '{{range.Items}}{{.ID}}:{{end}}' list minions > /tmp/minions
COUNT=$(grep -c ${MINION_NAMES[i]} /tmp/minions) || { printf "."; sleep 2; COUNT="0"; }
local machine="${MINION_NAMES[$i]}"
local count="0"
until [[ "$count" == "1" ]]; do
local minions
minions=$("$(dirname $0)/cluster/kubecfg.sh" -template '{{range.Items}}{{.ID}}:{{end}}' list minions)
count=$(echo $minions | grep -c "${MINION_NAMES[i]}") || {
printf "."
sleep 2
count="0"
}
done
done
@@ -124,8 +138,7 @@ function test-teardown {
# Set the {user} and {password} environment values required to interact with provider
function get-password {
export user=vagrant
export passwd=vagrant
echo "Using credentials: $user:$passwd"
export KUBE_USER=vagrant
export KUBE_PASSWORD=vagrant
echo "Using credentials: $KUBE_USER:$KUBE_PASSWORD"
}