From 30c185905c5ed8187d3bc7b605d54dce9f00f181 Mon Sep 17 00:00:00 2001 From: sbailey <1661003+spbsoluble@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:09:32 -0700 Subject: [PATCH] chore(docs): Adding examples of creating stores via Terraform. --- examples/terraform/multiple/MODULE.MD | 38 ++++++++++++ examples/terraform/multiple/Makefile | 40 ++++++++++++ examples/terraform/multiple/README.md | 69 +++++++++++++++++++++ examples/terraform/multiple/agents.tf | 17 +++++ examples/terraform/multiple/example.tfvars | 30 +++++++++ examples/terraform/multiple/main.tf | 25 ++++++++ examples/terraform/multiple/providers.tf | 26 ++++++++ examples/terraform/multiple/variables.tf | 45 ++++++++++++++ examples/terraform/singleton/MODULE.MD | 39 ++++++++++++ examples/terraform/singleton/Makefile | 40 ++++++++++++ examples/terraform/singleton/README.md | 66 ++++++++++++++++++++ examples/terraform/singleton/agents.tf | 17 +++++ examples/terraform/singleton/example.tfvars | 21 +++++++ examples/terraform/singleton/main.tf | 24 +++++++ examples/terraform/singleton/providers.tf | 26 ++++++++ examples/terraform/singleton/variables.tf | 50 +++++++++++++++ 16 files changed, 573 insertions(+) create mode 100644 examples/terraform/multiple/MODULE.MD create mode 100644 examples/terraform/multiple/Makefile create mode 100644 examples/terraform/multiple/README.md create mode 100644 examples/terraform/multiple/agents.tf create mode 100644 examples/terraform/multiple/example.tfvars create mode 100644 examples/terraform/multiple/main.tf create mode 100644 examples/terraform/multiple/providers.tf create mode 100644 examples/terraform/multiple/variables.tf create mode 100644 examples/terraform/singleton/MODULE.MD create mode 100644 examples/terraform/singleton/Makefile create mode 100644 examples/terraform/singleton/README.md create mode 100644 examples/terraform/singleton/agents.tf create mode 100644 examples/terraform/singleton/example.tfvars create mode 100644 examples/terraform/singleton/main.tf create mode 100644 examples/terraform/singleton/providers.tf create mode 100644 examples/terraform/singleton/variables.tf diff --git a/examples/terraform/multiple/MODULE.MD b/examples/terraform/multiple/MODULE.MD new file mode 100644 index 0000000..46aaf39 --- /dev/null +++ b/examples/terraform/multiple/MODULE.MD @@ -0,0 +1,38 @@ +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 1.5 | +| [keyfactor](#requirement\_keyfactor) | >=2.1.5 | + +## Providers + +| Name | Version | +|------|---------| +| [keyfactor](#provider\_keyfactor) | 2.1.11 | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|------|------| +| [keyfactor_certificate_store.bosch_camera_store](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/resources/certificate_store) | resource | +| [keyfactor_agent.universal_orchestrator](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/data-sources/agent) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [camera\_map](#input\_camera\_map) | A map containing the serial number to IP address of the cameras to be enrolled | `map(string)` | n/a | yes | +| [inventory\_schedule](#input\_inventory\_schedule) | How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update. | `string` | `"12h"` | no | +| [orchestrator\_name](#input\_orchestrator\_name) | The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command | `string` | n/a | yes | +| [server\_password](#input\_server\_password) | The password to authenticate to the Bosch camera | `string` | n/a | yes | +| [server\_use\_ssl](#input\_server\_use\_ssl) | Whether to use SSL when connecting to the Bosch camera | `bool` | `true` | no | +| [server\_username](#input\_server\_username) | The username to authenticate to the Bosch camera | `string` | n/a | yes | + +## Outputs + +No outputs. diff --git a/examples/terraform/multiple/Makefile b/examples/terraform/multiple/Makefile new file mode 100644 index 0000000..1db769c --- /dev/null +++ b/examples/terraform/multiple/Makefile @@ -0,0 +1,40 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +.DEFAULT_GOAL := help + +##@ Utility +help: ## Display this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +deps: ## Install deps for macos + @brew install pre-commit tflint terraform terraform-docs + +docs: ## Run terraform-docs to update module docs. + @terraform-docs markdown . > MODULE.MD + @terraform-docs markdown table --output-file README.md --output-mode inject . + +lint: ## Run tflint + @tflint + +validate: ## Run terraform validate + @terraform init --upgrade + @terraform validate + +precommit/add: ## Install pre-commit hook + @pre-commit install + +precommit/remove: ## Uninstall pre-commit hook + @pre-commit uninstall + diff --git a/examples/terraform/multiple/README.md b/examples/terraform/multiple/README.md new file mode 100644 index 0000000..155f4a5 --- /dev/null +++ b/examples/terraform/multiple/README.md @@ -0,0 +1,69 @@ +# Multiple BoschIPCamera Store Creation Example + +This is an example of how to create multiple camera stores in Keyfactor Command using the Keyfactor Terraform provider. + +## Pre-requisites + +- Terraform is installed on the machine running the Terraform code +- The Keyfactor Terraform provider is installed and configured to communicate to Keyfactor Command. Review + the [Keyfactor provider documentation](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs) + for more information. +- The `BIPCamera` store type is already created in Keyfactor Command. See the [Extension specific documentation](https://github.com/Keyfactor/bosch-ipcamera-orchestrator?tab=readme-ov-file#store-type-configuration) + for more information. +- An orchestrator with the BoschIPCamera extension is registered and approved in Keyfactor Command. + +## Usage + +Modify the `example.tfvars` file to include the necessary information for your environment. Alternatively Terraform will +prompt for each input if no value is provided. + +*NOTE*: This example assumes all cameras are using the same credentials, if this does not suit your use-case then modify +accordingly. + +```bash +terraform init +terraform plan +terraform apply +``` + + + +## Requirements + +| Name | Version | +|---------------------------------------------------------------------------|---------| +| [terraform](#requirement\_terraform) | >= 1.5 | +| [keyfactor](#requirement\_keyfactor) | >=2.1.5 | + +## Providers + +| Name | Version | +|---------------------------------------------------------------------|---------| +| [keyfactor](#provider\_keyfactor) | 2.1.11 | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| +| [keyfactor_certificate_store.bosch_camera_store](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/resources/certificate_store) | resource | +| [keyfactor_agent.universal_orchestrator](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/data-sources/agent) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|---------|:--------:| +| [camera\_map](#input\_camera\_map) | A map containing the serial number to IP address of the cameras to be enrolled | `map(string)` | n/a | yes | +| [inventory\_schedule](#input\_inventory\_schedule) | How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update. | `string` | `"12h"` | no | +| [orchestrator\_name](#input\_orchestrator\_name) | The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command | `string` | n/a | yes | +| [server\_password](#input\_server\_password) | The password to authenticate to the Bosch camera | `string` | n/a | yes | +| [server\_use\_ssl](#input\_server\_use\_ssl) | Whether to use SSL when connecting to the Bosch camera | `bool` | `true` | no | +| [server\_username](#input\_server\_username) | The username to authenticate to the Bosch camera | `string` | n/a | yes | + +## Outputs + +No outputs. + \ No newline at end of file diff --git a/examples/terraform/multiple/agents.tf b/examples/terraform/multiple/agents.tf new file mode 100644 index 0000000..6406bae --- /dev/null +++ b/examples/terraform/multiple/agents.tf @@ -0,0 +1,17 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +data "keyfactor_agent" "universal_orchestrator" { + agent_identifier = var.orchestrator_name +} \ No newline at end of file diff --git a/examples/terraform/multiple/example.tfvars b/examples/terraform/multiple/example.tfvars new file mode 100644 index 0000000..ef80fd7 --- /dev/null +++ b/examples/terraform/multiple/example.tfvars @@ -0,0 +1,30 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# UNCOMMENT AND FILL IN THE FOLLOWING VARIABLES + +# orchestrator_name="my-uo-client-machine-name" +# server_username="camera_username" +# server_password="camera_password" +# camera_map = { +# "068745431065110091" = "192.168.0.1:4444", +# "068745431065110092" = "192.168.0.2:4444", +# "068745431065110093" = "192.168.0.3:4444", +# "068745431065110094" = "192.168.0.4:4444", +# "068745431065110095" = "192.168.0.5:4444", +# "068745431065110096" = "192.168.0.6:4444", +# "068745431065110097" = "192.168.0.7:4444", +# "068745431065110098" = "192.168.0.8:4444", +# "068745431065110099" = "192.168.0.8:4444", +# } \ No newline at end of file diff --git a/examples/terraform/multiple/main.tf b/examples/terraform/multiple/main.tf new file mode 100644 index 0000000..e6dedc6 --- /dev/null +++ b/examples/terraform/multiple/main.tf @@ -0,0 +1,25 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +resource "keyfactor_certificate_store" "bosch_camera_store" { + for_each = var.camera_map + client_machine = each.value//this is camera IP + store_path = each.key //this is camera serial number + agent_identifier = data.keyfactor_agent.universal_orchestrator.agent_identifier + store_type = "BIPCamera" # Must exist in KeyFactor Command + server_username = var.server_username + server_password = var.server_password + server_use_ssl = var.server_use_ssl + inventory_schedule = var.inventory_schedule +} diff --git a/examples/terraform/multiple/providers.tf b/examples/terraform/multiple/providers.tf new file mode 100644 index 0000000..28d243c --- /dev/null +++ b/examples/terraform/multiple/providers.tf @@ -0,0 +1,26 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +terraform { + required_version = ">= 1.5" + required_providers { + keyfactor = { + source = "keyfactor-pub/keyfactor" + version = ">=2.1.5" + } + } +} +provider "keyfactor" { + +} diff --git a/examples/terraform/multiple/variables.tf b/examples/terraform/multiple/variables.tf new file mode 100644 index 0000000..1c1c844 --- /dev/null +++ b/examples/terraform/multiple/variables.tf @@ -0,0 +1,45 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +variable "orchestrator_name" { + type = string + description = "The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command" +} + +variable "camera_map" { + type = map(string) + description = "A map containing the serial number to IP address of the cameras to be enrolled" +} + +variable "server_username" { + type = string + sensitive = true + description = "The username to authenticate to the Bosch camera" +} +variable "server_password" { + type = string + sensitive = true + description = "The password to authenticate to the Bosch camera" +} +variable "inventory_schedule" { + type = string + description = "How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update." + default = "12h" +} + +variable "server_use_ssl" { + default = true + type = bool + description = "Whether to use SSL when connecting to the Bosch camera" +} \ No newline at end of file diff --git a/examples/terraform/singleton/MODULE.MD b/examples/terraform/singleton/MODULE.MD new file mode 100644 index 0000000..4ca5f4e --- /dev/null +++ b/examples/terraform/singleton/MODULE.MD @@ -0,0 +1,39 @@ +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 1.5 | +| [keyfactor](#requirement\_keyfactor) | >=2.1.5 | + +## Providers + +| Name | Version | +|------|---------| +| [keyfactor](#provider\_keyfactor) | 2.1.11 | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|------|------| +| [keyfactor_certificate_store.bosch_camera_store](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/resources/certificate_store) | resource | +| [keyfactor_agent.universal_orchestrator](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/data-sources/agent) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [camera\_ip](#input\_camera\_ip) | The IP address of the Camera. Example: `192.167.231.174:44444`. Include the port if necessary. | `string` | n/a | yes | +| [camera\_serial\_number](#input\_camera\_serial\_number) | Enter the Serial Number of the camera e.g. `068745431065110085`. | `string` | n/a | yes | +| [inventory\_schedule](#input\_inventory\_schedule) | How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update. | `string` | `"12h"` | no | +| [orchestrator\_name](#input\_orchestrator\_name) | The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command | `string` | n/a | yes | +| [server\_password](#input\_server\_password) | The password to authenticate to the Bosch camera | `string` | n/a | yes | +| [server\_use\_ssl](#input\_server\_use\_ssl) | Whether to use SSL when connecting to the Bosch camera | `bool` | `true` | no | +| [server\_username](#input\_server\_username) | The username to authenticate to the Bosch camera | `string` | n/a | yes | + +## Outputs + +No outputs. diff --git a/examples/terraform/singleton/Makefile b/examples/terraform/singleton/Makefile new file mode 100644 index 0000000..1db769c --- /dev/null +++ b/examples/terraform/singleton/Makefile @@ -0,0 +1,40 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +.DEFAULT_GOAL := help + +##@ Utility +help: ## Display this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +deps: ## Install deps for macos + @brew install pre-commit tflint terraform terraform-docs + +docs: ## Run terraform-docs to update module docs. + @terraform-docs markdown . > MODULE.MD + @terraform-docs markdown table --output-file README.md --output-mode inject . + +lint: ## Run tflint + @tflint + +validate: ## Run terraform validate + @terraform init --upgrade + @terraform validate + +precommit/add: ## Install pre-commit hook + @pre-commit install + +precommit/remove: ## Uninstall pre-commit hook + @pre-commit uninstall + diff --git a/examples/terraform/singleton/README.md b/examples/terraform/singleton/README.md new file mode 100644 index 0000000..e06d699 --- /dev/null +++ b/examples/terraform/singleton/README.md @@ -0,0 +1,66 @@ +# Single BoschIPCamera Store Creation Example + +This is an example of how to create a single camera store in Keyfactor Command using the Keyfactor Terraform provider. + +## Pre-requisites + +- Terraform is installed on the machine running the Terraform code +- The Keyfactor Terraform provider is installed and configured to communicate to Keyfactor Command. Review + the [Keyfactor provider documentation](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs) + for more information. +- The `BIPCamera` store type is already created in Keyfactor Command. See the [Extension specific documentation](https://github.com/Keyfactor/bosch-ipcamera-orchestrator?tab=readme-ov-file#store-type-configuration) + for more information. +- An orchestrator with the BoschIPCamera extension is registered and approved in Keyfactor Command. + +## Usage + +Modify the `example.tfvars` file to include the necessary information for your environment. Alternatively Terraform will +prompt for each input if no value is provided. + +```bash +terraform init +terraform plan +terraform apply +``` + + +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 1.5 | +| [keyfactor](#requirement\_keyfactor) | >=2.1.5 | + +## Providers + +| Name | Version | +|------|---------| +| [keyfactor](#provider\_keyfactor) | 2.1.11 | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|------|------| +| [keyfactor_certificate_store.bosch_camera_store](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/resources/certificate_store) | resource | +| [keyfactor_agent.universal_orchestrator](https://registry.terraform.io/providers/keyfactor-pub/keyfactor/latest/docs/data-sources/agent) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [camera\_ip](#input\_camera\_ip) | The IP address of the Camera. Example: `192.167.231.174:44444`. Include the port if necessary. | `string` | n/a | yes | +| [camera\_serial\_number](#input\_camera\_serial\_number) | Enter the Serial Number of the camera e.g. `068745431065110085`. | `string` | n/a | yes | +| [inventory\_schedule](#input\_inventory\_schedule) | How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update. | `string` | `"12h"` | no | +| [orchestrator\_name](#input\_orchestrator\_name) | The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command | `string` | n/a | yes | +| [server\_password](#input\_server\_password) | The password to authenticate to the Bosch camera | `string` | n/a | yes | +| [server\_use\_ssl](#input\_server\_use\_ssl) | Whether to use SSL when connecting to the Bosch camera | `bool` | `true` | no | +| [server\_username](#input\_server\_username) | The username to authenticate to the Bosch camera | `string` | n/a | yes | + +## Outputs + +No outputs. + \ No newline at end of file diff --git a/examples/terraform/singleton/agents.tf b/examples/terraform/singleton/agents.tf new file mode 100644 index 0000000..6406bae --- /dev/null +++ b/examples/terraform/singleton/agents.tf @@ -0,0 +1,17 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +data "keyfactor_agent" "universal_orchestrator" { + agent_identifier = var.orchestrator_name +} \ No newline at end of file diff --git a/examples/terraform/singleton/example.tfvars b/examples/terraform/singleton/example.tfvars new file mode 100644 index 0000000..08ff615 --- /dev/null +++ b/examples/terraform/singleton/example.tfvars @@ -0,0 +1,21 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# UNCOMMENT AND FILL IN THE FOLLOWING VARIABLES: + +# orchestrator_name="my-uo-client-machine-name" +# server_username="camera_username" +# server_password="camera_password" +# camera_serial_number="068745431065110085" +# camera_ip="192.167.231.174:44444" diff --git a/examples/terraform/singleton/main.tf b/examples/terraform/singleton/main.tf new file mode 100644 index 0000000..91f7b53 --- /dev/null +++ b/examples/terraform/singleton/main.tf @@ -0,0 +1,24 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +resource "keyfactor_certificate_store" "bosch_camera_store" { + client_machine = var.camera_ip + store_path = var.camera_serial_number + agent_identifier = data.keyfactor_agent.universal_orchestrator.agent_identifier + store_type = "BIPCamera" # Must exist in KeyFactor Command + server_username = var.server_username + server_password = var.server_password + server_use_ssl = var.server_use_ssl + inventory_schedule = var.inventory_schedule +} diff --git a/examples/terraform/singleton/providers.tf b/examples/terraform/singleton/providers.tf new file mode 100644 index 0000000..28d243c --- /dev/null +++ b/examples/terraform/singleton/providers.tf @@ -0,0 +1,26 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +terraform { + required_version = ">= 1.5" + required_providers { + keyfactor = { + source = "keyfactor-pub/keyfactor" + version = ">=2.1.5" + } + } +} +provider "keyfactor" { + +} diff --git a/examples/terraform/singleton/variables.tf b/examples/terraform/singleton/variables.tf new file mode 100644 index 0000000..be24cb8 --- /dev/null +++ b/examples/terraform/singleton/variables.tf @@ -0,0 +1,50 @@ +# Copyright 2024 Keyfactor +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http:#www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +variable "orchestrator_name" { + type = string + description = "The name or GUID of the orchestrator that has been registered and approved in Keyfactor Command" +} + +variable "camera_serial_number" { + type = string + description = "Enter the Serial Number of the camera e.g. `068745431065110085`." +} + +variable "camera_ip" { + type = string + description = "The IP address of the Camera. Example: `192.167.231.174:44444`. Include the port if necessary." +} + +variable "server_username" { + type = string + sensitive = true + description = "The username to authenticate to the Bosch camera" +} +variable "server_password" { + type = string + sensitive = true + description = "The password to authenticate to the Bosch camera" +} +variable "inventory_schedule" { + type = string + description = "How often to update the inventory, valid options are number followed by 'm' for minutes, 'h' for hours, '1d' for daily, or 'immediate' for immediate inventory update." + default = "12h" +} + +variable "server_use_ssl" { + default = true + type = bool + description = "Whether to use SSL when connecting to the Bosch camera" +} \ No newline at end of file