@@ -15,67 +15,72 @@ set -x
1515${pre_install}
1616
1717# Install AWS CLI
18- apt-get update
19- DEBIAN_FRONTEND=noninteractive apt-get install -y \
20- awscli \
18+ apt-get -q update
19+ DEBIAN_FRONTEND=noninteractive apt-get install -q -y \
2120 build-essential \
21+ ca-certificates \
2222 curl \
2323 git \
2424 iptables \
2525 jq \
26+ systemd-container \
2627 uidmap \
2728 unzip \
2829 wget
2930
31+ install -m 0755 -d /etc/apt/keyrings
32+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
33+ chmod a+r /etc/apt/keyrings/docker.asc
34+ echo " deb [arch=$( dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $( . /etc/os-release && echo " $VERSION_CODENAME " ) stable" > /etc/apt/sources.list.d/docker.list
35+ apt-get -q update
36+ apt-get -q -y install docker-ce docker-ce-cli containerd.io docker-ce-rootless-extras docker-buildx-plugin docker-compose-plugin
37+ systemctl disable --now docker.socket docker.service
38+
39+ # avoid /tmp, might be mounted no-exec
40+ curl -fsSL -o " awscliv2.zip" " https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"
41+ unzip -q awscliv2.zip
42+ aws/install
43+ rm -rf aws awscliv2.zip
44+
3045user_name=ubuntu
3146user_id=$( id -ru $user_name )
3247
3348# install and configure cloudwatch logging agent
34- wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
35- dpkg -i -E ./amazon-cloudwatch-agent.deb
36- amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:${ssm_key_cloudwatch_agent_config}
49+ curl -fsSL -o " /tmp/amazon-cloudwatch-agent.deb" https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
50+ dpkg -i -E /tmp/amazon-cloudwatch-agent.deb
51+ rm -f /tmp/amazon-cloudwatch-agent.deb
52+ amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c " ssm:${ssm_key_cloudwatch_agent_config} "
3753
3854# configure systemd for running service in users accounts
39- cat
> /etc/systemd/
[email protected] << -EOF 40-
41- [Unit]
42- Description=User Manager for UID %i
43- After=user-runtime-dir@%i.service
44- Wants=user-runtime-dir@%i.service
45-
46- [Service]
47- LimitNOFILE=infinity
48- LimitNPROC=infinity
49- User=%i
50- PAMName=systemd-user
51- Type=notify
52-
53- [Install]
54- WantedBy=default.target
55-
55+ mkdir -p /etc/systemd/system/user-$user_id .slice.d
56+ cat > /etc/systemd/system/user-$user_id .slice.d/resources.conf << - EOF
57+ [Slice]
58+ TasksMax=infinity
5659EOF
57-
58- echo export XDG_RUNTIME_DIR=/run/user/$user_id >> /home/$user_name /.bashrc
60+ mkdir -p /home/$user_name /.config/systemd/
61+ cat > /home/$user_name /.config/systemd/user.conf << - EOF
62+ [Manager]
63+ DefaultLimitNOFILE=infinity
64+ DefaultLimitNPROC=infinity
65+ EOF
66+ chown $user_name :$user_name /home/$user_name /.config/systemd/user.conf /home/$user_name /.config/systemd /home/$user_name /.config/
5967
6068systemctl daemon-reload
61- systemctl
enable [email protected] 62- 6369
64- curl -fsSL https://get.docker.com/rootless >> /opt/rootless.sh && chmod 755 /opt/rootless.sh
65- su -l $user_name -c /opt/rootless.sh
66- echo export DOCKER_HOST=unix:///run/user/$user_id /docker.sock >> /home/$user_name /.bashrc
67- echo export PATH=/home/$user_name /bin:$PATH >> /home/$user_name /.bashrc
70+ echo export XDG_RUNTIME_DIR=" /run/user/$user_id " >> " /home/$user_name /.bashrc"
6871
6972# Run docker service by default
7073loginctl enable-linger $user_name
71- su -l $user_name -c " systemctl --user enable docker"
74+ machinectl shell " $user_name @.host" /usr/bin/dockerd-rootless-setuptool.sh install
75+ echo export DOCKER_HOST=" unix:///run/user/$user_id /docker.sock" >> " /home/$user_name /.bashrc"
76+ echo export PATH=" /home/$user_name /bin:$PATH " >> " /home/$user_name /.bashrc"
7277
7378${install_runner}
7479
7580# config runner for rootless docker
7681cd /opt/actions-runner/
77- echo DOCKER_HOST=unix:///run/user/$user_id /docker.sock >> .env
78- echo PATH=/home/$user_name /bin:$PATH >> .env
82+ echo DOCKER_HOST=" unix:///run/user/$user_id /docker.sock" >> .env
83+ echo PATH=" /home/$user_name /bin:$PATH " >> .env
7984
8085${post_install}
8186
0 commit comments