@@ -15,67 +15,72 @@ set -x
15
15
${pre_install}
16
16
17
17
# 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 \
21
20
build-essential \
21
+ ca-certificates \
22
22
curl \
23
23
git \
24
24
iptables \
25
25
jq \
26
+ systemd-container \
26
27
uidmap \
27
28
unzip \
28
29
wget
29
30
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
+
30
45
user_name=ubuntu
31
46
user_id=$( id -ru $user_name )
32
47
33
48
# 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} "
37
53
38
54
# 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
56
59
EOF
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/
59
67
60
68
systemctl daemon-reload
61
- systemctl
enable [email protected]
62
-
63
69
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"
68
71
69
72
# Run docker service by default
70
73
loginctl 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"
72
77
73
78
${install_runner}
74
79
75
80
# config runner for rootless docker
76
81
cd /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
79
84
80
85
${post_install}
81
86
0 commit comments