🐡
AmazonLinux2022をGitHub self-hosted runnersとして動かす
Amazon Linux 2 は、2023 年 6 月 30 日までサポートされ、セキュリティとメンテナンスの更新が提供されます。
AmazonLinux2のサポートが2023年6月30日までなので、AmazonLinux2022でself-hosted runnerを試してみました。
サンプルコード
AutoScalingGroupでt3.smallのインスタンスを1台起動し、ユーザデータでセルフホストランナーとして登録されるよう処理するようにしています。
ユーザデータの処理
yumではなくdnfでパッケージ管理出来るようになっているのでdnfを使用して必要なパッケージを入れます。
libicu
はランナー登録用スクリプト(config.sh
)を実行する際に必要になります。
sudo dnf install -y jq git libicu-67.1-7.amzn2022.x86_64
デバッグ用途でセッションマネージャーを使用するためにssm-agentをインストールします。AmazonLinux2ではデフォルトで入っていますが、20220417時点のAmazonLinux2022では入っていません。
cd /tmp || exit
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
run.sh
はrootで実行できないため、ec2-userを使用しています。ec2-userは権限昇格出来るため、config.sh
とrun.sh
実行用ユーザを作ることが望ましいです(が今回は省略しています)。
ランナー登録用トークンを取得するためのパーソナルアクセストークンはパラメータストアに格納したものを使用しています。
sudo su - ec2-user <<EOF
mkdir ~/actions-runner
curl -L https://github.com/actions/runner/releases/download/v2.288.1/actions-runner-linux-x64-2.288.1.tar.gz -o \
~/actions-runner/actions-runner-linux-x64-2.288.1.tar.gz
tar xzf ~/actions-runner/actions-runner-linux-x64-2.288.1.tar.gz -C ~/actions-runner
cd ~/actions-runner
./config.sh \
--url "https://github.com/${owner}/${repository}" \
--token $(curl -XPOST -sL -H "Authorization: token $(aws ssm get-parameters --with-decryption --names GITHUB_PERSONAL_ACCESS_TOKEN --region ap-northeast-1 | jq -r .Parameters[].Value)" \
-H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${owner}/${repository}/actions/runners/registration-token" | jq -r .token) \
--name $(curl -s http://169.254.169.254/latest/meta-data/instance-id) \
--runnergroup Default \
--labels ${label} \
--work "_work"
./run.sh
EOF
インスタンスを起動してユーザデータの処理が終わるまで数分待つと、リポジトリ側でランナーとして認識されているのが確認出来ました。
Discussion