Bootstrap FreeKB - RabbitMQ - Create Update or Delete a Queue using Terraform
RabbitMQ - Create Update or Delete a Queue using Terraform

Updated:   |  RabbitMQ articles

This assumes you have setup Terraform as described in RabbitMQ - Getting Started with Terraform. Let's say you have the following files on your Terraform server.

/usr/local/terraform/rabbitmq/main.tf
/usr/local/terraform/rabbitmq/foo/required_provider.tf
/usr/local/terraform/rabbitmq/foo/bindings.tf
/usr/local/terraform/rabbitmq/foo/exchanges.tf
/usr/local/terraform/rabbitmq/foo/policies.tf
/usr/local/terraform/rabbitmq/foo/queues.tf
/usr/local/terraform/rabbitmq/foo/shovels.tf
/usr/local/terraform/rabbitmq/foo/vhosts.tf

 

Add the following to your queues.tf file. This will create a durable queues foo.queue on the foo virtual host.

resource "rabbitmq_queue" "queue1" {
  name = "foo.queue"
  vhost = "foo"

  settings {
    durable = true
    auto_delete = false
  }
}

 

You may need to reissue the terraform init command.

~]# terraform init
Initializing the backend...
Initializing modules...
Initializing provider plugins...
Terraform has been successfully initialized!

 

The terraform plan command can be used to see what Terraform will try to do.

terraform plan

 

By default, the terraform.tfstate file should be found in your root module directory (/usr/local/terraform/rabbitmq in this example).

  • If the queue does not exist and the terraform.tfstate file does not contain the queue, Terraform will create the queue.
  • If the queue exists and the terraform.tfstate file contains the queue and a difference is found between the queue.tf file and the terraform.tfstate file, Terraform will update the queue.
  • If the queue exists and the terraform.tfstate file contains the queue and the queue is removed from the queue.tf file, Terraform will destroy (delete) the queue.

The terraform apply command from your root module directory (/usr/local/terraform/rabbitmq in this example) can be used to create or update the queue.

terraform apply

 

Something like this should be displayed, and you will be prompted to enter yes.

Terraform will perform the following actions:

  # rabbitmq_queue.queue1 will be created
  + resource "rabbitmq_queue" "queue1" {
      + id    = (known after apply)
      + name  = "foo.queue"
      + vhost = "foo"

      + settings {
          + auto_delete = false
          + durable     = true
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

 

After entering yes, the following should be displayed.

rabbitmq_queue.queue1: Creating...
rabbitmq_queue.queue1: Creation complete after 0s [id=foo.queue@foo]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter 32f9b4 in the box below so that we can be sure you are a human.