24 de Fevereiro de 2024 - @Walmir Neto
Tudo que eu venho escrevendo nos último dias, foi para servi de setup para essa anotações. Desde do Setup de máquina até o [Usando Ansible para instalar dependências no seu server](https://walmir.notion.site/Usando-Ansible-para-instalar-depend-ncias-no-seu-server-98c77645352e42e188b23bdb4517d008) e Automatizando Rails com Ansible para instalar as dependências do docker lá na AWS. Tudo para não precisar acessar a maquina ssh [email protected]
e rodar os seguintes comandos:
sudo apt update
sudo apt upgrade -y
sudo apt install -y docker.io curl git
sudo usermod -a -G docker ubuntu
Vamos adicionar a gem (Esse passo é opcional, mas gosto de deixar aqui)
# Gemfile
group :development do
# <https://github.com/railsjazz/rails_live_reload#usage>
gem "rails_live_reload", "~> 0.3.5"
+ # <https://kamal-deploy.org/docs/commands>
+ gem "kamal", "~> 1.3"
end
Depois disso precisamos rodar kamal init
isso vai gerar alguns arquivos na pasta .kamal
e o arquivo config/deploy.yml
que é o que nos interessa por agora que você pode baixar aqui
Mas vou deixar só o que vamos precisar
service: rails-demo
image: owalmirneto/rails-demo
servers:
- 54.145.164.68
registry:
server: registry.gitlab.com
username:
- GITLAB_REGISTRY_USERNAME
password:
- GITLAB_REGISTRY_PASSWORD
env:
secret:
- RAILS_MASTER_KEY
- RAILS_DEMO_DATABASE_URL
ssh:
user: ubuntu
Para o GITLAB_REGISTRY_PASSWORD
você precisa de um access token com as permissões de api
, read_repository
, write_repository
, read_registry
e write_registry
. Para criar acesse https://gitlab.com/-/user_settings/personal_access_tokens
config/deploy.yml
Para isso vamos precisar adicar o deploy.yml
no .gitignore
/ansible/hosts
+ # Kamal
+ #
+ config/deploy.yml
Agora vamos renomear o config/deploy.yml
para tofu/templates/config/deploy.tftpl
e alterar para
image: owalmirneto/rails-demo
servers:
- - 54.145.164.68
+ %{ for server in servers ~}
+ - ${server}
+ %{ endfor ~}
No tofu/local_files.tf
precisamos adicionar
webservers = [aws_instance.demo_instance.public_ip]
})
}
+ resource "local_file" "kamal_config" {
+ filename = "../config/deploy.yml"
+ content = templatefile("templates/config/deploy.tftpl", {
+ servers = [aws_instance.demo_instance.public_ip]
+ })
+ }