見出し画像

terraform cloud + gitlabの設定を1からやる



gitlabを使う場合まずprojectを作る

なんか適当でもいいから作っといて。ただし空だとエラーになるので。ここではterraformディレクトリに格納した

terraform/providers.tf 

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

awsを使うという事を示している。基本的にregionはap-northeast-1を指定している。

terraform cloudでアカウントを作る

無い場合は作っておく

organizationを作る

terraform cloudはまず最上位の階層としてorganizationを準備することになっている。これはurlの一部にも含まれるので適当な名前は付けられないし、terraform cloud内で一意である必要もある(まあurlに含まれますから当然ね)


適当なorganizationを作った

あとメールも入れとく。

workspaceを作る

organizationの下にぶらさがるモノである。organizationの中にworkspaceがいくつか作れる仕様になっている。これは一意である必要は無いがorganization内では当然ユニークさは求められる。

ここでは「Create a workspace」を行う

トリガーの設定

トリガーの選択

このように3通りのトリガー方法があり、通常一番左のVersion Control Workflowを使う。ってかそれ以外使った事なし。


このように4つのサービスに対応している。ここではgitlabを使うとする。


ここでNameRedirect URIが提示される。これはコピペアイコンがあるのでわかるがgitlab側にセットする必要がある。

 register a new OAuth Application.

というわけで上記のリンクを押してgitlabに飛ぶ

gitlab側の画面

gitlab側の(どっちかわからんくなるといかんから強調)Add new applicationからNameRedirect URIを前の画像の例のコピれそうなところからコピって貼り付けとく。



Scopesに関してはは指定の通り「api」のみを選択する。ここで


Application IDとsecretが出てくるのでこれをコピって


こんな感じでConnectする。最終確認でAuthorizeしていいかってところでAuthorizeボタンを押せば接続できるはず。

続くssh関連はsubmoduleとかうんぬんでのadvancedな奴なのでskipしておいてよい

そしたら


レポジトリの選択画面

冒頭で作っておいたと思われるrepositoriesをチョイスする。無い場合は作っといて。その場合冒頭でも書いたけど中に何も入ってないとエラーになるので注意してください。その場合前に戻ってとりあえずaws providerでも放りこんでおいて


このように適当なワークスペースが出来た。しかしNo variablesといわれているように変数が何もない。これは変数がないとawsに接続できないということでもある

aws 接続

IAMの作成

terraformは特に強いアクセス権限を必要とするのでAdministratorAccessにしておけばまあ間違いないっちゃ間違いないがterraformの構築に一通り満足したら即座にキーを無効にしておくとかしておくこと。

環境変数のセット

ここでのkeyとsecretをセットしていく

このVariablesのセクションにて

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

を設定するんだけどこれはEnvironment variableにセットするのであってTerraform variablesではない。間違えないように。

AWS_SECRET_ACCESS_KEYの方は確実にsensitiveにしておくこと。

最初のplan


ワーキングディレクトリ的なやつの設定(必要であれば)

の前にgitでterraform/ディレクトリとかを切った場合は設定で教える必要がある

これはVersion Controlの設定から行う

planの実行

ではplanしていこう

このStart new planとかそういうところから行っていくと。

プランが終了すればokだ。まあawsの設定しか書いてないので何事もなければ必ず成功するはずである。次回からはちゃんとterraformを用いてawsインフラを作っていくぞい


この記事が気に入ったらサポートをしてみませんか?