bolhaverso / colab

manutenção reativa e cotidiana da bolha
0 stars 0 forks source link

criar esteiras de deploy #25

Open gutocarvalho opened 1 year ago

gutocarvalho commented 1 year ago

A ideia é colocar o diretorio docker de cada produto no github, criar um template do actions, e quando houver um push na main, o actions roda o template que vai

No Servidor Proxmox

1) conectar no servidor proxmox 2) rodar um backup 3) rodar um snap

Na VM do Produto

1) conectar na vm do produto 2) atualizar o dockerfile 3) rodar docker-compose down 4) rodar docker-compose up

No Load Balancer

1) se houver estáticos, atualizar os estáticos de cache 2) reload no nginx

gutocarvalho commented 1 year ago

@gomex essa é uma boa para mentoria.

Para quem não conhece

Quais serviços começar?

Serviços sem build de imagem

  1. Mastodon
  2. Lemmy
  3. Writefreely
  4. Bookwyrm
  5. Synapse/Matrix
  6. HedgeDoc

Esses todos não builda imagem, só precisa mudar a versão e reiniciar.

Serviços que precisa buildar a imagem

  1. PixelFed
  2. Jisti
  3. Invidious (eu acho)
  4. Lingva (eu acho)

Tem que dar checkout e buildar a nova imagem, mas é simples também.

O Jitsi a mesma coisa.

gutocarvalho commented 1 year ago

Aqui o processo de atualizar do mastodon que precisa virar esteira.

https://blog.gcn.sh/howtos/updating-mastodon-to-the-version-4-1-4

droposhado commented 1 year ago

No Servidor Proxmox

1. conectar no servidor proxmox
2. rodar um backup
3. rodar um snap

É possível utilizar algo assim ou é ssh, bash puro dentro da máquina?

https://pve.proxmox.com/wiki/Proxmox_VE_API

gutocarvalho commented 1 year ago

acho que ir por ssh seria mais fácil, mas se a API tiver todos os endpoints necessários, dá para ir por lá também.

droposhado commented 1 year ago

Não cheguei a fazer isso, porém pode ser feito com o comando?

ssh -t user@host 'bash' < path_to_script

Se for isso:

droposhado commented 1 year ago

Pra quem não mexe com Proxmox e tá meio perdido igual eu:

Comandos:

Endpoints da API:

https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/vzdump https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/qemu/{vmid}/snapshot

The API method "POST /api2/json/nodes/{node}/vzdump" works for KVM and OpenVZ. https://forum.proxmox.com/threads/execute-backup-via-api.13213/

droposhado commented 1 year ago

Caso precise posso passar pra org da bolha ou formatar no padrão dela e reenviar, esses workflows pra gerar imagens ajudam?

  1. PixelFed
  1. Bookwyrm

Pro jisti, tem esse repo com as imagens e no dockerhub também tem

  1. Jisti
ulyssesalmeida commented 1 year ago

acho que ir por ssh seria mais fácil, mas se a API tiver todos os endpoints necessários, dá para ir por lá também.

Concordo. Por outro lado a API costuma ter um "contrato" de interface mais forte. Já vi muito script bash quebrar por conta de simples alteração de locale, ou atualização cosmética. Com uso de API é bem mais difícil de isso acontecer.

Vocês consideram usar ansible para operar a esteira?

ulyssesalmeida commented 1 year ago

Ansible parece ter módulos interessantes https://docs.ansible.com/ansible/latest/collections/community/general/index.html (busque por "proxmox"). Pode ser um atalho.

A ideia é criar uma VM para ser o "controller"/"orquestrador" da esteira? Caso não seja a ideia, qual seria o design da esteira?

droposhado commented 1 year ago

Procurei pouco, agora que falou, fui ver a documentação e encontrei umas coisas interessantes.

Para listar as VMs Snapshot all running VMs on Proxmox via Ansible).

Ou

- name: List all existing virtual machines on node
  community.general.proxmox_vm_info:
    api_host: proxmoxhost
    api_user: root@pam
    api_token_id: '{{ token_id | default(omit) }}'
    api_token_secret: '{{ token_secret | default(omit) }}'
    node: node01

Pra para uma vm com o vmid obtido de cima:

- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    force: yes
    state: stopped

Pro snapshot, tem algumas coisas de política de retenção, que eu particularmente não manjo:

Pra backup eu não vi ou não entendi, a questão dos nodes tbm não, são requeridos.

gutocarvalho commented 1 year ago

Já usei o modulo ansible.

Hoje uso o terraform pro proxmox.

gutocarvalho commented 1 year ago

https://registry.terraform.io/providers/Telmate/proxmox/latest/docs

gutocarvalho commented 1 year ago

o mais fácil seria criar um shellscript local de snapshot/backup e chamar ele por ssh, é uma possilidade.

ulyssesalmeida commented 1 year ago

Já usei o modulo ansible.

Hoje uso o terraform pro proxmox.

Terraform é o ideal para deploy de um novo ambiente. Mas para manter uma configuração declarativa, o ansible me parece mais adequado. Por exemplo: Uso o ansible para automatizar o seguinte processo: Remover snapshot pre-upgrade, caso exista. Fazer novo snapshot pré-upgrade de uma VM, fazer um apt-get upgrade. Ainda preciso implementar os testes pós upgrade. Imagino que podemos pensar algo nesse sentido. Se esse tipo de ação não fizer sentido e o ideal é sempre um novo deploy, voto com o relator de irmos de terraform. Quem sabe me força e estudar um pouco mais! :-)

gutocarvalho commented 1 year ago

De acordo, eu tava usando só para criar VMs, nao para manter.