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

Construíndo seu Primeiro Provider para Terraform

Construíndo seu Primeiro Provider para Terraform

Terraform é uma tecnologia criada pela Hashicorp que ganhou enorme popularidade no mercado por oferecer uma linguagem simples e genérica que oferece suporte a diferentes provedores de nuvem e demais sistemas distribuídos. Para conseguir isso, ele oferece um leque poderoso de provedores que auxiliam desenvolvedores durante a criação de arquiteturas basedas em infraestrutura-como-código.

No entanto, é comum situações onde não há suporte para certas tecnologias e nestes casos a criação de um provedor customizado se torna necessária. Esta palestra visa ensinar como você pode criar seus próprios provedores usando a línguagem Go, além de oferecer dicas valiosas sobre como melhor se preparar para esse tipo de implementação.

02ff2dde723b6e26f4ef03ee6b3f6eb9?s=128

Ricardo Ferreira

October 17, 2020
Tweet

Transcript

  1. @riferrei Ricardo Ferreira Cloud Conference day 17 de Outubro de

    2020 Criando seu Primeiro Provider para Terraform
  2. Ricardo Ferreira Developer Advocate Community Team da Elastic Antes de

    atuar na Elastic: Confluent, Oracle, Red Hat Brasileiro morando nos EUA riferrei@elastic.co riferrei@riferrei.com https://riferrei.com @riferrei
  3. @riferrei Terraform 101 Visão geral sobre a tecnologia pra quem

    nunca usou ou viu
  4. Terraform? @riferrei

  5. Diferentes plataformas? Sistemas heterogeneous? Ambientes distribuídos? Precisamos de uma língua

    franca para tudo isso! @riferrei
  6. @riferrei resource "aws_elasticache_replication_group" "cache_server" { replication_group_id = "${var.global_prefix}-cache-server" replication_group_description =

    "Cache server for the APIs" subnet_group_name = aws_elasticache_subnet_group.cache_server.name availability_zones = data.aws_availability_zones.available.names number_cache_clusters = length(data.aws_availability_zones.available.names) security_group_ids = [aws_security_group.cache_server.id] automatic_failover_enabled = true node_type = "cache.m4.large" parameter_group_name = "default.redis5.0" port = 6379 } { "mode": "managed", "type": "aws_elasticache_replication_group ", "name": "cache_server", "provider": "provider.aws", "instances": [ { "schema_version": 1, "attributes": { "arn": "arn:aws:ec2:us-east-1:523:security-group/sg-03e276aa9", "description": "Cache server for the APIs", "egress": [ { "cidr_blocks": [ "0.0.0.0/0" ], "description": "", "from_port": 0, "ipv6_cidr_blocks": [], Estado Terraform
  7. @riferrei Providers: Diferentes plataformas https://www.terraform.io/docs/providers/index.html

  8. Faz uma demo… @riferrei

  9. @riferrei Terraform up and Running Possui uma linguagem simples de

    entender Explora conceitos básicos e avançados, sendo portanto um livro completo. Explora detalhes sobre boas práticas de engenharia de software como testes, modularização, encapsulamento, etc. Fornece exemplos prontos para uso que são mais que simples hello worlds.
  10. @riferrei Por quê custom Providers? Razões pela qual você não

    deveria criar um provider customizado
  11. @riferrei Razões mais comuns: Você é um provedor de serviços

    de nuvem Seu Código terraform está com uma lacuna Implementação de testes de verificação Você adora e está procurand algo pra fazer
  12. @riferrei Mergulhando no código Entendendo como funciona a arquitetura e

    estrutura de Código de um provedor
  13. @riferrei 1. Main 2. Provider 3.1 Resources 3.2 Data Sources

    4. Client SDK Na prática é isso aqui:
  14. @riferrei Resource Cada resource é um crud Create READ Update

    DELETE
  15. @riferrei Data Source Cada Data Source é um READ READ

  16. Quero ver Código @riferrei

  17. @riferrei Lições aprendidas Cagadas Falhas típicas que você precisa evitar

    a todo custo!
  18. @riferrei Separar provedor do Client SDK Provider SDK API

  19. @riferrei Pensar em tolerância a falhas

  20. @riferrei desenvolvedor também é gente!

  21. @riferrei Use a API de logging por favor Eu tô

    achando melhor… Voltar pro meu bash…
  22. @riferrei Obrigado https://www.youtube.com/user/ rferreira12345tube Inscreve lá no meu canal do

    youtube: