blob: 44d407d15a6ba6744855cd7113d7bd13c16c0c41 [file] [log] [blame]
#!/bin/bash
#
# This script sets up an Ubuntu 18.04 server to be a ASF Jenkins agent.
# After this setup is complete, an INFRA jira ticket must be opened for ASF Infra to complete the process.
#
# Script Requirements:
# * Ubuntu 18.04
# * run as root
# * internet access
#
# To run the script…
# 1. ssh into server and allow sudo without password. For example: `%sudo ALL=(ALL:ALL) NOPASSWD:ALL` in /etc/sudoers
# 2. scp agent-install.sh <server>:~/
# 3. ssh <server>
# 4. sudo bash agent-install.sh
#
command -v lsb_release >/dev/null 2>&1 || { echo >&2 "Expecting an Ubuntu server with lsb_release installed"; exit 1; }
if ! lsb_release -d | grep -q "Ubuntu 18.04" ; then
echo "Ubuntu 18.04 expected. Found $(lsb_release -d | cut -d' ' -f2)"
exit 1
fi
if [ "$EUID" -ne 0 ] ; then
echo "Please run as root"
exit 1
fi
if ! ping -c 1 -q apt.puppetlabs.com >&/dev/null ; then
echo "Cannot access apt.puppetlabs.com"
exit 1
fi
# Remove the default installation of bind9
apt-get -y autoremove --purge bind9
rm -r /var/cache/bind
apt-get -y install net-tools software-properties-common
# Ensure `hostname` is configured to the server's public ip
hostname `dig +short myip.opendns.com @resolver1.opendns.com`
# Two users need to be added, each with a different public key authorized.
# The jenkins user is for the CloudBees master, and the asf999 user is for ASF Infra maintenance.
# Add jenkins user
groupadd -g 910 jenkins
useradd -m -u 910 -g 910 -s /bin/bash jenkins
mkdir /home/jenkins/.ssh
# Authorize ssh pub key for jenkins user
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAtxkcKDiPh1OaVzaVdc80daKq2sRy8aAgt8u2uEcLClzMrnv/g19db7XVggfT4+HPCqcbFbO3mtVnUnWWtuSEpDjqriWnEcSj2G1P53zsdKEu9qCGLmEFMgwcq8b5plv78PRdAQn09WCBI1QrNMypjxgCKhNNn45WqV4AD8Jp7/8=' > /home/jenkins/.ssh/authorized_keys"
chown -R jenkins:jenkins /home/jenkins/.ssh
chmod 700 /home/jenkins/.ssh
chmod 600 /home/jenkins/.ssh/authorized_keys
# Add asf999 user
groupadd -g 999 asf999
useradd -m -u 999 -g 999 -s /bin/bash asf999
mkdir /home/asf999/.ssh
usermod -a -G sudo asf999
# Authorize ssh pub key for asf999 user:
# more info, see https://github.com/apache/infrastructure-puppet/blob/deployment/data/common.yaml#L55-L73
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDKU0OarYDnMtEyneHtOAA/mpeJbXLCVA2yy8wl2fGQ/kzdRhBDCCjusV0D83cwKckJEGVInbYruLwq7Rk4e1k0hwHoVR28ps4B0IrsFlkQrfkS0plGq5VlbUU1lu9hdR+2o992NzK3BGJa6Bde493FaEnJf+s4dQM9kkb9keYXLdh9lC99xlxYg7P5gSlv+0tCAo3LisKM1vVfjLaXIv94KwRNjcrLH0rjrQt0UnkGTjoP+WonILz9CsFfJDncofFp4gyyioYDTqgyGbVauGAdfctrqc+c1x4sz+Hk2ocFjGZEGzHZ8E/ZRXpaa9QNeyc4vKAm9CSWyonLNr3+KyJfQP82w5IZIF8rMBjl3/m0zPUgXSitc6ebrLUFhrESyoFF0RfeqEYUzjf52uRVlPVSiSATmvccdHel/G6lUZrQScYUPOZT++C7TZNPzRNy/MzeLjF0jcrDYjCXEj1r9TkQtByoHKc0Cikokcmn15SPX9nBWScN0kQ9DCnQ1DRx0C2L/KJwiV8i/ziel8RFqg8n71v1H8Ve40F/m+03dZAUGzlE1wu+lXu/ZXjBgIu8vOmz3LK+k4UskiMiiktYq1N9RG+4l30JR/OlLIRhlKiernmWUFyGC4npbquaTKUsB6G6RKOC1WnLpuM5U1jIKVeOejoptJilaHvO0RiZxNP/ZQ== humbedooh-puppet-20130726' > /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC71HP9YspO1SDZ/5qNJNGE3MW27XiYc5gx2kaCJ2ZT3unZVRU60p3/fbMG5XwOzvmbN3Gzp2l2/8jKmngnQO0oHY9E2ZcVh14TblbgSErVPMM5zZBg40PvDRk61eECnGkXYfVKU5RzcDq5yYr4FFFFRh3pWjjBDBWtSczAXYavWPHOpNpQ1onudiCev/KHADXZS8J/HwhHmkVmxSWX+9upQlPlokXulZpMFqx6FPbBLk45Miq5xSYS3mN8dW3OupDHiKavKoLuzqom+7ndLhFUMX468htnhfUvTs9ajh7xBTfhziPJh+PkjeQLWNLdMQe0L8Ptd4IAxqSkegTCNit/LZbK/Jo6z7sBSdk2N+f8UIlK2do/9KlN30sFbVAK3nsIekxR+xQldEOMaCr83IM/b0G/mefxFrCdSm3z9SW84WKVt+DNADVKUMTm9ngOp2cjxPeXQuL5vTABaeSrzeMTAWagWTRQQVT/6XMNNJRbpHj+Fp8rd4sIRnqv86hYL1aoE1THuxqT451ZRYHJoCiZ3PQPMEhAzR5F6Voji6RkyJL8S662Ai/FesEeNyc2hcErfnfFCsKWckUOg8YOIR+DSfuJ6LtZZB/+SAE/QzKzIvMWuLCiGFR2oSiY7MqeJCm5CeF06YGddnQhGoqM6ZC6/hFkWAJ0Uzc5DRlxyFovaQ== gav_mac' >> /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-dss AAAAB3NzaC1kc3MAAACAVaMrsS2AKvOFn4RZjBWxrwF3NxJ6jvy3ZJhbd+LH/JigL1J6o26Z5AV8HsfhOuVqj6kPaIAJ3bwaMjHrzl4nkFDS3QXDD3psrZbMtqIaugwzNOY7WDsHF0sfr6A/PoktNkoXF/BPqByx9DJ7UKq2+MP9LTj9r7Nzb5nS5L+dwDUAAAAVAI6xcksdw9IsgHW8LUeWSS+pGeXzAAAAgDhIVTB7UgFhX8Qjm/IdKVvR6hjYJ04HQnTqsnDzM2ju/Di4ATpogsUunnI7ZsBgOPF/moAzBlK+r+4621ggAW1xfRysvJYtqS0IYmyLPWryIb2xK4i6bagYhjtD2YAJbFuYmZHfyCUf82MVgqPeRRn9BWzCVzvA+7+K1rj5RlvUAAAAgBWbDECq37AFDQuMHRJiTAYJQLVBtfx3Fr/XbgkcX7DMPLXooDIAJWpqtyyfxYRHC4KRKmzDWE97Cw/03DpthAgpB+svxJghh895oAtoaCxhVzUrV0HUKQlNvg9a8s83w/iiHmoURB8kPZGyW1WJPS4ezsj/62WK1LXjmJK81pvf' >> /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAn5MYIbWTJB6ni69vgMUJXqexctL5KTG9yAP6nfas2Akdu6GAO0fL1cCGq/TV/0LKWM/XeSkdZMo1LxqsmJZpp9BvcDYEmUhR31N+eQE1SPf8qrtFJFAN1GbmMxYwiYbAO+4zjJu+YLV0zUeSMZX56pCpbd4kaDLgY8rXzUbo934e2s5AdKHUKh65gzMwP9gzyeq02/jEfET2VSN7Xz0mqxbF47+81beQZuxySfO1M68mFLQavSt6J/E90M9ljy/oylGTTUnmZlmcxk4smuN2V8YzZsJHkGB9bh0bK5xHqci9QRmSA4nxprNL6bqpnUHtYtNQsvPrTlyEFD28qePQEQ== cml' >> /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtqqDXzCNpuQvr3yJa1XbhHDTW/hRwGMZCbninWxwWsd/E7QkuCdstBT2iGihbizbZlnh0mchjtvhouIADkbCyizvtRdujl0Vi1pg5i6YOKKkFc5/s2BRoqsrj0FLu7d2/oHddOz2DO1B8nfGfVyC9mxcqKVpOaGqfdcalLrAH60e7MmH9FkrEVMHQIgGaq1J9W0FFczcxrsCEu5FxXaFTGEos1BmnnsrdtCmQhSJ2n41cngZxrj+yy/HJSj++aDJ2HCwyvRnOX6PX7iNtLyRDX947+A4VbCRQtAC7IbccKHvTGTHSzBXs6PUNUEleZi5VHA6Xm4ubVNiNLwmGYlthw== ke4qqq@nalleyt61.keymark.dom' >> /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJivoCwPuWBhdeg/e/OcmfRkDLX3DTJPdiRJd3XbHP4QP+yjDeBqq57O956UEk1qoG/JGQx3vOXk96oSTFKpOJcZopZ2Dg1lJAWWccKompkrUGP0R8lb8Ki9VWf1TujNagDuDzxt9jruwW5jEeG1iOhgu0J0Qufd1up6Q5yvBE5dohpZ2OOhZennIudWOXqRduUVuNR6J5umfRVSPbg1bJXjjvwC5aeNGCJdH/NEp71+n7YjSfavoHbG8y3B3OvwJq3xQMqW5LZz0oxfpriIbBITzG8LO09TNnPLXc+CqGuMyqFHcv7KhhtQiA6oTom/9/Ylsg1HVmGxS/ARMW53czld8iVMFFdGGAs4Y3tV9glokG8JTaekYLTQoTJH41ZtF8gDXpabxrsfUQUDuETlpMJ+21U1xnwahMaMQzNL5+Kq2/KOc+qmLzrk4KY3Om3svKSs/v5nd3KHE5sDaL0A69l6wqIFzKiPTUSHew8wG1+BouRWJQ2NDow0F/QUpUKlXRC2zwQgn4Ha939EiQX1l2zDeGcBY+ohDHbgRZWhsXR8g7MSKKPQfQ16DBOkEzhQ6ztmTs2u/43olUEwjKjyVQXhbA5uI26eZyFYv5QBM7xwXpmbX8BTNqHhl02kIJGn2uSPYD9IpeAkRkt7INf60UUKOuIP2F3BTvFnhDnrdMIQ== christ@ECTO1' >> /home/asf999/.ssh/authorized_keys"
sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr8lZ/ACqhAQjZIsZJy/WswWW4hmlwEG7kr3t4+NCMj/8CI4AaLTTZJpOVW5u52gvJnEsMnp2ZLqZhaeWSa/m6SnNlzKqqe16DXP7ngq56qD8KjTnxnb5HNrqYiJJhLXpmd/fm89yOq8k4Tv4bOQzL0bgCA6xBxWFuZ8TPaUCNcXxidLqe2W8gQx4AffhFjrPdQPKnhVQ8pcC5dlpi17cBKHCTSdVM0wT7pLGMULTVbD25yHPtCI/jp47AGKE9IMYYxDlFVnePtWU19lRqjn4gjsv3dVYUhCibXyrz6RAxCZwXhK+5Et4uPcdttMO56wyxXC3lijTETvQX2rIkc4WX warwalrux@warwalrux-XPS-15-9570' >> /home/asf999/.ssh/authorized_keys"
chown -R asf999:asf999 /home/asf999/.ssh
chmod 700 /home/asf999/.ssh
chmod 600 /home/asf999/.ssh/authorized_keys
# Install Puppet 6 (not Puppet 5 that Bionic would normally install) and configured the puppet.conf file ready for use
wget https://apt.puppetlabs.com/puppet-release-bionic.deb
dpkg -i puppet-release-bionic.deb
rm puppet-release-bionic.deb
apt-get update
apt-get install -y puppet-agent
sh -c 'cat >> /etc/puppetlabs/puppet/puppet.conf << EOF
[main]
server = pm01-lw-us.apache.org
EOF'