Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Terraform? @riferrei

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

@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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Faz uma demo… @riferrei

Slide 9

Slide 9 text

@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.

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

@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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

@riferrei Data Source Cada Data Source é um READ READ

Slide 16

Slide 16 text

Quero ver Código @riferrei

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

@riferrei Separar provedor do Client SDK Provider SDK API

Slide 19

Slide 19 text

@riferrei Pensar em tolerância a falhas

Slide 20

Slide 20 text

@riferrei desenvolvedor também é gente!

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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