ラベル nifcloud の投稿を表示しています。 すべての投稿を表示
ラベル nifcloud の投稿を表示しています。 すべての投稿を表示

2025年9月17日水曜日

nifcloud の Gitlab インスタンスにリモートアクセスVPNゲートウェイ経由でプライベートIPアドレスでアクセスする方法

nifcloud の Gitlab インスタンスにリモートアクセスVPNゲートウェイ経由でプライベートIPアドレスでアクセスする方法

概要

前回EasyRSAを使って nifcloud のリモートアクセスVPNゲートウェイを接続しました
今回は nifcloud 側に Gitlab インスタンスにプライベートIPを割り当て割り当てたプライベートIPを使ってリモートアクセスVPNゲートウェイ経由でアクセスしてみます

環境

  • macOS 15.6.1
    • OpenVPN Connect-3.7.1

Gitlab インスタンスにプライベートIPを割り振る

前回リモートアクセスVPNゲートウェイ用に作成したPVLANを使って Gitlab インスタンスにプライベートIPを割り振ります

Gitlab インスタンスのファイアウォールに macOS からのアクセスを許可する

macOS 側の IP 帯は 192.168.1.0/24 なのでこれを追加します
また VPN 経由の場合 192.168 から 172.16 に変換されてアクセスも来るので PVLAN の 172.16.0.0/16 も許可します

確認用で ICMP を追加していますがこれはなくても OK です

macOS 側の hosts ファイルを編集する

プライベートIPでアクセスできるようにします

  • sudo vim /private/etc/hosts
172.16.0.100    xxx.jp-east-1.gitlab.devops.nifcloud.com

OpenVPN Connect を使って VPN 接続する

前回登録したプロフィールを使って接続します

アクセスできるか確認する

hosts に登録した FQDN でアクセスできるか確認しましょう
問題なくアクセスできれば Gitlab ログインの画面が表示されます

あくせすできない場合は ping を打ってみたり Gitlab 側のファイアウォールの設定などを確認しましょう

FQDN でうまくアクセスできない場合は

macOS の場合 /private/etc/hosts に書いた情報を優先的に使ってくれるのですがキャッシュがあるとそれが更に優先されます

一度キャッシュを削除してから再度アクセスしてみてください

  • sudo dscacheutil -flushcache
  • sudo killall -HUP mDNSResponde

以下でプライベートIPになることを確認しましょう

  • dscacheutil -q host -a name xxx.jp-east-1.gitlab.devops.nifcloud.com
name: xxx.jp-east-1.gitlab.devops.nifcloud.com
ip_address: 172.16.0.100

最後に

nifcloud のリモートアクセスVPNゲートウェイを使って Gitlab インスタンスにプライベート IP でアクセスしてみました

hosts ファイルを編集する必要があるのが面倒ですそればっかりはどうしようもないかなと思います

2025年9月16日火曜日

nifcloud のリモートアクセスVPNゲートウェイを使って macOS とニフクラをVPN接続する

nifcloud のリモートアクセスVPNゲートウェイを使って macOS とニフクラをVPN接続する

概要

試してみたのでメモです
macOS 側は OpenVPN Connect を使います

環境

  • macOS 15.6.1
    • OpenVPN Connect-3.7.1

事前準備

こちらの記事を参考にサーバ証明書とクライアント証明書を作成しておきましょう
また作成したサーバ証明書は nifcloud 側にアップロードしておきます

PVLAN 作成

作成時の設定ポイントは以下です
この CIDR は接続元の macOS 側で払い出されているプライベート IP 帯と被らないようにしましょう
なお今回 macOS 側は 192.168.1.0/24 がプライベート IP 帯になります

  • CIDR -> 172.16.0.0/16

リモートアクセスVPNゲートウェイの作成

作成時の設定ポイントは以下です
IP アドレスは nifcloud 側に作成した PVLAN 上の CIDR 範囲から指定します
ネットワークプールのCIDR は macOS 側のプライベート IP 帯を指定します
サーバ証明書は Let’s Encrypt で取得した fullchain.pem を指定します
なので CA 証明書は fullchain.pem から分割した CA 証明書を nifcloud にアップロードして指定します

  • IPアドレス -> 172.16.0.1
  • ネットワークプールのCIDR -> 192.168.1.0/24
  • サーバー証明書 -> アップロードしたサーバ証明書
  • CA 証明書 -> アップロードしたCA証明書

ユーザの追加

リモートアクセスVPNゲートウェイにユーザを追加します
作成したリモートアクセスVPNゲートウェイユーザを選択しプルダウンから「ユーザ作成」で追加します

好きなユーザ名パスワードで作成しましょう
なおこのユーザ名とパスワードは macOS から接続時に使います

クライアント設定ファイルのダウンロード

作成したリモートアクセスVPNゲートウェイユーザを選択し「クライアント設定ファイル->ダウンロード」でダウンロードできます

これを使って OpenVPN Connect から接続します

ovpn の編集

nifcloud からダウンロードした ovpn ファイルはそのままでは使えないので編集します
事前に作成したクライアント証明書、クライアント証明書キー、CA証明書の情報をダウンロードした ovpn ファイルを開いて編集します

  • <cert></cert> タグの追加
  • <key></key> タグの追加
  • <ca></ca> タグの追加
  • 各種 [inline] のある行の削除

OpenVPN Connect インストール

  • brew install openvpn-connect

OpenVPN Connect を使って接続テスト

ダウンロードした ovpn ファイルを編集後にダブルクリックすると勝手に設定を取り込んでくれます
あとは接続し先ほど作成したユーザ名とパスワードで接続できるか確認しましょう

上記のようになれば接続完了です

最後に

nifcloud のリモートアクセスVPNゲートウェイを使って macOS から VPN 接続してみました
あとは nifcloud 上に作成した PVLAN に接続するインスタンスを作成しプライベート IP アドレスを付与すれば自宅の Mac からプライベート IP で nifcloud 上のインスタンスにアクセスできるようになります

参考サイト

2024年10月19日土曜日

terraform の nifcloud provider を使って Gitlab Runner を構築してみた

terraform の nifcloud provider を使って Gitlab Runner を構築してみた

概要

こちらを使ってみました

環境

  • 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 と組み合わせて一括登録的なこともできるかなと思います

参考サイト