Infrastructure as Code (IaC) for Distributed FME Server Deployments in the Cloud

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2022.0

Introduction

Infrastructure as Code (IaC) is the process of provisioning and managing resources, typically found in a data center, via machine-readable definitions. For deployments in the cloud, IaC is a critical tool to provide reliable and reproducible solutions across multiple environments. In this article, we want to share some templates to provision distributed deployments of FME Server on Windows in the cloud using common IaC tools.
 

Example IaC templates

The provided templates can be used as boilerplate code for custom deployments making it easier to implement a reliable and reproducible solution and also allows to integrate the deployment of FME Server into existing CI/CD workflows. These examples are not complete solutions and cannot be used for production out of the box. To create a production-ready deployment the examples can be used as a reference, but it is mandatory to complete at least the following checklist:

  • Review templates to understand the entire architecture, the services used and the associated cost 
  • Review network-related templates to avoid overlapping network space and add network security groups depending on requirements
  • Update the templates where necessary (e.g. existing infrastructure, custom VM images with 3rd party components)
  • Implement secure secret management for passwords (e.g Azure Key Vault, AWS Secrets Manager)
  • Implement update & upgrade strategy for Windows Server VMs and databases
  • Implement resource monitoring and alerts for VMs, DBs and storage (e.g Azure Monitor & Log Analytics, AWS CloudWatch)
  • Perform security hardening and implement security policies (e.g Azure Security Baseline)

 

IaC tools

Here is a list with links to documentation and code examples for a distributed FME Server Windows deployment using different tools. This is not an exhaustive list but should serve as a good starting point. 
Note: Be aware that none of these examples are production ready and need further adjustments depending on individual requirements and environments. This is up to the end-user to understand and modify the templates before deployment.

 

packer

To deploy FME Server as infrastructure, the first step is to create reusable VM images. In our examples and for the Azure Marketplace deployment, packer was the tool of choice.

Here are examples to create FME Server Core & Engine images for Windows:

 

Additional Resources

 

terraform

Terraform is one of the most popular IaC tools allowing the creation of templates for multiple cloud providers. The examples closely follow the architecture of the Azure Marketplace deployment:

 

Additional Resources:

 

CloudFormation

A very popular AWS IaC tool is cloudformation. If there is no multi-cloud strategy and it is expected that also future deployments will be on AWS only, then cloudformation may be used:

Amazon Web Services: FME Server (Distributed deployment, Windows) with cloudformation 

 

Bicep (ARM templates)

Bicep is a domain-specific language that uses a declarative syntax to deploy Azure resources similar to terraform. If there is no multi-cloud strategy and it is expected that also future deployments will be on Azure only then bicep may be used:

Microsoft Azure: FME Server (Distributed deployment, Windows) with bicep

 

Additional Resources

Please consider posting to the FME Community Q&A if you have further questions or issues that are not addressed in this article. There are also different support channels available.

For issues or limitations specific to your cloud provider or IaC tool of choice, please refer to their documentation.

The FME Server documentation has some guidance on setting up load balancers.
You may also find it useful to browse other resources or forum questions regarding load balancers in case this addresses our concerns.

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.