Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevOpsDays Kraków 2022 - Building labs using co...

DevOpsDays Kraków 2022 - Building labs using component-based architecture with Terraform and Ansible

This presentation has the purpose to share an approach using component-based architecture with infra as a code, thus helping the develop teams to be more productive and have reliable environment labs for developing and testing.

Ederson Brilhante

April 27, 2022
Tweet

More Decks by Ederson Brilhante

Other Decks in Technology

Transcript

  1. Splunk Technical Add-ons New TA version Delivery Build new dev

    lab Build QA lab Coding Development TA Cycle
  2. Benefits • Terraform and Ansible for deployment and provisioning •

    Reduce the pain to create labs • Avoid duplicate or rework • Reliable and Consistent Labs across dev cycles
  3. Drawbacks • Copy and Paste in some common configuration •

    Scale to more TA demands time • Customization demands to know IaC
  4. Requirements • Deploy infra with IaC under the hood •

    Allow customized and parallels Labs • User don't need to write IaC scripts to use supported OS distros and configs • Manage the lab lifecycle
  5. config = { <lab1> <labN> } "lab1" = { "type"

    = "<type_environment>" "nodes" = { <node1>, <nodeN> } } User Input File = input.tfvars
  6. "node1" = { "type" = "<node_type>" "enabled_roles" = { <distro_role1>

    } "os" = { <parameters> } } config = { <lab1> <labN> } "lab1" = { "type" = "<type_environment>" "nodes" = { <node1>, <nodeN> } } User Input File = input.tfvars
  7. config = { <lab1> <labN> } "lab1" = { "type"

    = "<type_environment>" "nodes" = { <node1>, <nodeN> } } "node1" = { "type" = "<node_type>" "enabled_roles" = { <distro_role1> } "os" = { <parameters> } } "distro_role1" = { <parameters> } User Input File = input.tfvars
  8. config = { "lab1" = { "type" = "<environment_type>" "nodes"

    = { "node1" = { "type" = "<node_type>" "enabled_roles" = { "distro_role1" = { <parameters> } } "os" = { <parameters> } } } } } User Input File = input.tfvars