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

Criando Provedores Customizados para Terraform

Criando Provedores Customizados para Terraform

Apresentação feita no evento HashTalks Brasil sobre como criar provedores customizados para Terraform.

Ricardo Ferreira

December 03, 2020
Tweet

More Decks by Ricardo Ferreira

Other Decks in Programming

Transcript

  1. @riferrei
    Ricardo Ferreira
    Hashtalks: brasil
    Criando Provedores
    Customizados para Terraform

    View Slide

  2. Ricardo Ferreira
    Developer Advocate
    ❑ Time de Comunidades, Elastic
    ❑ Antes de atuar na Elastic:
    Confluent, Oracle, Red Hat
    ❑ Streaming data, big data,
    analytics, Databases, cloud
    [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
    Ricardo Ferreira
    Hashtalks: brasil

    View Slide