Avançar para o conteúdo
Início » Artigos » Automatizando a implantação do Laravel usando Ansible

Automatizando a implantação do Laravel usando Ansible

Se você, como eu, implementa alterações manualmente em qualquer um dos seus sites de forma consistente há meses, senão anos, sabe que essa é uma tarefa repetitiva. Normalmente, você extrai suas alterações de seu sistema de controle de versão (VCS), executa algumas tarefas para instalar dependências de produção e/ou compila-as, armazena em cache sua configuração e recarrega algum tipo de serviço. Geralmente são as mesmas etapas com algumas etapas opcionais, caso você precise executar migrações de banco de dados, por exemplo.

 

O que é Ansible?

Você sabe que se algo é repetitivo, você pode automatizá-lo. É aqui que entra o Ansible. Originalmente, o Ansible é uma ferramenta para ajudar na orquestração de servidores e repetir tarefas de forma confiável em uma quantidade infinita de servidores. A melhor parte do Ansible é que você não precisa instalar nada em suas máquinas remotas. O único requisito é que você precise se conectar à sua máquina remota por meio de SSH. Se você pode fazer isso, pode usar o Ansible.

Você pode comparar o Ansible a um grande script bash que executa comandos na máquina remota por meio do SSH. A principal diferença entre esses dois é que o Ansible torna tudo muito mais fácil e possui módulos integrados para abstrair muitas tarefas. Extrair alterações do GitHub, especificando apenas um repositório e uma pasta de destino é um desses módulos. Isso torna as tarefas de escrita muito mais rápidas e fáceis.

Por que o Ansible é útil?

Mencionei que o Ansible é originalmente usado para orquestração de servidores. Como o Ansible é essencialmente um arquivo bash fácil de gerenciar, você pode fazer com que ele faça o que quiser. Isso inclui usá-lo para implantar seus sites, seja um ou 1000 servidores. Contanto que você possa usar o SSH em todos esses servidores, você pode implantar em todos eles.

Como a maioria dos meus sites é construída usando Laravel, fornecerei uma configuração simples para implantar seu site Laravel em seu servidor, migrar seu banco de dados, armazenar em cache sua configuração e limpar seu cache de visualizações. Isso é muito básico, mas é um ponto de partida.

A configuração básica

 

- hosts: roelofjanelsinga.com # You can also specify an IP address
  vars_files:
    - secrets.yml # Contains the github_user and github_token variable
  vars: # Define new variables
    github_repo_url: https://{{github_user}}:{{github_token}}@github.com/roelofjan-elsinga/portfolio.git
    working_directory: /path/to/app
  tasks:
    - name: "Pull changes from GitHub"
      git:
        repo: "{{github_repo_url}}", # This is how we can make this step reusable across projects
        dest: "{{working_directory}}"
        version: master # Branch to pull
        accept_hostkey: yes
      register: repo # Store the result of this task in a variable
      
    - name: "Install Composer dependencies"
      script: composer install --no-scripts --no-dev
      when: repo.changed # Only run this step if we actually pulled new changes from GitHub
    
    - name: "Cache the configuration"
      script: "php artisan config:cache"
      when: repo.changed # Only run if we pulled changes
      
    - name: "Clear the view cache"
      script: "php artisan view:clear"
      when: repo.changed # Only run if we pulled changes
      
    - name: "Run the migrations"
      script: "php artisan migrate --force"
      when: repo.changed # Only run if we pulled changes

Então você precisará criar o arquivo secrets.yml, você pode usar o vault ansible:

ansible-vault create secrets.yml

Em seguida, preencha-o com estas informações:

github_user: your_username
github_token: your_github_access_token

Para editar este arquivo, você pode usar o seguinte comando

ansible-vault edit secrets.yml

 

Etiquetas: