Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terraform Support for Satellite Storage Configurations & Assignments #4775

Merged
merged 3 commits into from
Sep 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 38 additions & 8 deletions .secrets.baseline
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"files": "go.mod|go.sum|.*.map|^.secrets.baseline$",
"lines": null
},
"generated_at": "2023-09-14T05:19:33Z",
"generated_at": "2023-09-14T15:01:09Z",
"plugins_used": [
{
"name": "AWSKeyDetector"
Expand Down Expand Up @@ -552,31 +552,41 @@
"hashed_secret": "91199272d5d6a574a51722ca6f3d1148edb1a0e7",
"is_secret": false,
"is_verified": false,
"line_number": 94,
"line_number": 95,
"type": "Secret Keyword",
"verified_result": null
},
{
"hashed_secret": "a8d42722d33725b90f8e5ca1ae8aed3edaac55bd",
"is_secret": false,
"is_verified": false,
"line_number": 109,
"line_number": 110,
"type": "Secret Keyword",
"verified_result": null
},
{
"hashed_secret": "5f28e11957b762c5558d22b7ad9b15d822cb856a",
"is_secret": false,
"is_verified": false,
"line_number": 111,
"line_number": 112,
"type": "Secret Keyword",
"verified_result": null
},
{
"hashed_secret": "c88488e962fe2062632f389e755794fc3c29ff0d",
"is_secret": false,
"is_verified": false,
"line_number": 112,
"line_number": 113,
"type": "Secret Keyword",
"verified_result": null
}
],
"examples/ibm-satellite/modules/configuration/README.md": [
{
"hashed_secret": "bf10dae7b89461df3fd3c48f86ec23543710e8cd",
"is_secret": false,
"is_verified": false,
"line_number": 67,
"type": "Secret Keyword",
"verified_result": null
}
Expand Down Expand Up @@ -2905,6 +2915,16 @@
"verified_result": null
}
],
"ibm/service/satellite/resource_ibm_satellite_storage_configuration_test.go": [
{
"hashed_secret": "f32b67c7e26342af42efabc674d441dca0a281c5",
"is_secret": false,
"is_verified": false,
"line_number": 118,
"type": "Secret Keyword",
"verified_result": null
}
],
"ibm/service/schematics/data_source_ibm_schematics_action.go": [
{
"hashed_secret": "49f3bb8f759241df51c899d3725d877bad58f66e",
Expand Down Expand Up @@ -3626,23 +3646,23 @@
"hashed_secret": "f855f5027fd8fdb2df3f6a6f1cf858fffcbedb0c",
"is_secret": false,
"is_verified": false,
"line_number": 89160,
"line_number": 89080,
"type": "Secret Keyword",
"verified_result": null
},
{
"hashed_secret": "5fb0fa884132a8724a8d7cba55853737e442adbd",
"is_secret": false,
"is_verified": false,
"line_number": 111481,
"line_number": 111658,
"type": "Secret Keyword",
"verified_result": null
},
{
"hashed_secret": "1e5c2f367f02e47a8c160cda1cd9d91decbac441",
"is_secret": false,
"is_verified": false,
"line_number": 141026,
"line_number": 141194,
"type": "Secret Keyword",
"verified_result": null
}
Expand Down Expand Up @@ -4779,6 +4799,16 @@
"verified_result": null
}
],
"website/docs/r/satellite_storage_configuration.html.markdown": [
{
"hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030",
"is_secret": false,
"is_verified": false,
"line_number": 42,
"type": "Secret Keyword",
"verified_result": null
}
],
"website/docs/r/sm_arbitrary_secret.html.markdown": [
{
"hashed_secret": "d47dcacc720a39e236679ac3e311a0d58bb6519e",
Expand Down
23 changes: 22 additions & 1 deletion examples/ibm-satellite/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ This example uses below modules to set up the satellite location with IBM enviro
5. [satellite-route](modules/route) This module will create openshift route.
6. [satellite-endpoint](modules/endpoint) This module will create satellite endpoint.
7. [satellite-dns](modules/dns) This module will register public IPs to control plane & open-shit cluster subdomain DNS records.

8. [satellite-storage-configuration](modules/configuration) This module will create and manage storage configurations in your satellite location.
9. [satellite-storage-assignment](modules/assignment) This module will assign your storage configurations to clusters or cluster groups.

## Usage

Expand Down Expand Up @@ -115,6 +116,26 @@ module "satellite-endpoint" {
client_certificate = var.client_certificate
}

module "satellite-storage-configuration" {
source = "./modules/configuration"

location = var.location
config_name = var.config_name
storage_template_name = var.storage_template_name
storage_template_version = var.storage_template_version
user_config_parameters = var.user_config_parameters
user_secret_parameters = var.user_secret_parameters
storage_class_parameters = var.storage_class_parameters
}

module "satellite-storage-assignment"{
source = "./modules/assignment"

assignment_name = var.assignment_name
cluster = var.cluster
config = var.config
controller = var.controller
}
```

## Note
Expand Down
8 changes: 8 additions & 0 deletions examples/ibm-satellite/assignment.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module "satellite-storage-assignment"{
source = "./modules/assignment"

assignment_name = var.assignment_name
cluster = var.cluster
config = var.config
controller = var.controller
}
11 changes: 11 additions & 0 deletions examples/ibm-satellite/configuration.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module "satellite-storage-configuration" {
source = "./modules/configuration"

location = var.location
config_name = var.config_name
storage_template_name = var.storage_template_name
storage_template_version = var.storage_template_version
user_config_parameters = var.user_config_parameters
user_secret_parameters = var.user_secret_parameters
storage_class_parameters = var.storage_class_parameters
}
85 changes: 85 additions & 0 deletions examples/ibm-satellite/modules/assignment/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# This Module is used to create satellite storage assignment

This module creates a `satellite storage assignment` based on a storage template of your choice. For more information on storage templates and their parameters refer -> https://cloud.ibm.com/docs/satellite?topic=satellite-storage-template-ov&interface=ui

## Prerequisite

* Set up the IBM Cloud command line interface (CLI), the Satellite plug-in, and other related CLIs.
* Install cli and plugin package
```console
ibmcloud plugin install container-service
```
## Usage

```
terraform init
```
```
terraform plan
```
```
terraform apply
```
```
terraform destroy
```
## Example Usage

``` hcl
module "satellite-storage-assignment" {
assignment_name = var.assignment_name
cluster = var.cluster
config = var.config
controller = var.controller
}
```

### Assigning a Configuration to a cluster
```hcl
resource "ibm_satellite_storage_assignment" "odf_assignment" {
assignment_name = var.assignment_name
config = var.config
cluster = var.cluster
controller = var.controller
}
```

### Assigning a Configuration to Cluster Groups
```hcl
resource "ibm_satellite_storage_assignment" "odf_assignment" {
assignment_name = var.assignment_name
config = var.config
groups = var.groups
}
```

### Updating the Configuration Revision to a cluster
```hcl
resource "ibm_satellite_storage_assignment" "odf_assignment" {
assignment_name = var.assignment_name
config = var.config
cluster = var.cluster
controller = var.controller
update_config_revision = true
}
```

<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
## Inputs

| Name | Description | Type | Required |
|------|-------------|------|---------|
| ibmcloud\_api\_key | IBM Cloud API key | `string` | true |
| assignment_name | Name of the Assignment. | `string` | true |
| groups | One or more cluster groups on which you want to apply the configuration. Note that at least one cluster group is required. | `list[string]` | true |
| cluster | ID of the Satellite cluster or Service Cluster that you want to apply the configuration to. | `string` | true |
| config | Storage Configuration Name or ID. | `string` | true |
| controller | The Name or ID of the Satellite Location. | `string` | true |
| update_config_revision | Update an assignment to the latest available storage configuration version. | `bool` | false |

## Note
* You cannot use the `groups` argument with `cluster` & `controller`, this is applicable when creating assignments to cluster groups.
* Similarly `cluster` & `controller` are to be used together and cannot be used with `groups`, this is applicable when creating assignments to clusters.


<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
7 changes: 7 additions & 0 deletions examples/ibm-satellite/modules/assignment/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Provision satellite_storage_assignment resource instance
resource "ibm_satellite_storage_assignment" "instance" {
assignment_name = var.assignment_name
cluster = var.cluster
config = var.config
controller = var.controller
}
7 changes: 7 additions & 0 deletions examples/ibm-satellite/modules/assignment/provider.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
terraform {
required_providers {
ibm = {
source = "ibm-cloud/ibm"
}
}
}
29 changes: 29 additions & 0 deletions examples/ibm-satellite/modules/assignment/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
variable "assignment_name" {
type = string
description = "Name of the Assignment."
}

variable "groups" {
type = list(string)
description = "One or more cluster groups on which you want to apply the configuration. Note that at least one cluster group is required."
}

variable "cluster" {
type = string
description = "ID of the Satellite cluster or Service Cluster that you want to apply the configuration to."
}

variable "config" {
type = string
description = "Storage Configuration Name or ID."
}

variable "controller" {
type = string
description = "The Name or ID of the Satellite Location."
}

variable "update_config_revision" {
type = bool
description = "Update an assignment to the latest available storage configuration version."
}
85 changes: 85 additions & 0 deletions examples/ibm-satellite/modules/configuration/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# This Module is used to create satellite storage configuration

This module creates a `satellite storage configuration` based on a storage template of your choice. For more information on storage templates and their parameters refer -> https://cloud.ibm.com/docs/satellite?topic=satellite-storage-template-ov&interface=ui

## Prerequisite

* Set up the IBM Cloud command line interface (CLI), the Satellite plug-in, and other related CLIs.
* Install cli and plugin package
```console
ibmcloud plugin install container-service
```
## Usage

```
terraform init
```
```
terraform plan
```
```
terraform apply
```
```
terraform destroy
```
## Example Usage

``` hcl
module "satellite-storage-configuration" {
source = "./modules/configuration"
location = var.location
config_name = var.config_name
storage_template_name = var.storage_template_name
storage_template_version = var.storage_template_version
user_config_parameters = var.user_config_parameters
user_secret_parameters = var.user_secret_parameters
storage_class_parameters = var.storage_class_parameters
}
```

### Example using the `odf-remote` storage template
``` hcl
resource "ibm_satellite_storage_configuration" "odf_storage_configuration" {
location = var.location
config_name = var.config_name
storage_template_name = "odf-remote"
storage_template_version = "4.12"
user_config_parameters = {
osd-size = "100Gi"
osd-storage-class = "ibmc-vpc-block-metro-5iops-tier"
billing-type = "advanced"
cluster-encryption = "false"
ibm-cos-endpoint = ""
ibm-cos-location = ""
ignore-noobaa = "false"
kms-base-url = ""
kms-encryption = "false"
kms-instance-id = ""
kms-instance-name = ""
kms-token-url = ""
num-of-osd = "1"
odf-upgrade = "false"
perform-cleanup = "false"
worker-nodes = ""
}
user_secret_parameters = {
iam-api-key = "api-key-value"
}
}
```

<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
## Inputs

| Name | Description | Type | Required |
|------|-------------|------|---------|
| ibmcloud\_api\_key | IBM Cloud API key | `string` | true |
| config_name | The Storage Configuration Name. | `string` | true |
| storage_template_name | The Name of the Storage Template to create the configuration. | `string` | true |
| storage_template_version | The Version of the Storage Template. | `string` | true |
| user_config_parameters | The different configuration parameters available based on the selected storage template | `map` | true |
| user_secret_parameters | The different secrets required based on the selected storage template | `map` | true |
| storage_class_parameters | Define your own storage classes if supported by the storage template | `list[map]` | true |

<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
Loading