最近HashiCorpの製品でライセンスの変更がありTerraformやVaultを利用している界隈がざわざわしてましたね。かく言う私も例外ではありません。ちょっと調べてみると、製品を使用しているユーザーには影響がなくて、製品のソースコードを利用して商用サービスを運用していたベンダーに影響があるようです。こちらの説明がわかりやすかったです。
さて、余談はここまでにして、ニフクラ利用してますか?私は今まであまり利用していなかったんですが、社内でニフクラを使う要望がでてきたので情報収集をしたところ、なんとTerraformのProviderが公開されいました。早速使ってみます。
NIFCLOUD Provider
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で管理するファイルに直書きするのはかなり危険なので、後者の環境変数でコントロールするのがよいでしょう。
インスタンスを起動してみる
デモを用意しました。
必要なツールの一覧はリポジトリの.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を利用していけそうです。