12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/bin/bash -x
- exec > >(tee /var/log/user-data.log | logger -t user-data -s 2>/dev/console) 2>&1
- ${pre_install}
- # Install AWS CLI
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y \
- awscli \
- jq \
- curl \
- wget \
- git \
- uidmap \
- build-essential \
- unzip
- USER_NAME=runners
- useradd -m -s /bin/bash $USER_NAME
- USER_ID=$(id -ru $USER_NAME)
- # install and configure cloudwatch logging agent
- wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
- dpkg -i -E ./amazon-cloudwatch-agent.deb
- amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:${ssm_key_cloudwatch_agent_config}
- # configure systemd for running service in users accounts
- cat >/etc/systemd/user@UID.service <<-EOF
- [Unit]
- Description=User Manager for UID %i
- After=user-runtime-dir@%i.service
- Wants=user-runtime-dir@%i.service
- [Service]
- LimitNOFILE=infinity
- LimitNPROC=infinity
- User=%i
- PAMName=systemd-user
- Type=notify
- [Install]
- WantedBy=default.target
- EOF
- echo export XDG_RUNTIME_DIR=/run/user/$USER_ID >>/home/$USER_NAME/.profile
- systemctl daemon-reload
- systemctl enable user@UID.service
- systemctl start user@UID.service
- curl -fsSL https://get.docker.com/rootless >>/opt/rootless.sh && chmod 755 /opt/rootless.sh
- su -l $USER_NAME -c /opt/rootless.sh
- echo export DOCKER_HOST=unix:///run/user/$USER_ID/docker.sock >>/home/$USER_NAME/.profile
- echo export PATH=/home/$USER_NAME/bin:$PATH >>/home/$USER_NAME/.profile
- # Run docker service by default
- loginctl enable-linger $USER_NAME
- su -l $USER_NAME -c "systemctl --user enable docker"
- ${install_runner}
- # config runner for rootless docker
- cd /opt/actions-runner/
- echo DOCKER_HOST=unix:///run/user/$USER_ID/docker.sock >>.env
- echo PATH=/home/$USER_NAME/bin:$PATH >>.env
- ${post_install}
- cd /opt/actions-runner
- ${start_runner}
|