$30 off During Our Annual Pro Sale. View Details »

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.

Ricardo Ferreira

October 17, 2020
Tweet

More Decks by Ricardo Ferreira

Other Decks in Technology

Transcript

  1. @riferrei
    Ricardo Ferreira
    Cloud Conference day
    17 de Outubro de 2020
    Criando seu Primeiro
    Provider para Terraform

    View Slide

  2. Ricardo Ferreira
    Developer Advocate
    Community Team da Elastic
    Antes de atuar na Elastic:
    Confluent, Oracle, Red Hat
    Brasileiro morando nos EUA
    [email protected]
    [email protected]
    https://riferrei.com
    @riferrei

    View Slide

  3. @riferrei
    Terraform 101
    Visão geral sobre a tecnologia pra
    quem nunca usou ou viu

    View Slide

  4. Terraform?
    @riferrei

    View Slide

  5. Diferentes
    plataformas?
    Sistemas
    heterogeneous?
    Ambientes
    distribuídos?
    Precisamos de uma língua franca
    para tudo isso!
    @riferrei

    View Slide

  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

    View Slide

  7. @riferrei
    Providers: Diferentes plataformas
    https://www.terraform.io/docs/providers/index.html

    View Slide

  8. Faz
    uma
    demo…
    @riferrei

    View Slide

  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.

    View Slide

  10. @riferrei
    Por quê custom Providers?
    Razões pela qual você não deveria
    criar um provider customizado

    View Slide

  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

    View Slide

  12. @riferrei
    Mergulhando no código
    Entendendo como funciona a arquitetura
    e estrutura de Código de um provedor

    View Slide

  13. @riferrei
    1. Main
    2. Provider
    3.1 Resources
    3.2 Data Sources
    4. Client SDK
    Na prática é isso aqui:

    View Slide

  14. @riferrei
    Resource
    Cada resource é um crud
    Create READ Update DELETE

    View Slide

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

    View Slide

  16. Quero
    ver
    Código
    @riferrei

    View Slide

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

    View Slide

  18. @riferrei
    Separar provedor do Client SDK
    Provider SDK API

    View Slide

  19. @riferrei
    Pensar em tolerância a falhas

    View Slide

  20. @riferrei
    desenvolvedor também é gente!

    View Slide

  21. @riferrei
    Use a API de logging por favor
    Eu tô achando melhor…
    Voltar pro meu bash…

    View Slide

  22. @riferrei
    Obrigado
    https://www.youtube.com/user/
    rferreira12345tube
    Inscreve lá no meu canal do youtube:

    View Slide