deploy-templates/aws/scripts/userdata.tpl (103 lines of code) (raw):
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/usr/bin/env bash
USER="minio"
GROUP="minio"
HOME="/home/minio"
# Detect package management system.
APT_GET=$(which apt-get 2>/dev/null)
apt update && apt install -y unzip libtool libltdl-dev sharutils curl software-properties-common
user_ubuntu() {
# UBUNTU user setup
if ! getent group $${GROUP} >/dev/null
then
sudo addgroup --system $${GROUP} >/dev/null
fi
if ! getent passwd $${USER} >/dev/null
then
sudo adduser \
--system \
--disabled-login \
--ingroup $${GROUP} \
--home $${HOME} \
--no-create-home \
--shell /bin/false \
$${USER} >/dev/null
fi
}
if [[ ! -z $${APT_GET} ]]; then
logger "Setting up user $${USER} for Debian/Ubuntu"
user_ubuntu
else
logger "$${USER} user not created due to OS detection failure"
exit 1;
fi
logger "User setup complete"
MINIO_URL="${minio_url}"
curl --silent --output /usr/local/bin/minio $${MINIO_URL}
chmod 0755 /usr/local/bin/minio
chown minio:minio /usr/local/bin/minio
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/minio
MINIO_VOLUME_FS=`blkid -o value -s TYPE ${minio_volume_path}`
if [[ -z $${MINIO_VOLUME_FS} ]] ; then
mkfs.xfs ${minio_volume_path}
fi
mkdir -p /usr/local/share/minio/storage
echo "${minio_volume_path} /usr/local/share/minio xfs defaults 0 0" >> /etc/fstab
mount /usr/local/share/minio
chown minio:minio -R /usr/local/share/minio
mkdir /etc/minio
chown minio:minio /etc/minio
cat << EOF > /etc/default/minio
MINIO_ROOT_USER=${minio_root_user}
MINIO_VOLUMES="/usr/local/share/minio/storage"
MINIO_OPTS="-C /etc/minio --address :9000 --console-address :9001"
MINIO_ROOT_PASSWORD="${minio_root_password}"
EOF
chown minio:minio /etc/default/minio
cat << EOF > /lib/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local/
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"/usr/local/share/minio/\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable minio
systemctl restart minio
curl --silent --output /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 0755 /usr/local/bin/mc
mc config host add platform-minio http://127.0.0.1:9000 minio ${minio_root_password}
mc mb platform-minio/${bucket_name}