As atualizações do LXC não são difíceis no Proxmox – gerenciar 20 delas em grande escala é outra história

Proxmox é minha plataforma de hipervisor favorita e não deseja testar vários aplicativos e distribuições ao mesmo tempo. Ultimamente, comecei a usar mais o LXC para substituir VMs que consomem muitos recursos e está indo bem. Pelo menos até chegar a hora de atualizar todos eles.

Tenho quase duas dúzias de LXCs instalados e em execução, desde o servidor LLM local até meu servidor DNS, alguns dos quais usam compartilhamento de GPU, e cada atualização por meio da CLI é uma perda de tempo irritante. Leva alguns minutos para mudar para o próximo contêiner, inserir comandos e aguardar atualizações, e se torna uma tarefa demorada quando você multiplica isso por cerca de 20.

Finalmente encontrei um LLM local que realmente quero usar para codificação

O Qwen3-Coder-Next é um ótimo modelo e fica ainda melhor com Claude Code como arnês.

Laboratórios domésticos tornam-se um trabalho de tempo integral

Não é mais divertido

Quando você começa a construir um laboratório doméstico, tudo é novo e fresco e parece gerenciável, e não importa se você atualiza alguma coisa, porque ainda está aprendendo. Depois de um tempo, o peso das tarefas simples de manutenção aumenta e você começa a procurar maneiras de automatizar o processo.

Execute uma atualização LXC. O fluxo de trabalho normal é entrar no contêiner pela CLI:

pct enter

Em seguida, execute os comandos de atualização com aprox.assim como você atualizaria qualquer instalação do Linux. Não é uma lista longa e nenhuma das equipes é o que você chamaria de difícil, mas leva tempo.

apt update
apt upgrade -y
apt autoremove -y

Esta etapa pode levar cinco minutos ou mais por contêiner se for necessário fazer download de um arquivo de atualização grande. Tudo bem, mas e os outros 19 contêineres da minha pilha atual? Esses cinco minutos se transformaram em mais de uma hora e meia, e não farei nenhuma outra tarefa de laboratório doméstico até terminar.

Felizmente, você tem scripts para ajudá-lo

Isso economiza muito tempo

O Proxmox é construído no kernel do Ubuntu e facilita a combinação de alguns scripts para transformar o complexo trabalho de atualização de contêineres LXC em um único comando. O script abaixo irá percorrer sua lista de contêineres, iniciá-los se não estiverem em execução, atualizá-los e, em seguida, encerrar o contêiner em segundo plano (ou deixá-lo em execução, se já estiver) antes de passar para o próximo LXC na lista.

#!/bin/bash
# update all containers

# list of container ids we need to iterate through
containers=$(pct list | tail -n +2 | cut -f1 -d' ')

function update_container() {
container=$1
echo "(Info) Updating $container"
# to chain commands within one exec we will need to wrap them in bash
pct exec $container -- bash -c "apt update && apt upgrade -y && apt autoremove -y"
}

for container in $containers
do
status=`pct status $container`
if ( "$status" == "status: stopped" ); then
echo (Info) Starting $container
pct start $container
echo (Info) Sleeping 5 seconds
sleep 5
update_container $container
echo (Info) Shutting down $container
pct shutdown $container &
elif ( "$status" == "status: running" ); then
update_container $container
fi
done; wait

Funciona sempre, embora tenha uma grande ressalva. Ele não tem interatividade, então você não pode dizer ao script para ignorar determinados contêineres se quiser deixá-los em paz. Isso pode ser um problema se você estiver tentando manter uma versão específica ou se precisar de tempo de atividade total para algo importante.

Felizmente, a comunidade Proxmox está aqui para ajudar. O excelente projeto de script da comunidade PVE possui um atualizador LXC que perguntará quais contêineres não precisam ser atualizados e, em seguida, vá em frente e atualize o restante.

Não é o script mais chamativo da coleção, mas provavelmente é o que eu mais uso. Eu o executo manualmente quando preciso atualizar porque costumo usar alguns contêineres para projetos de longo prazo e não quero perder a conexão, mas você pode adicioná-lo a um cron job e executá-lo automaticamente de vez em quando.

A automação economiza ainda mais tempo

Por que fazer hoje o que pode ser feito com o computador amanhã?

Ansible é uma das minhas coisas favoritas para usar em meu laboratório doméstico para automatizar tarefas que não gosto e é ótimo para atualizações do Proxmox com community.proxmox.proxmox_pct_remote módulo de coleta instalado. Uma vez disponível, podemos criar um playbook que faça um inventário dinâmico do seu Proxmox LXC e de outros contêineres para que você possa chamá-los em outras peças do Ansible:

# ~/ansible/inventory/proxmox.yml
plugin: community.proxmox.proxmox
url: "http://192.168.2.3:8006" # Proxmox host (replace with your IP/URL)
user: root@pam
password:
validate_certs: false
want_facts: true
keyed_groups:
- key: proxmox_tags_parsed
separator: ""
prefix: proxmox_tags_
compose:
ansible_host: "'192.168.2.3'"
ansible_connection: "'community.proxmox.proxmox_pct_remote'"
ansible_user: "'root'"
ansible_private_key_file: "'~/.ssh/pve'"

Em seguida, criamos o seguinte guia que atualizará o Debian/Ubuntu LXC. Se você tiver outras bases LXC, poderá ajustar o gerenciador de pacotes e o grupo de tags Proxmox de acordo com onde eles podem ser separados.

---
- name: Update Proxmox LXCs
hosts: lxc
gather_facts: false
become: true
tasks:
- name: Refresh package index
ansible.builtin.apt:
update_cache: true

- name: Upgrade packages
ansible.builtin.apt:
upgrade: dist

- name: Remove unused packages
ansible.builtin.apt:
autoremove: true

O plugin SSH é colocado no Proxmox e executado por cento atualizações do servidor, para que você não precise se preocupar com SSH ou acesso remoto a cada contêiner. Você também pode usar esse método para contêineres Docker e Podman ou máquinas virtuais com um pouco de personalização.

Eu automatizo tarefas chatas do Proxmox com Ansible e é mais fácil do que você pensa

Mesmo sem o Terraform, o Ansible é uma ferramenta poderosa para implantar e configurar convidados virtuais no Proxmox

Atualizar o Proxmox LXC não precisa ser um incômodo

Gosto da carga LXC de fácil utilização em meu host Proxmox, mas não gosto do tempo que leva para atualizá-los em massa. Um pouco de script no laboratório doméstico ajuda muito, e levei meia hora para configurar esse processo de atualização para não ter que pensar nisso no futuro.

Link da fonte