概要
こちらを使ってみました
環境
- Ubuntu 24.04
- terraform 1.9.7
- nifcloud provider 1.16
インストール
sudo apt update && sudo apt install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
gpg --no-default-keyring \
--keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
--fingerprint
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt install terraform
terraform -install-autocomplete
事前準備
Gitlab 側の任意のプロジェクトで Runner を登録する準備をしましょう
glrt-
から始まるトークンが取得できれば OK です
このトークンは後述する variables.tf の token 変数として使われ環境変数から読み込みます
また今回は nifcloud を使うので nifcloud のアクセスキーとシークレットキーを準備しておいてください
main.tf
今回は3つのリソースを作成します
- Runner 本体
- Runner パラメータグループ
- Runner と Gitlab の紐づけ
流れとして Runner 本体を作成後にパラメータグループを作成しそのパラメータグループを使って Runner と Gitlab を紐づけます
今回は紐づける Gitlab は https://gitlab.com をデフォルトの値にしています
resource "nifcloud_devops_runner" "test" {
name = var.runner_name
instance_type = var.instance_type
availability_zone = var.az
concurrent = var.concurrent
description = var.description
}
resource "nifcloud_devops_runner_parameter_group" "test" {
name = var.parameter_group_name
}
resource "nifcloud_devops_runner_registration" "group_runner" {
runner_name = var.runner_name
gitlab_url = var.gitlab_url
parameter_group_name = var.parameter_group_name
# 事前にgitlabからrunnerを登録するためのトークンを取得しておくこと
token = var.token
}
variables.tf
変数を定義します
各種変数には default を用意していますが必要に応じて変更もしくは環境変数 TF_VAR_xxx
から上書きしてもらって OK です
token は環境変数を使って挿入するので default はありません
variable "runner_name" {
default = "test-runner"
type = string
}
variable "instance_type" {
default = "c-small"
type = string
}
variable "az" {
default = "east-11"
type = string
}
variable "concurrent" {
default = 10
type = number
}
variable "description" {
default = "memo"
type = string
}
variable "parameter_group_name" {
default = "test-pg"
type = string
}
variable "gitlab_url" {
default = "https://gitlab.com"
type = string
}
variable "token" {
type = string
sensitive = true
}
providers.tf
nifcloud プロバイダを使う定義を記載してるだけです
リージョンなど必要に応じて変更してください
terraform {
required_providers {
nifcloud = {
source = "nifcloud/nifcloud"
}
}
}
provider "nifcloud" {
region = "jp-east-1"
}
注意事項
自身 Gitlab と作成した Runner が疎通できていないといけないので一度実行して Runner を作成したあとに IP が払い出されるんのでその IP を Gitlab のファイアウォールに追加してあげてから再度 apply すれば Runner 登録も完了します
動作確認
- terraform init
-
TF_VAR_token=glrt-xxx NIFCLOUD_ACCESS_KEY_ID=xxx NIFCLOUD_SECRET_ACCESS_KEY=xxx terraform plan
-
TF_VAR_token=glrt-xxx NIFCLOUD_ACCESS_KEY_ID=xxx NIFCLOUD_SECRET_ACCESS_KEY=xxx terraform apply
Gitlab 側から Runner が登録されていれば OK です
最後に
Runner トークンを払い出すのが面倒ですがそれもうまくいけば自動化できるかなと思います
現状は複数のトークンを指定することはできませんがうまくやれば count と組み合わせて一括登録的なこともできるかなと思います
0 件のコメント:
コメントを投稿