O documento fornece uma introdução sobre Infraestrutura como Código (IaC) e ferramentas relacionadas como Terraform, Terragrunt e Atlantis. O Terraform é apresentado como uma ferramenta open-source para IaC usando a linguagem HCL. O Terragrunt é um wrapper para o Terraform que ajuda a manter a configuração DRY. O Atlantis automatiza o Terraform através de pull requests no controle de versão.
O documento fornece uma introdução sobre Infraestrutura como Código (IaC) e ferramentas relacionadas como Terraform, Terragrunt e Atlantis. O Terraform é apresentado como uma ferramenta open-source para IaC usando a linguagem declarativa HCL. O Terragrunt é um wrapper para o Terraform que ajuda a manter a configuração DRY. O Atlantis automatiza o Terraform através de pull requests no controle de versão.
O documento resume as principais mudanças na versão 2.0 do framework CakePHP, incluindo o abandono do suporte ao PHP 4, a adoção do PHPUnit para testes de unidade, a reestruturação de componentes, sessões e visões, a adição de novas funcionalidades como PDO e reescrita de URLs.
O documento apresenta uma introdução à linguagem de programação PHP, abordando: 1) sua história e características principais; 2) tipos de dados e variáveis; 3) estruturas de controle como condicionais e repetição; 4) formulários HTML e captura de dados.
Palestra feito na PHPConf - 2016
Apresento uma estrutra de escabilidade, passando pelos passos de crescimento de um software web.
Conceitos como cache, concorrências, storage para arquivos estáticos, servidores de busca, sessões em memória e afins.
O documento discute a jornada da TV Globo para migrar seus serviços para a nuvem AWS durante a Copa do Mundo de 2014 no Brasil, incluindo o desenvolvimento de um aplicativo móvel para interagir com torcedores em tempo real. Detalha a arquitetura implementada na AWS, os serviços utilizados e as lições aprendidas sobre resiliência, desempenho e métricas.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
O documento fornece uma introdução sobre Infraestrutura como Código (IaC) e ferramentas relacionadas como Terraform, Terragrunt e Atlantis. O Terraform é apresentado como uma ferramenta open-source para IaC usando a linguagem declarativa HCL. O Terragrunt é um wrapper para o Terraform que ajuda a manter a configuração DRY. O Atlantis automatiza o Terraform através de pull requests no controle de versão.
O documento resume as principais mudanças na versão 2.0 do framework CakePHP, incluindo o abandono do suporte ao PHP 4, a adoção do PHPUnit para testes de unidade, a reestruturação de componentes, sessões e visões, a adição de novas funcionalidades como PDO e reescrita de URLs.
O documento apresenta uma introdução à linguagem de programação PHP, abordando: 1) sua história e características principais; 2) tipos de dados e variáveis; 3) estruturas de controle como condicionais e repetição; 4) formulários HTML e captura de dados.
Palestra feito na PHPConf - 2016
Apresento uma estrutra de escabilidade, passando pelos passos de crescimento de um software web.
Conceitos como cache, concorrências, storage para arquivos estáticos, servidores de busca, sessões em memória e afins.
O documento discute a jornada da TV Globo para migrar seus serviços para a nuvem AWS durante a Copa do Mundo de 2014 no Brasil, incluindo o desenvolvimento de um aplicativo móvel para interagir com torcedores em tempo real. Detalha a arquitetura implementada na AWS, os serviços utilizados e as lições aprendidas sobre resiliência, desempenho e métricas.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
Este documento fornece um resumo sobre o Apache Ant, uma ferramenta para gerenciamento de projetos Java baseada em arquivos XML. O documento explica como o Apache Ant pode ser usado para automatizar tarefas como compilação, empacotamento, documentação e teste.
Este documento apresenta o Apache Ant, uma ferramenta para gerenciamento de projetos Java baseada em scripts XML. O Ant permite automatizar tarefas como compilação, empacotamento, documentação e testes através de alvos e tarefas definidos no arquivo build.xml. Ele oferece mais de 130 tarefas pré-definidas e pode ser estendido através de novas tarefas ou scripts JavaScript.
O documento resume os principais componentes do Zend Framework, incluindo componentes para autenticação, banco de dados, busca, log, email, filtragem e validação, formulários, internacionalização, MVC e web services. O documento também discute padrões de codificação e referências para o Zend Framework.
O documento fornece uma introdução ao framework Struts, explicando sua arquitetura MVC, como configurar uma aplicação web usando Struts com detalhes sobre os arquivos de configuração necessários e os principais componentes.
Palestra realizada em abril de 2009 no FLISOL de Aracaju/Sergipe. O tema foi o framework orientado a objetos em PHP chamado Symfony.
Algumas de suas features:
- utiliza a arquitetura MVC (Model View Controller), isto é, separação das camadas de apresentação, controle e modelo.
- utiliza bastantes componentes independentes como o Doctrine e Propel (ORM), YML (arquivos de configuração) e outros. Que podem ser adotados em outros projetos que não utilizam o Symfony.
- possui geração automática de CRUD (create, retrieve, update, delete)
- possui uma documentação e comunidade muito grandes.
- geração automática de telas de administração
- ambiente de desenvolvimento com debug
- ambiente de teste
- integração com sincronizador de arquivos (para atualização do projeto na produção)
- separação de configuração para ambientes de teste, desenvolvimento e produção.
- e muito mais...
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
O documento discute o framework Maverick para aplicações JavaEE, incluindo seu uso do JBoss Seam para abstrair funcionalidades como autenticação, injeção de dependência e envio de e-mail. Também descreve a ferramenta Maverick-Gen para gerar projetos Maverick de acordo com padrões da empresa, assim como a estrutura de pastas típica de um projeto Maverick.
O documento descreve o histórico e as funcionalidades do sistema SNEP. Inicialmente desenvolvido em PHP puro, o SNEP foi reescrito utilizando o framework Zend. O documento explica como baixar e configurar o código fonte do SNEP para diferentes ambientes.
O documento apresenta o ORM Doctrine para PHP, descrevendo suas principais características como mapeamento objeto-relacional, tarefas via linha de comando, caching, linguagem de consulta DQL e relacionamentos entre objetos.
O documento discute a automação do data center da empresa, incluindo o deploy de servidores, gerenciamento de configuração, administração centralizada, monitoração e integração utilizando ferramentas como Puppet, Cobbler, Collectd, Nagios, Func e Control Station.
Este documento apresenta as principais novidades do PHP e do framework Zend Framework 2, incluindo namespaces, traits, servidor embutido, PSRs, Composer, funções anônimas, módulos, eventos, injeção de dependências e arquitetura MVC."
O documento discute Infraestrutura como Código (IaC) e o uso da ferramenta Terraform para provisionar recursos na nuvem de forma automatizada através de código. O Terraform permite criar código portátil e reutilizável para provisionar e gerenciar infraestrutura na AWS de forma fácil e testável. O documento também fornece um exemplo prático de como usar o Terraform para criar uma instância EC2 no AWS.
1. O documento discute e faz propaganda de vários frameworks PHP, comparando suas funcionalidades.
2. É enfatizado que o Zend Framework é o melhor, mais completo e usado por profissionais.
3. No final, o leitor é encorajado a escolher um framework e começar a usá-lo, sugerindo fortemente que o Zend Framework seja a escolha.
[1] A apresentação discute o Entity Framework 4.1 Code First, introduzindo suas principais funcionalidades como convenções, data annotations, Fluent API e o que ainda não é suportado. [2] Foi demonstrado como mapear classes para o banco de dados usando apenas código e como configurar relacionamentos e validações. [3] Apresentou também inicializadores e seed para popular bancos de dados.
[1] A apresentação discute o Entity Framework 4.1 Code First, introduzindo suas principais funcionalidades como convenções, data annotations, Fluent API e o que ainda não é suportado. [2] Foi demonstrado como mapear classes para o banco de dados usando apenas código e como configurar relacionamentos e validações. [3] Apresentou também inicializadores e seed para popular bancos de dados.
Apresentacao Ii Encontro Sl Amazonas Integracao De FrameworksNelson Sozinho
Este documento apresenta a integração de três frameworks de código aberto - Prevayler para prevalência de objetos, JacORB para distribuição de objetos e JUnit para testes de objetos - com o objetivo de verificar a viabilidade técnica de se ter uma infraestrutura robusta e livre. Os autores descrevem cada framework, mostram como integrá-los através de um protótipo de sistema bancário distribuído e testado, e concluem que a integração foi viável garantindo robustez e extensibilidade.
O documento descreve o framework Laravel para desenvolvimento web, incluindo suas principais características como o ecossistema, arquitetura, estrutura de projetos, gerenciamento de ativos, validação, comandos e onde aprender mais sobre o framework.
Este documento fornece um resumo sobre o Apache Ant, uma ferramenta para gerenciamento de projetos Java baseada em arquivos XML. O documento explica como o Apache Ant pode ser usado para automatizar tarefas como compilação, empacotamento, documentação e teste.
Este documento apresenta o Apache Ant, uma ferramenta para gerenciamento de projetos Java baseada em scripts XML. O Ant permite automatizar tarefas como compilação, empacotamento, documentação e testes através de alvos e tarefas definidos no arquivo build.xml. Ele oferece mais de 130 tarefas pré-definidas e pode ser estendido através de novas tarefas ou scripts JavaScript.
O documento resume os principais componentes do Zend Framework, incluindo componentes para autenticação, banco de dados, busca, log, email, filtragem e validação, formulários, internacionalização, MVC e web services. O documento também discute padrões de codificação e referências para o Zend Framework.
O documento fornece uma introdução ao framework Struts, explicando sua arquitetura MVC, como configurar uma aplicação web usando Struts com detalhes sobre os arquivos de configuração necessários e os principais componentes.
Palestra realizada em abril de 2009 no FLISOL de Aracaju/Sergipe. O tema foi o framework orientado a objetos em PHP chamado Symfony.
Algumas de suas features:
- utiliza a arquitetura MVC (Model View Controller), isto é, separação das camadas de apresentação, controle e modelo.
- utiliza bastantes componentes independentes como o Doctrine e Propel (ORM), YML (arquivos de configuração) e outros. Que podem ser adotados em outros projetos que não utilizam o Symfony.
- possui geração automática de CRUD (create, retrieve, update, delete)
- possui uma documentação e comunidade muito grandes.
- geração automática de telas de administração
- ambiente de desenvolvimento com debug
- ambiente de teste
- integração com sincronizador de arquivos (para atualização do projeto na produção)
- separação de configuração para ambientes de teste, desenvolvimento e produção.
- e muito mais...
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
O documento discute o framework Maverick para aplicações JavaEE, incluindo seu uso do JBoss Seam para abstrair funcionalidades como autenticação, injeção de dependência e envio de e-mail. Também descreve a ferramenta Maverick-Gen para gerar projetos Maverick de acordo com padrões da empresa, assim como a estrutura de pastas típica de um projeto Maverick.
O documento descreve o histórico e as funcionalidades do sistema SNEP. Inicialmente desenvolvido em PHP puro, o SNEP foi reescrito utilizando o framework Zend. O documento explica como baixar e configurar o código fonte do SNEP para diferentes ambientes.
O documento apresenta o ORM Doctrine para PHP, descrevendo suas principais características como mapeamento objeto-relacional, tarefas via linha de comando, caching, linguagem de consulta DQL e relacionamentos entre objetos.
O documento discute a automação do data center da empresa, incluindo o deploy de servidores, gerenciamento de configuração, administração centralizada, monitoração e integração utilizando ferramentas como Puppet, Cobbler, Collectd, Nagios, Func e Control Station.
Este documento apresenta as principais novidades do PHP e do framework Zend Framework 2, incluindo namespaces, traits, servidor embutido, PSRs, Composer, funções anônimas, módulos, eventos, injeção de dependências e arquitetura MVC."
O documento discute Infraestrutura como Código (IaC) e o uso da ferramenta Terraform para provisionar recursos na nuvem de forma automatizada através de código. O Terraform permite criar código portátil e reutilizável para provisionar e gerenciar infraestrutura na AWS de forma fácil e testável. O documento também fornece um exemplo prático de como usar o Terraform para criar uma instância EC2 no AWS.
1. O documento discute e faz propaganda de vários frameworks PHP, comparando suas funcionalidades.
2. É enfatizado que o Zend Framework é o melhor, mais completo e usado por profissionais.
3. No final, o leitor é encorajado a escolher um framework e começar a usá-lo, sugerindo fortemente que o Zend Framework seja a escolha.
[1] A apresentação discute o Entity Framework 4.1 Code First, introduzindo suas principais funcionalidades como convenções, data annotations, Fluent API e o que ainda não é suportado. [2] Foi demonstrado como mapear classes para o banco de dados usando apenas código e como configurar relacionamentos e validações. [3] Apresentou também inicializadores e seed para popular bancos de dados.
[1] A apresentação discute o Entity Framework 4.1 Code First, introduzindo suas principais funcionalidades como convenções, data annotations, Fluent API e o que ainda não é suportado. [2] Foi demonstrado como mapear classes para o banco de dados usando apenas código e como configurar relacionamentos e validações. [3] Apresentou também inicializadores e seed para popular bancos de dados.
Apresentacao Ii Encontro Sl Amazonas Integracao De FrameworksNelson Sozinho
Este documento apresenta a integração de três frameworks de código aberto - Prevayler para prevalência de objetos, JacORB para distribuição de objetos e JUnit para testes de objetos - com o objetivo de verificar a viabilidade técnica de se ter uma infraestrutura robusta e livre. Os autores descrevem cada framework, mostram como integrá-los através de um protótipo de sistema bancário distribuído e testado, e concluem que a integração foi viável garantindo robustez e extensibilidade.
O documento descreve o framework Laravel para desenvolvimento web, incluindo suas principais características como o ecossistema, arquitetura, estrutura de projetos, gerenciamento de ativos, validação, comandos e onde aprender mais sobre o framework.
3. A infraestrutura como código (IaC) configura e gerencia a infraestrutura por meio de um modelo descritivo. Trata-se de tratar a
configuração e o provisionamento de sua infraestrutura da mesma maneira que você trata o código-fonte do aplicativo.
Os módulos de configuração são normalmente armazenados em sistemas de controle de versão em formatos de código bem
documentados, proporcionando maior precisão, reduzindo erros e aumentando a velocidade e a consistência.
A IaC é uma das práticas de DevOps mais importantes usadas com entrega contínua. Os benefícios que levam muitas empresas a
migrar para o IAC são infraestrutura imutável, aumento na velocidade de entrega, escalabilidade, economia de custos e
mitigação de riscos.
IaC - Infrastructure as a Code
5. Terraform é uma ferramenta de IaaC open-source criada pela HashiCorp usando uma
linguagem de configuração declarativa conhecida como HashiCorp Configuration Language
(HCL) e JSON.
Escrito em Go
Declarativo
https://github.com/hashicorp/terraform
6. O Terraform possui quatro
comandos principais:
$ terraform init
$ terraform plan
$ terraform apply
$ terraform destroy
7. Usage: terraform [global options] <subcommand> [args]
Main commands:
init Prepare your working directory for other commands
validate Check whether the configuration is valid
plan Show changes required by the current configuration
apply Create or update infrastructure
destroy Destroy previously-created infrastructure
All other commands:
console Try Terraform expressions at an interactive command prompt
fmt Reformat your configuration in the standard style
force-unlock Release a stuck lock on the current workspace
get Install or upgrade remote Terraform modules
graph Generate a Graphviz graph of the steps in an operation
import Associate existing infrastructure with a Terraform resource
login Obtain and save credentials for a remote host
logout Remove locally-stored credentials for a remote host
output Show output values from your root module
providers Show the providers required for this configuration
refresh Update the state to match remote systems
show Show the current state or a saved plan
state Advanced state management
taint Mark a resource instance as not fully functional
test Experimental support for module integration testing
untaint Remove the 'tainted' state from a resource instance
version Show the current Terraform version
workspace Workspace management
8.
9.
10. Escrevo minha Infraestrutura
Terraform executa e cria
Terraform salva o estado da
criação num json.tfstate
As próximas alterações o plan irá consultar o estado.
12. Pode ser armazenado em
qualquer lugar que aceite um
json.
API rest, AWS, GCP, Azure,
Manta, Artifactory, etcd, Consul,
Postgres, ….
Com o state remoto, outros
conseguem alterar a mesma
infraestrutura.
13. E se mais de 1 pessoa
tentar fazer o apply na
mesma infraestrutura?
14. Problemas resolvidos:
1
Infraestrutura como código
regra n1 - 12factor:
Uma base de código com rastreamento
utilizando controle de revisão
2
Estado remoto
Um time consegue trabalhar
simultaneamente no desenvolvimento da
Infra.
3
Lock no Apply
Não irá ocorrer conflitos com execução em
paralelo.
17. backend tf files variables files
provider
Define onde o state
será armazenado
Informa os plugins a serem
usados para interagir com
provedores de nuvem,
provedores de SaaS e outras
APIs
Declaração dos recursos a
serem criados
Declara os valores das
variáveis usadas no tf
file.
Composição básica
18. Terraform’s Configuration Language
A linguagem do Terraform é declarativa, descrevendo um objetivo pretendido em vez das etapas para atingir
esse objetivo.
No paradigma de programação declarativo, declaro o que eu quero como resultado final ao invés de escrever
como eu quero (o passo-a-passo para obtê-lo).
● Declarativo: Erlang, Haskell, SQL - abstrato - Linguagem Funcional
● Imperativo: C, C++, Java - concreto - Linguagem Procedural
● Ambos: Python, C#, JavaScript - Linguagem Orientada a Objeto
19. Terraform’s Configuration Language
A ordenação dos blocos e os arquivos em que são organizados geralmente não são significativos;
O Terraform considera apenas relacionamentos implícitos e explícitos entre recursos ao determinar a ordem
de operações.
VPC → Subnet → Security Group → EC2 → DNS (Route53)
Elastic IP
volume EBS → Snapshot
20. Terraform’s Configuration Language
Os blocos são contêineres para outros conteúdos e geralmente representam a configuração de algum tipo de
objeto, como um recurso (resource).
Os blocos têm um type, podem ter zero ou mais labels e um corpo que contém argumentos e blocos
aninhados.
A maioria dos recursos do Terraform são controlados por blocos de nível superior em um arquivo de
configuração.
Os argumentos atribuem um valor a um nome.
As expressões representam um valor, literalmente ou referenciando e combinando outros valores. Eles
aparecem como valores para argumentos ou dentro de outras expressões.
21. Terraform’s Configuration Language
resource "aws_route53_record" "www" {
zone_id = Z001753YB9D130HADG3
name = "www.example.com"
type = "A"
ttl = "300"
records = example.alb.us-east-1.amazonaws.com
}
22. Terraform’s Configuration Language
resource "aws_route53_record" "www" {
zone_id = Z001753YB9D130HADG3
name = "www.example.com"
type = "A"
ttl = "300"
records = example.alb.us-east-1.amazonaws.com
}
terraform {
backend "s3" {
bucket = "iaac-terraform"
key = "tfstates/project-iaac/terraform.tfstate"
region = "sa-east-1"
profile = "default"
dynamodb_table = "terraform_state_table"
encrypt = "true"
}
provider "aws" {
credential= "~/.aws/credentials"
region= "sa-east-1"
}
}
24. Terraform’s Configuration Language
route53.tf variables.tf
resource "aws_route53_record" "www" {
zone_id = var.zone_id
name = var.name
type = "A"
ttl = "300"
records = var.records
}
variables "name" {
default = "www.example.com"
}
variables "zone_id" {
default = "Z001753YB9D130HADG3"
}
variables "records" {
default = "example.alb.us-east-1.amazonaws.com"
}
25. Terraform’s Configuration Language
route53.tf variables.tf
resource "aws_route53_record" "www" {
zone_id = var.zone_id
name = var.name
type = "A"
ttl = "300"
records = var.records
}
variables "name" {
}
variables "zone_id" {
}
variables "records" {
}
variables.tfvars
name = "www.example.com"
zone_id = "Z001753YB9D130HADG3"
records = "example.alb.us-east-1.amazonaws.com"
26. Modules
module "instance" {
source = "git@github.com:cloudposse/ec2-instance.git"
ssh_key_pair = var.ssh_key_pair
instance_type = var.instance_type
vpc_id = var.vpc_id
security_groups = var.security_groups
subnet = var.subnet
name = "ec2"
namespace = "eg"
stage = "dev"
}
Com o módulo, o bloco com
o resource já está escrito e
versionado no git.
Apenas será necessário
escrever as variáveis e
apontar para o terraform,
onde está o source do
módulo.
Pode ser local (outro
diretório), registry do
terraform, git, bucket S3, …
27. Modules (usar ou não)?
DRY - Don't Repeat Yourself
resource "aws_route53_record" "www" {
zone_id = var.zone_id
name = var.name
type = "A"
ttl = "300"
records = var.records
}
variables "name" {
default = "www.example.com"
}
variables "zone_id" {
default = "Z001753YB9D130HADG3"
}
variables "records" {
default = "example.alb.us-east-1.amazonaws.com"
}
module "instance" {
source = "git@github.com:Esl1h/tfmodules/r53.git"
name = "www.example.com"
zone_id = "Z001753YB9D130HADG3"
records = "example.alb.us-east-1.amazonaws.com"
}
28. HCL - HashCorp Language
A sintaxe de baixo nível da linguagem Terraform é definida como HCL
A linguagem consiste em
3 sub-linguagens integradas:
estrutural
expressão
template
30. Terraform’s Configuration Language
E se para cada ambiente eu tiver um backend (s3 e dynamodb) diferentes?
production.tfvars
development.tfvars
testing.tfvars
staging.tfvars
route53.tf variables.tf
terraform init --backend-config=backend.production.tfvars --var-file=dev.tfvars
terraform plan --var-file=production.tfvars
terraform apply --var-file=production.tfvars
backend.production.tf
backend.development.tf
backend.testing.tf
backend.staging.tf
31. Workspace
Na execução do terraform, para cada backend, será criado dados persistentes.
Eles são armazenados e consultados.
Como, numa segunda execução (development e depois production) os dados não são sobrescritos?
Estes dados persistentes pertencem a um environment (chamado de workspace)
Para production, por exemplo, podemos criar o workspace:
terraform workspace new production
terraform workspace select production
Para posteriormente executar o init/plan/apply:
terraform init --backend-config=backend.production.tfvars --var-file=dev.tfvars
terraform plan --var-file=production.tfvars
terraform apply --var-file=production.tfvars
32. Terraform’s Configuration Language
Regra número 10 - 12factor:
Mantenha o desenvolvimento, teste, produção o mais semelhante possível
Poderia criar uma pasta para cada ambiente? E ter um código terraform para cada um?
33. Problemas resolvidos:
1
Infraestrutura como código
regra n1 - 12factor:
Uma base de código com rastreamento
utilizando controle de revisão
2
Estado remoto
Um time consegue trabalhar
simultaneamente no desenvolvimento da
Infra.
3
Lock no Apply
Não irá ocorrer conflitos com execução em
paralelo.
4
Sem reinventar a roda e Padronização
Usar módulos e não gastar tempo
escrevendo um resource que já foi feito em
outros momentos.
35. DRY - Don’t Repeat Yourself
O Terragrunt é um wrapper que fornece ferramentas extras para manter suas
configurações DRY, trabalhando com vários módulos do Terraform e gerenciando o estado
remoto.
Configuração fica num arquivo terragrunt.hcl, junto com os arquivos do terraform
36. DRY
terraform workspace new production
terraform workspace select production
terraform init --backend-config=backend.production.tfvars --var-file=dev.tfvars
terraform plan --var-file=production.tfvars
terraform apply --var-file=production.tfvars
+ terragrunt.hcl
terragrunt init
terragrunt plan
terragrunt apply
37. Problemas resolvidos:
1
Infraestrutura como código
regra n1 - 12factor:
Uma base de código com rastreamento
utilizando controle de revisão
2
Estado remoto
Um time consegue trabalhar
simultaneamente no desenvolvimento da
Infra.
3
Lock no Apply
Não irá ocorrer conflitos com
execução em paralelo.
5
DRY and KISS
Não repete códigos
Mantém simples, reduzindo complexidade
evita erros na execução
38. Quanto maior o time e os ambientes, mais controle precisa ser
implementado e aumenta a complexidade para manutenção.
Como garantir que o código realmente condiz com a infra existente?
Como garantir que o código passou por um review?
Como justificar as mudanças aplicadas na infra existente? Qual motivo?
Quem aprovou?
40. Atlantis é um aplicativo para automatizar o Terraform por meio de pull requests.
Ele é implantado como um aplicativo independente em sua infraestrutura.
Nenhum terceiro tem acesso às suas credenciais.
O Atlantis ouve os webhooks do GitHub, GitLab ou Bitbucket sobre solicitações de pull do
Terraform. Em seguida, ele executa o terraform plan e comenta com a saída de volta na solicitação
pull.
Quando você quiser aplicar, comente atlantis apply na solicitação pull e o Atlantis executará
terraform apply e comentará de volta com a saída.