Skip to content

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed
 

‎rundocker.sh

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/bash
2+
# FIXME move this and related files into the user data via templates and compression
3+
# this is the install script
4+
# install_script = "/opt/agent/rundocker.sh"
5+
# called on boot.
6+
pwd
7+
ls -latr
8+
. ./.env # for secrets
9+
set -e # stop on any error
10+
export WORKSOURCE="/opt/agent"
11+
snap install aws-cli --classic
12+
apt install -y jq
13+
echo for now install helper tools
14+
apt install -y lsof strace nmap
15+
#apt install -y emacs-nox
16+
# FIXME another account hardcoded
17+
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 767503528736.dkr.ecr.us-east-2.amazonaws.com
18+
adduser --disabled-password --gecos "" agent --home "/home/agent" || echo ignore
19+
git config --global --add safe.directory "/opt/agent"
20+
cd "/opt/agent/" || exit 1 # "we need agent"
21+
git log -1
22+
mkdir -p "/home/agent"
23+
mkdir -p "/var/agent/logs"
24+
chown -R agent:agent "/var/agent/" "/home/agent" "/opt/agent"
25+
mkdir -p "/var/run/agent/secrets/"
26+
27+
## TURN OFF LOGGING
28+
set +x
29+
OPENAI_KEY=$(aws ssm get-parameter --name "agent_openai_key" | jq .Parameter.Value -r )
30+
export OPENAI_KEY
31+
echo "OPENAI_KEY=${OPENAI_KEY}" > "/var/run/agent/secrets/env"
32+
echo "OPENAI_API_KEY=${OPENAI_KEY}" >> "/var/run/agent/secrets/env"
33+
set -x
34+
## TURN ON LOGGING
35+
36+
if ! grep -q "^HOME" "/var/run/agent/secrets/env"; then
37+
echo "HOME=/home/agent" >> "/var/run/agent/secrets/env"
38+
fi
39+
if ! grep -q "^HOME" "/var/run/agent/secrets/env"; then
40+
echo "WORKSPACE_DIR=\${STATE_DIRECTORY}" >> "/var/run/agent/secrets/env"
41+
fi
42+
cp "${WORKSOURCE}/systemd/agent-docker.service" /etc/systemd/system/agent-docker.service
43+
grep . -h -n /etc/systemd/system/agent-docker.service
44+
chown -R agent:agent /var/run/agent/
45+
chown -R agent:agent /opt/agent/
46+
systemctl daemon-reload
47+
systemctl start agent-docker || echo failed
48+
systemctl enable agent-docker || echo failed
49+
systemctl status agent-docker || echo oops2

‎systemd/agent-docker.service

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# derived from https://phil.lavin.me.uk/2021/12/running-docker-containers-from-aws-ecr-with-systemd/
2+
# derived from https://github.com/encode/uvicorn/issues/678
3+
# derived from https://blog.container-solutions.com/running-docker-containers-with-systemd
4+
5+
[Unit]
6+
Description=agent
7+
After=docker.service
8+
Requires=docker.service
9+
StartLimitInterval=200
10+
StartLimitBurst=10
11+
12+
[Service]
13+
EnvironmentFile=/var/run/agent/secrets/env
14+
RestartSec=10
15+
TimeoutStartSec=0
16+
Restart=always
17+
18+
ExecStartPre=-/usr/bin/docker exec %n stop || echo cannot prestop
19+
ExecStartPre=-/usr/bin/docker rm %n || echo cannot preremove
20+
21+
#FIXME hardcoded aws id
22+
ExecStartPre=/usr/bin/bash -c 'docker login -u AWS -p $(aws ecr get-login-password --region us-east-2) 767503528736.dkr.ecr.us-east-2.amazonaws.com'
23+
# 767503528736.dkr.ecr.us-east-2.amazonaws.com/agent/eliza:latest
24+
ExecStartPre=/usr/bin/docker pull 767503528736.dkr.ecr.us-east-2.amazonaws.com/agent/eliza:latest
25+
26+
# must run in /app where the docker installed the node modules for now
27+
ExecStart=/usr/bin/docker run -p 3000:3000 --mount type=bind,source=/opt/agent,target=/opt/agent --env-file /var/run/agent/secrets/env --rm --name %n 767503528736.dkr.ecr.us-east-2.amazonaws.com/agent/eliza:latest
28+
29+
# FIXME: update cloudwatch logs
30+
StandardOutput=file:/var/log/agent_systemd.log
31+
StandardError=file:/var/log/agent_systemd.log
32+
ExecReload=/bin/kill -HUP ${MAINPID}
33+
34+
Restart=always
35+
36+
[Install]
37+
WantedBy=multi-user.target

0 commit comments

Comments
 (0)
Please sign in to comment.