An open API service indexing awesome lists of open source software.

https://github.com/terraform-ibm-modules/terraform-ibm-mq-operator

The module installs an IBM MQ operator on the existing cluster.
https://github.com/terraform-ibm-modules/terraform-ibm-mq-operator

core-team deployable-architecture ibm-cloud ibm-mq-operator terraform terraform-module

Last synced: about 2 months ago
JSON representation

The module installs an IBM MQ operator on the existing cluster.

Awesome Lists containing this project

README

        

# IBM MQ Operator on Red Hat OpenShift Container Platform module

[![Implemented (No quality checks)](https://img.shields.io/badge/Status-Implemented%20(No%20quality%20checks)-yellowgreen)](https://terraform-ibm-modules.github.io/documentation/#/badge-status)
[![latest release](https://img.shields.io/github/v/release/terraform-ibm-modules/terraform-ibm-module-template?logo=GitHub&sort=semver)](https://github.com/terraform-ibm-modules/terraform-ibm-module-template/releases/latest)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com/)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

The module installs an IBM MQ operator on the existing cluster.

For more information about the IBM MQ operator refer to the official documentation available [here](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=integration-using-mq-operator)

For more information about the IBM MQ refer to the official documentation available [here](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=mq-about)

## Overview
* [terraform-ibm-mq-operator](#terraform-ibm-mq-operator)
* [Examples](./examples)
* [Complete example](./examples/complete)
* [Contributing](#contributing)

## terraform-ibm-mq-operator

### Usage

```hcl

##############################################################################
# Config providers
##############################################################################

provider "ibm" {
ibmcloud_api_key = var.ibmcloud_api_key # pragma: allowlist secret
region = var.region
}

provider "helm" {
kubernetes {
host = data.ibm_container_cluster_config.cluster_config.host
token = data.ibm_container_cluster_config.cluster_config.token
}
}

provider "kubernetes" {
host = data.ibm_container_cluster_config.cluster_config.host
token = data.ibm_container_cluster_config.cluster_config.token
}

##############################################################################
# IBM MQ operator deployment on the OCP cluster
##############################################################################

data "ibm_container_cluster_config" "cluster_config" {
cluster_name_id = var.cluster_id
config_dir = "${path.module}/kubeconfig"
endpoint_type = var.cluster_config_endpoint_type != "default" ? var.cluster_config_endpoint_type : null # null represents default
}

module "ibm_mq_operator" {
# Replace "master" with a GIT release version to lock into a specific release
source = "https://github.com/terraform-ibm-modules/terraform-ibm-mq-operator.git?ref=master"
cluster_id = var.cluster_id
add_ibm_operator_catalog = true
create_ibm_mq_operator_namespace = false
ibm_mq_operator_namespace = "openshift-operators"
ibm_mq_operator_target_namespace = "ibm-mq-operator"
cluster_config_endpoint_type = "default"
operator_helm_release_namespace = "ibm-mq-operator"
create_ibm_mq_queue_manager_namespace = true
ibm_mq_queue_manager_namespace = "ibm-mq-operator-qm"
create_queue_manager = var.create_queue_manager
queue_manager_name = "ibm-mq-operator-qm"
queue_manager_license = var.queue_manager_license
queue_manager_license_usage = var.queue_manager_license_usage
queue_manager_version = var.queue_manager_version
}

locals {
mq_queue_manager_web_url = var.create_queue_manager ? "https://${module.ibm_mq_operator.ibm_mq_queue_manager_web_url}/ibmmq/console/login.html" : "MQ Queue Manager is not deployed."
}

output "ibm_mq_queue_manager_web_url" {
description = "Queue Manager web URL"
value = local.mq_queue_manager_web_url
}
```

### Required IAM access policies

- IAM Services
- **Kubernetes** service
- `Viewer` platform access
- `Manager` service access

### Requirements

| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.3.0 |
| [external](#requirement\_external) | >=2.2.3, <3.0.0 |
| [helm](#requirement\_helm) | >= 2.8.0, <3.0.0 |
| [ibm](#requirement\_ibm) | >= 1.59.0, < 2.0.0 |
| [kubernetes](#requirement\_kubernetes) | >= 2.16.1, <3.0.0 |
| [null](#requirement\_null) | >= 3.2.1, < 4.0.0 |
| [time](#requirement\_time) | >= 0.9.1, < 1.0.0 |

### Modules

No modules.

### Resources

| Name | Type |
|------|------|
| [helm_release.ibm_mq_operator](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
| [helm_release.ibm_mq_operator_group](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
| [helm_release.ibm_mq_queue_manager](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
| [helm_release.ibm_operator_catalog](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
| [kubernetes_namespace.helm_release_operator_namespace](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |
| [kubernetes_namespace.ibm_mq_operator_namespace](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |
| [kubernetes_namespace.ibm_mq_queue_manager_namespace](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |
| [null_resource.confirm_ibm_mq_operator_operational](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
| [time_sleep.wait_catalog](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [time_sleep.wait_ibm_mq_operator](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [time_sleep.wait_ibm_mq_queue_manager](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
| [external_external.mq_queue_manager_url](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/external) | data source |
| [ibm_container_cluster_config.cluster_config](https://registry.terraform.io/providers/ibm-cloud/ibm/latest/docs/data-sources/container_cluster_config) | data source |

### Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [add\_ibm\_operator\_catalog](#input\_add\_ibm\_operator\_catalog) | Install the IBM Operator Catalog in the cluster before installing the IBM MQ Operator. Default is `true`. | `bool` | `true` | no |
| [cluster\_config\_endpoint\_type](#input\_cluster\_config\_endpoint\_type) | Specify which type of endpoint to use for for cluster config access: 'default', 'private', 'vpe', 'link'. 'default' value will use the default endpoint of the cluster. | `string` | `"default"` | no |
| [cluster\_id](#input\_cluster\_id) | ID of the target cluster where the IBM MQ operator will be installed. | `string` | n/a | yes |
| [create\_ibm\_mq\_operator\_namespace](#input\_create\_ibm\_mq\_operator\_namespace) | Set to true to create the namespace where the IBM MQ Operator will be deployed. Default to `false`. | `bool` | `false` | no |
| [create\_ibm\_mq\_queue\_manager\_namespace](#input\_create\_ibm\_mq\_queue\_manager\_namespace) | Set to true to create the namespace where the IBM MQ Queue Manager will be installed. Default to `true`. | `bool` | `true` | no |
| [create\_queue\_manager](#input\_create\_queue\_manager) | Set to true to create a Queue Manager for the IBM MQ operator. Default is `true`. | `bool` | `true` | no |
| [ibm\_mq\_operator\_namespace](#input\_ibm\_mq\_operator\_namespace) | Namespace where the IBM MQ operator is deployed. Default is `openshift-operators`. | `string` | `"openshift-operators"` | no |
| [ibm\_mq\_operator\_target\_namespace](#input\_ibm\_mq\_operator\_target\_namespace) | Namespace to be watched by the IBM MQ Operator. Default is `null`, which means that the operator watches all the namespaces. | `string` | `null` | no |
| [ibm\_mq\_queue\_manager\_namespace](#input\_ibm\_mq\_queue\_manager\_namespace) | Namespace where the IBM MQ Queue Manager will be installed. Its only used when `var.create_ibm_mq_queue_manager_namespace` is set to true. | `string` | `null` | no |
| [operator\_helm\_release\_namespace](#input\_operator\_helm\_release\_namespace) | Namespace where the helm releases are deployed. Default is `ibm-mq-operator`. | `string` | `"ibm-mq-operator"` | no |
| [queue\_manager\_license](#input\_queue\_manager\_license) | IBM MQ Queue Manager license. More info on IBM MQ Queue Manager licenses and its usage can be seen here: https://www.ibm.com/docs/en/ibm-mq/9.3?topic=mqibmcomv1beta1-licensing-reference. | `string` | `null` | no |
| [queue\_manager\_license\_usage](#input\_queue\_manager\_license\_usage) | IBM MQ Queue Manager license usage. More info on IBM MQ Queue Manager licenses and its usage can be seen here: https://www.ibm.com/docs/en/ibm-mq/9.3?topic=mqibmcomv1beta1-licensing-reference. | `string` | `null` | no |
| [queue\_manager\_name](#input\_queue\_manager\_name) | Name of the IBM MQ Queue Manager. | `string` | `null` | no |
| [queue\_manager\_version](#input\_queue\_manager\_version) | IBM MQ Queue Manager version. Make sure the version is compatible with the IBM MQ Queue Manager license and usage. | `string` | `"9.3.3.3-r1"` | no |

### Outputs

| Name | Description |
|------|-------------|
| [ibm\_mq\_operator\_namespace](#output\_ibm\_mq\_operator\_namespace) | Namespace where the IBM MQ operator is installed. |
| [ibm\_mq\_operator\_target\_namespace](#output\_ibm\_mq\_operator\_target\_namespace) | Namespace watched by the IBM MQ operator. |
| [ibm\_mq\_queue\_manager\_web\_url](#output\_ibm\_mq\_queue\_manager\_web\_url) | Queue Manager web URL |

## Contributing

You can report issues and request features for this module in GitHub issues in the module repo. See [Report an issue or request a feature](https://github.com/terraform-ibm-modules/.github/blob/main/.github/SUPPORT.md).

To set up your local development environment, see [Local development setup](https://terraform-ibm-modules.github.io/documentation/#/local-dev-setup) in the project documentation.