とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Terraformでニフクラをプロビジョニング

最近HashiCorpの製品でライセンスの変更がありTerraformやVaultを利用している界隈がざわざわしてましたね。かく言う私も例外ではありません。ちょっと調べてみると、製品を使用しているユーザーには影響がなくて、製品のソースコードを利用して商用サービスを運用していたベンダーに影響があるようです。こちらの説明がわかりやすかったです。

さて、余談はここまでにして、ニフクラ利用してますか?私は今まであまり利用していなかったんですが、社内でニフクラを使う要望がでてきたので情報収集をしたところ、なんとTerraformのProviderが公開されいました。早速使ってみます。

NIFCLOUD Provider

registry.terraform.io

github.com

OIDCには対応してなくて、アクセスキーとシークレットで操作するようです。これらのクレデンシャル情報はprovider nifcloud {}ブロックに記載してもいいですし、環境変数からも渡すことができます。

provider nicloud {
  region     = "jp-east-1"
  access_key = "my-access-key"
  secret_key = "my-secret-key"
}

or

export NIFCLOUD_DEFAULT_REGION=jp-east-1
export NIFCLOUD_ACCESS_KEY_ID=my-access-key
export NIFCLOUD_SECRET_ACCESS_KEY=my-secret-key

Gitで管理するファイルに直書きするのはかなり危険なので、後者の環境変数でコントロールするのがよいでしょう。

インスタンスを起動してみる

デモを用意しました。

github.com

必要なツールの一覧はリポジトリの.tool-versionsに記載されています。asdfを使ってる方はリポジトリルールでasdf plugin add terraform && asdf installを叩いてインストールしてください。asdfを使用していない方はお使いのOSに合わせてTerraform 1.5以上をインストールしてください。

Terraformからニフクラを操作できるようにクレデンシャルを設定します。アカウント管理のアクセスキーから「アクセスキー」と「シークレットアクセスキー」をコピーして環境変数にセットします。

export NIFCLOUD_ACCESS_KEY_ID=アクセスキー
export NIFCLOUD_SECRET_ACCESS_KEY=シークレットアクセスキー

クレデンシャルが設定できていればplanが通るはずです。

terraform plan

作成するリソースの一覧が出力されれば成功です。

続いてリソースを作成します。

terraform apply

数分待てばインスタンスが起動してきます。

デモをapplyをするとリポジトリルートにnifcloud_rsaという秘密鍵が作成されます。これを使用してインスタンスsshできます。sshコマンドは以下で確認できます。

terraform output -raw ssh_command

端末にコピペして実行するとインスタンスにsshログインできます。

インスタンスの削除

以下のコマンドでインスタンスの削除ができます。

terraform destroy

リポジトリルートのnifcloud_rsaも一緒に削除されます。削除されて困る場合はどこか別のディレクトリにコピーして保存してください。

まとめ

Terraformを使用してニフクラにインスタンスを作ることができました。インスタンスの作成以外にもDNSやHatoba、RDBなどのリソースが用意されています。ニフクラで環境構築する時は積極的にIaCを利用していけそうです。