Last active
January 9, 2022 09:01
-
-
Save rajiteh/ecf83e43c9c7f8443ff2f398e279c3f1 to your computer and use it in GitHub Desktop.
RancherOS docker version updater.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# RancherOS docker version updater. | |
# Author: @rajiteh | |
# License: BSD | |
# | |
# How to use: | |
# You need to use a persistent console (tested on ubuntu). | |
# Set up the script to be called at console initalization time. | |
# | |
# Example cloud-config.yml usage. | |
# | |
# write_files: | |
# - path: /etc/rc.local | |
# permissions: "0755" | |
# owner: root | |
# content: | | |
# #!/bin/bash | |
# set -ex | |
# DOCKER_VERSION=1.12.0 | |
# DOCKER_URL=https://experimental.docker.com/builds/Linux/x86_64/docker-1.12.0.tgz | |
# SCRIPT_URL=https://gist.githubusercontent.com/rajiteh/ecf83e43c9c7f8443ff2f398e279c3f1/raw/9cba8e0024437a00ae1fd671a1cdebc809961415/switch-rancheros-docker.sh | |
# _tmp=$(mktemp) | |
# # Wait for networking to be available. | |
# for i in {1..15}; do curl -fSso $_tmp $SCRIPT_URL && break || sleep 2; done | |
# source $_tmp | |
# rancher: | |
# console: ubuntu | |
set -e | |
echo "DOCKER_VERSION : ${DOCKER_VERSION}" | |
echo "DOCKER_URL : ${DOCKER_URL}" | |
if [[ -z "${DOCKER_URL}" ]] || [[ -z "${DOCKER_VERSION}" ]]; then | |
echo "DOCKER_URL or DOCKER_VERSION not set." | |
return 1 | |
fi | |
function get_docker_versions { | |
c=$(/usr/bin/docker --version | sed -n 's/.*version \([^,]*\).*/\1/p') | |
d=$(/usr/bin/dockerd --version | sed -n 's/.*version \([^,]*\).*/\1/p') | |
echo "${c}|${d}" | |
} | |
_workdir=/tmp/docker-temp | |
_installed_versions="$(get_docker_versions)" | |
_expected_versions="${DOCKER_VERSION}|${DOCKER_VERSION}" | |
if [[ "${_installed_versions}" == "${_expected_versions}" ]]; then | |
echo "Docker versions match." | |
return 0 | |
fi | |
echo "Detected docker client|server versions: ${_installed_versions}" | |
mkdir -p "${_workdir}" | |
rm -rf "${_workdir}/dock*" | |
cd ${_workdir} | |
echo "Downloading: ${DOCKER_URL}" | |
curl -s "${DOCKER_URL}" -o docker.download | |
echo "Extracting." | |
tar xzf docker.download | |
cd docker/ | |
_docker_bins=$(ls docker*) | |
_bin_paths=("/usr/local/bin" "/usr/bin") | |
echo "Copying and setting up symlinks." | |
for bin in ${_docker_bins[@]}; do | |
sudo rm -f "/usr/local/bin/${bin}-${DOCKER_VERSION}" | |
sudo cp "${bin}" "/usr/local/bin/${bin}-${DOCKER_VERSION}" | |
for bin_path in ${_bin_paths[@]}; do | |
sudo rm -f "${bin_path}/${bin}" | |
sudo ln -s "/usr/local/bin/${bin}-${DOCKER_VERSION}" "${bin_path}/${bin}" | |
done | |
echo "Processed : ${bin}" | |
done | |
echo "New docker client|server versions: $(get_docker_versions)" | |
echo "Restarting.." | |
sleep 2 | |
sudo reboot |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment