Bugfix for setup.sh and add the user manual
Bugfix:
- setup.sh uses python3 to run the script, so we should
use pip3 to install the requirements package, otherwise
the script will fail on module not installed.
(And boot the virtualenv by python3)
- changing the inventories configuration name to .yml
the kubespray had updated and generated yaml instead of ini format
and ansible parses the configuration according to extension name
- Remove the docker version tag, 17.03 isn't exist on Ubuntu bionic's
apt source, so I prefered not to assign the docker version and
let Kubespray to choose.
Change-Id: I5f2ad2e9fb14880c16e8d7e8e8b55d1583f95e95
diff --git a/kubespray-installer/index.md b/kubespray-installer/index.md
new file mode 100644
index 0000000..cd31e29
--- /dev/null
+++ b/kubespray-installer/index.md
@@ -0,0 +1,31 @@
+# Kubespray Installer
+
+This script will clone [kubespray](https://github.com/kubernetes-sigs/kubespray) automatically, and deploy production ready Kubernetes cluster by kubespray.
+
+## Install public key to target nodes
+
+```bash
+# ./copy-ssh-keys.sh <set_of_target_nodes>
+./copy-ssh-keys.sh 192.168.0.1 192.168.0.2 192.168.0.3
+
+# Assign customized username if username isn't cord
+REMOTE_SSH_USER=ubuntu ./copy-ssh-keys.sh 192.168.0.1 192.168.0.2 192.168.0.3
+
+# Select the desired public key (default: id_rsa.pub)
+SSH_PUBKEY_PATH=~/.ssh/onoscorddev.pub ./copy-ssh-keys.sh 192.168.0.1 192.168.0.2 192.168.0.3
+```
+
+Then you are able to ssh into the target nodes without password, this is required by Kuberspray script.
+
+## Run the installation script
+
+```bash
+# ./setup -i <inventory_name> <set_of_target_nodes>
+./setup -i pod1 192.168.0.1 192.168.0.2 192.168.0.3
+
+# You can also pipe the output to stdout & file
+./setup -i pod1 192.168.0.1 192.168.0.2 192.168.0.3 | tee /tmp/kubespray-installer.log
+
+# Assign customized username
+REMOTE_SSH_USER=ubuntu ./setup -i pod1 192.168.0.1 192.168.0.2 192.168.0.3
+```
diff --git a/kubespray-installer/setup.sh b/kubespray-installer/setup.sh
index 51ad780..f0ce669 100755
--- a/kubespray-installer/setup.sh
+++ b/kubespray-installer/setup.sh
@@ -37,12 +37,12 @@
# create a virtualenv with specific packages, if it doesn't exist
if [ ! -x "ks_venv/bin/activate" ]
then
- virtualenv ks_venv
+ virtualenv ks_venv --python=python3
# shellcheck disable=SC1091
source ks_venv/bin/activate
- pip install ansible==2.5.3
- pip install -r kubespray/requirements.txt
+ pip3 install ansible==2.7
+ pip3 install -r kubespray/requirements.txt
else
# shellcheck disable=SC1091
source ks_venv/bin/activate
@@ -56,18 +56,18 @@
mkdir -p "inventories/${DEPLOYMENT_NAME}"
cp -r kubespray/inventory/sample/group_vars "inventories/${DEPLOYMENT_NAME}/group_vars"
- CONFIG_FILE="inventories/${DEPLOYMENT_NAME}/inventory.cfg" python3 kubespray/contrib/inventory_builder/inventory.py "${NODES[@]}"
+ CONFIG_FILE="inventories/${DEPLOYMENT_NAME}/inventory.yml" python3 kubespray/contrib/inventory_builder/inventory.py "${NODES[@]}"
# Add configuration to inventory
ansible-playbook k8s-configs.yaml --extra-vars "deployment_name=${DEPLOYMENT_NAME} k8s_nodes='${NODES[*]}' kubespray_remote_ssh_user='${REMOTE_SSH_USER}'"
# Prepare Target Machines
echo "Installing Prerequisites On Remote Machines"
- ansible-playbook -i "inventories/${DEPLOYMENT_NAME}/inventory.cfg" k8s-requirements.yaml
+ ansible-playbook -i "inventories/${DEPLOYMENT_NAME}/inventory.yml" k8s-requirements.yaml
# Install Kubespray
echo "Installing Kubespray"
- ansible-playbook -i "inventories/${DEPLOYMENT_NAME}/inventory.cfg" -e docker_version='17.03' kubespray/cluster.yml -b -v
+ ansible-playbook -i "inventories/${DEPLOYMENT_NAME}/inventory.yml" kubespray/cluster.yml -b -v
}
#