2016-11-30 05:21:53 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
platform="$1"
|
2019-03-27 23:40:27 +00:00
|
|
|
python_version="$2"
|
|
|
|
python_interpreter="python${python_version}"
|
2016-11-30 05:21:53 +00:00
|
|
|
|
|
|
|
cd ~/
|
|
|
|
|
2019-03-27 04:20:35 +00:00
|
|
|
install_pip () {
|
2019-03-27 23:40:27 +00:00
|
|
|
if ! "${python_interpreter}" -m pip.__main__ --version --disable-pip-version-check 2>/dev/null; then
|
2019-03-27 04:20:35 +00:00
|
|
|
curl --silent --show-error https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
|
2019-03-27 23:40:27 +00:00
|
|
|
"${python_interpreter}" /tmp/get-pip.py --disable-pip-version-check --quiet
|
2019-03-27 04:20:35 +00:00
|
|
|
rm /tmp/get-pip.py
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2016-11-30 05:21:53 +00:00
|
|
|
if [ "${platform}" = "freebsd" ]; then
|
2019-03-27 23:40:27 +00:00
|
|
|
py_version="$(echo "${python_version}" | tr -d '.')"
|
|
|
|
|
2017-07-14 04:24:22 +00:00
|
|
|
while true; do
|
2017-11-29 08:46:08 +00:00
|
|
|
env ASSUME_ALWAYS_YES=YES pkg bootstrap && \
|
2019-03-27 04:20:35 +00:00
|
|
|
pkg install -q -y \
|
2017-07-14 04:24:22 +00:00
|
|
|
bash \
|
|
|
|
curl \
|
|
|
|
gtar \
|
2019-03-27 23:40:27 +00:00
|
|
|
"python${py_version}" \
|
|
|
|
"py${py_version}-Jinja2" \
|
|
|
|
"py${py_version}-virtualenv" \
|
|
|
|
"py${py_version}-cryptography" \
|
2017-07-14 04:24:22 +00:00
|
|
|
sudo \
|
2019-03-27 04:20:35 +00:00
|
|
|
&& break
|
|
|
|
echo "Failed to install packages. Sleeping before trying again..."
|
|
|
|
sleep 10
|
2017-07-14 04:24:22 +00:00
|
|
|
done
|
2017-07-08 05:28:53 +00:00
|
|
|
|
2019-03-27 04:20:35 +00:00
|
|
|
install_pip
|
|
|
|
|
|
|
|
if ! grep '^PermitRootLogin yes$' /etc/ssh/sshd_config > /dev/null; then
|
|
|
|
sed -i '' 's/^# *PermitRootLogin.*$/PermitRootLogin yes/;' /etc/ssh/sshd_config
|
|
|
|
service sshd restart
|
|
|
|
fi
|
2017-07-07 23:52:40 +00:00
|
|
|
elif [ "${platform}" = "rhel" ]; then
|
2018-11-17 03:09:27 +00:00
|
|
|
if grep '8\.' /etc/redhat-release; then
|
|
|
|
while true; do
|
2019-03-27 04:20:35 +00:00
|
|
|
curl --silent --show-error -o /etc/yum.repos.d/rhel-8-beta.repo http://downloads.redhat.com/redhat/rhel/rhel-8-beta/rhel-8-beta.repo && \
|
2018-11-17 03:09:27 +00:00
|
|
|
dnf config-manager --set-enabled rhel-8-for-x86_64-baseos-beta-rpms && \
|
|
|
|
dnf config-manager --set-enabled rhel-8-for-x86_64-appstream-beta-rpms && \
|
2019-03-27 04:20:35 +00:00
|
|
|
yum module install -q -y python36 && \
|
|
|
|
yum install -q -y \
|
2018-11-17 03:09:27 +00:00
|
|
|
gcc \
|
|
|
|
python3-devel \
|
|
|
|
python3-jinja2 \
|
|
|
|
python3-virtualenv \
|
|
|
|
python3-cryptography \
|
|
|
|
iptables \
|
2019-03-27 04:20:35 +00:00
|
|
|
&& break
|
|
|
|
echo "Failed to install packages. Sleeping before trying again..."
|
|
|
|
sleep 10
|
2018-11-17 03:09:27 +00:00
|
|
|
done
|
|
|
|
else
|
|
|
|
while true; do
|
2019-03-27 04:20:35 +00:00
|
|
|
yum install -q -y \
|
2018-11-17 03:09:27 +00:00
|
|
|
gcc \
|
|
|
|
python-devel \
|
|
|
|
python-virtualenv \
|
|
|
|
python2-cryptography \
|
2019-03-27 04:20:35 +00:00
|
|
|
&& break
|
|
|
|
echo "Failed to install packages. Sleeping before trying again..."
|
|
|
|
sleep 10
|
2018-11-17 03:09:27 +00:00
|
|
|
done
|
|
|
|
|
2019-03-27 04:20:35 +00:00
|
|
|
install_pip
|
2018-11-17 03:09:27 +00:00
|
|
|
fi
|
2019-03-27 04:20:35 +00:00
|
|
|
elif [ "${platform}" = "osx" ]; then
|
|
|
|
while true; do
|
|
|
|
pip install --disable-pip-version-check --quiet \
|
|
|
|
virtualenv \
|
|
|
|
&& break
|
|
|
|
echo "Failed to install packages. Sleeping before trying again..."
|
|
|
|
sleep 10
|
|
|
|
done
|
2016-11-30 05:21:53 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Generate our ssh key and add it to our authorized_keys file.
|
|
|
|
# We also need to add localhost's server keys to known_hosts.
|
|
|
|
|
|
|
|
if [ ! -f "${HOME}/.ssh/id_rsa.pub" ]; then
|
2019-01-23 22:19:54 +00:00
|
|
|
ssh-keygen -m PEM -q -t rsa -N '' -f "${HOME}/.ssh/id_rsa"
|
2016-11-30 05:21:53 +00:00
|
|
|
cp "${HOME}/.ssh/id_rsa.pub" "${HOME}/.ssh/authorized_keys"
|
|
|
|
for key in /etc/ssh/ssh_host_*_key.pub; do
|
|
|
|
pk=$(cat "${key}")
|
|
|
|
echo "localhost ${pk}" >> "${HOME}/.ssh/known_hosts"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Improve prompts on remote host for interactive use.
|
2018-09-21 18:38:22 +00:00
|
|
|
# shellcheck disable=SC1117
|
2016-11-30 05:21:53 +00:00
|
|
|
cat << EOF > ~/.bashrc
|
|
|
|
alias ls='ls -G'
|
|
|
|
export PS1='\[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
|
|
|
EOF
|
2017-07-07 23:52:40 +00:00
|
|
|
|
|
|
|
# Make sure ~/ansible/ is the starting directory for interactive shells.
|
|
|
|
if [ "${platform}" = "osx" ]; then
|
|
|
|
echo "cd ~/ansible/" >> ~/.bashrc
|
|
|
|
fi
|