Skip to content

jvcss/OwnCloudAWSTerraformIAC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automatizando publicação do OwnCloud com AWS e Terraform

  1. Criar conta na AWS
  2. Preencha suas informações e escolha o tipo de conta que preferir

    Instale o CLI da AWS e faça uso do IAM na sua conta que você criou acima

    O IAM (Identity and Access Management) é uma forma de controlar seu acesso de forma granular, nós acessamos a página do IAM no console da AWS.

    Vamos em Users para criar um novo usuario que o Terraform terá acesso

    A discussão sobre grupos de acesso e políticas de acesso é extremamente complexa e longa, vamos nos ater a criar um novo grupo dando acesso apenas aos recursos EC2 fundamentais como mostra a imagem

    Uma vez criado o usuario IAM, atribua uma chave para ele, e com essa chave que vamos acessar via CLI a AWS. Clicando no nome do user criado você verá o sumário e abas abaixo sendo uma delas Security Credentials

    Na tela de criar a cahve escolha o Use Case para CLI, dê uma descrição e baixe o arquivo csv com os dados Access key, Secret access key

    Abra um terminal e digite aws configure preencha corretamente com a regiao de acesso que você quer dar para esse user bem como a chave e secret. Pronto você configurou o acesso da sua CLI AWS.

  3. Baixar e Instalar o Terraform
  4. Escolha a versão correta para seu O.S, no meu caso Win32

    Após extrair o executável. Adicione ao Path

    Use a extensão oficial do Terraform no VSCode.

  5. Crie a Infraestrutura como Código em uma pasta
  6. o código acima criado por JVCSS é público no Repositório
    deixe sua estrela!

    Nessa Infraestrutura de Instância EC2 estamos criando uma EC2 na região SP do brasil, especificamente definindo uma zona para ter acesso ao DNS gerado automaticamente.

    Estamos permitindo acesso irrestrito via SSH uma prática não recomendada! O motivo é para facilitar acesso remoto via diferentes máquinas.

    Estamos configurando a Networking para dar acesso a internet para essa instância. bem como permitir acesso entre instâncias na mesma VPC

    Por fim, estamos automatizando a entrega do SaaS com o docker com o orquestrador compose.

    Usamos o NGINX como framework de controle proxy porque ele permite granularidade na entrega bem como controles finos como cache e filtros contra ataques de injeção de conteúdo arbitrário ou DDOS.

    O SaaS OwnCloud depende do MariaDB e do Redis, por isso criamos também as instancias locais desses serviços (note que em uma aplicação real esses serviços são na verdade separados do EC2 com os nomes de RDS[Relational Database Service] e ElastiCache na AWS respectivamente)

    Um detalhe importante é como nós elegantemente controlamos a quantidade de memória RAM e CPU permitida para o SaaS via orquestrador docker-compose

    Porque via teste notamos que o uso de recursos desse SaaS superou e muito o limite da nossa Instância com os limites gratuitos, inutilizando-a.

    A finalização então está na entrega ao público via NGINX com seu arquivo de configuração, nessa versão simplificada permitimos apenas conexão HTTP. Já que um certificado auto-assinado não tem valor comercial não foi aplicado nesse exemplo.

    Nesse arquivo nginx.conf estamos usando o Framework como proxy como mostra a primeira linha do arquivo.

    As definições nesse arquivo estão em resumo definindo limites, como quantidade de nós criados, tempo de validade de cache, tipos de conexão aceita, tipos de arquivo, tamanho de encriptação, local onde salvar logs de acesso, encaminhamento de cabeçalho e o mais importante o URI do serviço a ser encaminhado que nesse caso com o docker é o nome do container definido no arquivo docker-compose.yaml

    Então após definir todo nosso ambiente, realizar as devidas automações como substuição das constantes OWNCLOUD_DOMAIN e OWNCLOUD_TRUSTED_DOMAINS para o IP Publico e DNS publico dessa Instância via arquivo Terraform.

    Nós podemos apenas com simples comandos terraform init terraform validade terraform plan -out planoNovo concluir a configuração dessa Infraestrutura e enviar para a AWS com terraform apply "planoNovo"

    Finalmente após toda essa configuração podemos garantir que criamos o ambiente IaC consistente.

    Acesse seu OwnCloud via DNS: lembre-se de tirar o S do HTTP, o chrome automaticamente troca o protocolo mas você pode acessar manualmente apenas apagando o S. Em alguns casos é necessário acessar seu site HTTP via Aba Anônina.

    Segue o print da publicação onde: Criamos uma EC2 nova, clonamos o repositório e ligamos os serviços.

    user: vide Container OwnCloud no Docker-Compose senha: vide Container OwnCloud no Docker-Compose

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages