Graylog の Terraform を CI/CDで実行する

    以前 Graylog を Terraform で管理する記事を書きました。 https://suzuki-shunsuke.github.io/graylog-terraform/ 今回はそれを CI/CD で実行できるようにした話です。 ただし、今回の内容は Graylog に限らず Terraform を CI/CD で実行する方法として使えると思います。 今回実現したのは以下のことです。 PR時にテストをする plan/* tag を push すると terraform plan が実行される apply/* tag を push すると terraform apply が実行され、tfstate がコミット、プッシュされる ソースコード https://github.com/suzuki-shunsuke/example/tree/master/graylog-terraform に置いておきました。 https://github.com/suzuki-shunsuke/example/blob/master/graylog-terraform/role.tf#L13-L25 https://github.com/suzuki-shunsuke/example/blob/master/graylog-terraform/user.tf#L12-L21 https://github.com/suzuki-shunsuke/example/blob/master/graylog-terraform/.drone.yml https://github.com/suzuki-shunsuke/example/blob/master/graylog-terraform/terraform.tfvars.tpl https://github.com/suzuki-shunsuke/example/blob/master/graylog-terraform/drone_pipeline_commands/git.sh CI/CD用の user, role を作成する まずは role を作成します。 resource "graylog_role" "terraform" { name = "terraform" description = "terraform" permissions = [ "dashboards:*", "indexsets:*", "inputs:*", "roles:*", "streams:*", "users:*", ] } permission は terraform で管理するリソースのみ付与しますが、 それでも結構強い権限を付与するので取扱に注意してください。