Last active
October 23, 2018 15:30
-
-
Save Pandry/a24b1b681ea5524157799cb013c1b387 to your computer and use it in GitHub Desktop.
This file contains 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 | |
## | |
## fast-run: curl -o install-cloudinit.sh https://gist.githubusercontent.com/Pandry/a24b1b681ea5524157799cb013c1b387/raw/7895d24277abce440fcfd010d7380067b255728e/installCloudinit.sh && chmod +x install-cloudinit.sh && ./install-cloudinit.sh | |
## | |
## Author: Pandry (github.com/Pandry) | |
## Date: 23/10/2018 | |
## Script: CloudInit installer for RHosting.it | |
## Version: 0.1 | |
## | |
if [ $(which dnf) ]; then | |
OS="Fedora" | |
elif [ $(which yum) ]; then | |
OS="RHEL" | |
elif [ $(which apt) ]; then | |
OS="Debian" | |
elif [ $(which apt-get) ]; then | |
OS="DebianOld" | |
#Debian is old, warning message | |
read -p "The current Ubuntu/Debian is quite old and could not work, are you sure you want to continue? " -n 1 -r | |
echo # move to a new line | |
if [[ $REPLY =~ ^[Nn]$ ]] # If user says no, return, otherwise continue | |
then | |
return | |
fi | |
else | |
echo "OS not supported" | |
return | |
fi | |
#Installs the required packages | |
if [ "$OS" == "Fedora" ]; then | |
dnf install git-core python36 yum-utils groupinstall development curl git-core sudo -y | |
elif [ "$OS" == "RHEL" ]; then | |
yum install git-core python36 yum-utils groupinstall development curl git-core sudo -y | |
elif [ "$OS" == "Debian" ]; then | |
apt install python3-dev python3-pip libacl1-dev sudo curl git-core sudo -y | |
elif [ "$OS" == "DebianOld" ]; then | |
apt-get install python3-dev python3-pip libacl1-dev sudo curl git-core sudo -y | |
fi | |
# Downloads CURL | |
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py | |
if [ "$OS" == "RHEL" ] || [ "$OS" == "Fedora" ]; then | |
python36 get-pip.py | |
elif [ "$OS" == "Debian" ] || [ "$OS" == "DebianOld" ]; then | |
python3 get-pip.py | |
else | |
echo "OS not supported" | |
return | |
fi | |
# Downloads the last cloudinit version from github | |
git clone https://github.com/cloud-init/cloud-init.git | |
# Browse | |
cd cloud-init | |
# Installs the needed python requirements | |
pip3 install -r requirements.txt | |
# Installs cloudinit with the necessary python version (changes from debian to RHEL-based distros) | |
if [ "$OS" == "RHEL" ] || [ "$OS" == "Fedora" ]; then | |
python36 setup.py build | |
python36 setup.py install --init-system systemd | |
elif [ "$OS" == "Debian" ] || [ "$OS" == "DebianOld" ]; then | |
python3 setup.py build | |
python3 setup.py install --init-system systemd | |
else | |
echo "OS not supported" | |
return | |
fi | |
sudo ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init | |
#Enables all the things cloudinit wants | |
# https://cloudinit.readthedocs.io/en/latest/topics/boot.html | |
for svc in cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service; do | |
sudo systemctl enable $svc | |
sudo systemctl start $svc | |
done | |
# Check the status - need to be manually checked. | |
cloud-init init --local | |
cloud-init status | |
rm get-pip.py | |
rm -rf cloud-init/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment