Code Monkey home page Code Monkey logo

infra-as-code's Introduction

Infraestrutura como código: preparando máquinas na AWS com Ansible e Terraform

Ferramentas utilizadas: Terraform e ansible, com aws

Criar, gerenciar e controlar sua infraestrutura em ambiente de produção através de código.

Instalar ferramentas

Terraform

Caso você ainda não tenha instalado o Terraform, segue um pequeno tutorial de como fazê-lo.

Ubuntu

Para instalar no Ubuntu, utilize o comando abaixo:

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt install terraform

Ansible

Caso você ainda não tenha instalado o Ansible, segue um pequeno tutorial de como fazê-lo.

Instalando Ansible

Ubuntu

Para instalar no Ubuntu, utilize o comando abaixo:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt-get install ansible

AWS CLI

Caso você ainda não tenha instalado a AWS CLI, basta ir a página da AWS CLI e seguir os procedimentos para o seu sistema operacional.

Depois de instalado você pode configurar a AWS usando o comando aws configure onde será requisitado a chave secreta (secret key) que pode ser criada nessa pagina clicando em “criar chave de acesso” na aba “credenciais do AWS IAM”.

Iniciando com Terraform

  • Baixar modulos do terraform para se comunicar com a AWS, executar o comando dentro da pasta em que está o main.tf
terraform init
  • Executar comando de planejamento, onde traz todas as informações sobre a instância que gostaríamos de criar
terraform plan
  • Criar a maquina na AWS
terraform apply

Utilizando o ansible

  • Após gerar par de chave ssh na aws podemos dar continuidade utilizando o ansible

  • Devemos criar 2 arquivos essenciais para o ansible funcionar

chamados de host.yml e playbook.yml

  • Preparando ambiente python (django) na instância
# hosts.yml

[terraform-ansible]
54.185.82.48    # ipv4 público da instâcia da qual vamos gerenciar 
# playbook.yml

# code: language=ansible
- hosts: terraform-ansible
  tasks:
    - name: Instalando python3 e virtualenv
      apt:                                                # Instalação do python3 e virtualenv
        pkg:                                              # Pacotes a serem instalados
        - python3                                         # Python3
        - virtualenv                                      # Virtualenv
        update_cache: yes                                 # Atualiza o cache do apt
      become: yes                                         # become: yes é para executar como root
    - name: Intalando dependencias com pip (Django e Django Rest) em uma virtualenv
      pip:                                                # Instalação do Django e Django Rest
        virtualenv: /home/ubuntu/myproject/venv           # Caminho do virtualenv
        name:                                             # Pacotes a serem instalados
          - django                                        # Django
          - djangorestframework                           # Django Rest
    - name: Criando projeto Django
      shell: '. /home/ubuntu/myproject/venv/bin/activate; django-admin startproject setup /home/ubuntu/myproject'
      ignore_errors: yes
    - name: Alterando o hosts do settings.py
      lineinfile:
        path: /home/ubuntu/myproject/setup/settings.py    # Caminho do settings.py
        regexp: 'ALLOWED_HOSTS = \[\]'                    # Expressão regular para encontrar a linha
        line: 'ALLOWED_HOSTS = ["*"]'                     # Linha a ser inserida
        backrefs: yes                                     # Se não encontrar a linha, não faz nada
  • Rodar o comando ansible para gerenciar a instância : ansible-playbook -u <usuário da máquina na aws> --private-key -i
ansible-playbook playbook.yml -u ubuntu --private-key Infra-oregon.pem -i hosts.yml

infra-as-code's People

Contributors

antonio-lima-jr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.