Administrando o SLE Micro com o comando transactional-update
- O QUE É?
O comando
transactional-update
permite modificar um sistema de arquivos apenas leitura. As modificações são executadas em um instantâneo separado e não influenciam o sistema em execução até você inicializar o instantâneo.- POR QUÊ?
Para administrar o SLE Micro e gerenciar suas atualizações, minimizando o risco de tempo de inatividade do sistema devido a falhas de atualização e, ao mesmo tempo, garantindo rollbacks fáceis.
- DEDICAÇÃO
Leva menos de 30 minutos para entender o comando
transactional-update
.- META
Você entenderá como o
transactional-update
funciona e como usá-lo para administrar seu sistema.- REQUISITOS
Uma instância em execução do SLE Micro
Privilégios de
root
1 Atualizações transacionais #
1.1 O que são atualizações transacionais? #
Para manter o sistema operacional base estável e consistente, o SLE Micro usa um sistema de arquivos raiz apenas leitura. Portanto, você não pode fazer mudanças diretas no sistema de arquivos raiz, por exemplo, usando o comando zypper
. Em vez disso, o SLE Micro lança atualizações transacionais que permitem aplicar uma ou mais mudanças ao sistema de arquivos raiz.
O comportamento padrão do transactional-update
é criar um novo instantâneo do sistema de arquivos raiz atual após cada mudança. Para aplicar as mudanças, você precisa reinicializar o host. Não é possível executar o comando transactional-update
várias vezes sem reinicialização para adicionar mais mudanças ao instantâneo. Essa ação cria instantâneos independentes separados que não incluem mudanças de instantâneos anteriores.
1.2 Como funcionam as atualizações transacionais? #
Sempre que você chama o comando transactional-update
para mudar o sistema, seja para instalar um pacote, executar uma atualização ou aplicar um patch, as seguintes ações ocorrem:
Um novo instantâneo de leitura-gravação é criado com base no sistema de arquivos raiz atual ou em um instantâneo especificado.
Todas as mudanças são aplicadas (atualizações, patches ou instalação de pacote).
O instantâneo é revertido para o modo apenas leitura.
Se as mudanças forem aplicadas com êxito, o novo instantâneo do sistema de arquivos raiz será definido como padrão.
Após a reinicialização, o sistema será inicializado no novo instantâneo.
1.3 Benefícios das atualizações transacionais #
Elas são atômicas: a atualização é aplicada apenas se for concluída com êxito.
As mudanças são aplicadas a um instantâneo separado e, portanto, não influenciam o sistema em execução.
As mudanças podem ser revertidas facilmente.
1.4 Ambiente no comando transactional-update
#
Cada vez que você executa o comando transactional-update
, as mudanças são feitas em um novo instantâneo. O ambiente no instantâneo pode ser diferente daquele no shell do qual você executa o comando transactional-update
. Por exemplo, o diretório de trabalho atual ($PWD
) não está definido como o diretório do qual você executa o transactional-update
, mas está definido como /
.
De dentro do instantâneo, você não pode acessar o diretório /var
. Esse diretório também não está incluído no instantâneo. No entanto, alguns diretórios não estão incluídos no instantâneo, mas podem ser acessados dentro do ambiente do transactional-update
, por exemplo, o diretório /root
.
2 Uso do comando transactional-update
#
O comando transactional-update
permite a instalação ou remoção atômica de atualizações. As atualizações serão aplicadas apenas se todas puderem ser instaladas com êxito. O transactional-update
cria um instantâneo do seu sistema e usa-o para atualizar o sistema. Posteriormente, você poderá restaurar esse instantâneo. Todas as mudanças se tornarão ativas apenas após a reinicialização.
A sintaxe do comando transactional-update
é a seguinte:
transactional-update [option]
[general_command] [package_command] standalone_command
transactional-update
sem argumentos
Se você não especificar nenhum comando ou opção ao executar o comando transactional-update
, o sistema se atualizará.
Os parâmetros de comando possíveis estão descritos mais adiante.
transactional-update
#-
--interactive, -i
Pode ser usada junto com um comando de pacote para ativar o modo interativo.
-
--non-interactive, -n
Pode ser usada junto com um comando de pacote para ativar o modo não interativo.
-
--continue [number], -c
A opção
--continue
faz várias mudanças no sistema de arquivos raiz sem reinicializar. Consulte a Seção 3, “Aplicando várias mudanças sem reinicialização” para obter mais detalhes.Outro recurso útil da opção
--continue
é que você pode selecionar um instantâneo existente como base para o seu novo instantâneo. O seguinte exemplo demonstra a execução dotransactional-update
para instalar um novo pacote em um instantâneo com base no instantâneo 13 e, em seguida, uma nova execução para instalar outro pacote:>
sudo
transactional-update pkg install package_1
>
sudo
transactional-update --continue 13 pkg install package_2
-
--no-selfupdate
Desabilita a autoatualização de
transactional-update
.-
--drop-if-no-change, -d
Descarta o instantâneo criado por
transactional-update
se não houver mudanças no sistema de arquivos raiz. Se houver mudanças no diretório/etc
, elas serão fundidas novamente no sistema de arquivos atual.-
--quiet
O comando
transactional-update
não gera saída parastdout
.-
--help, -h
Imprime a ajuda para o comando
transactional-update
.-
--version
Exibe a versão do comando
transactional-update
.
2.1 Comandos gerais #
Esta seção lista os comandos de finalidade geral de transactional-update
.
-
grub.cfg
Use esse comando para reconstruir o arquivo de configuração do carregador de boot GRUB.
-
bootloader
O comando reinstala o carregador de boot.
-
initrd
Use o comando para reconstruir o
initrd
.-
kdump
Caso você faça mudanças no hardware ou no armazenamento, talvez seja necessário reconstruir o initrd do Kdump.
-
shell
Abre um shell de leitura-gravação no novo instantâneo antes de sair. Normalmente, o comando é usado para fins de depuração.
-
reboot
O sistema é reinicializado após a conclusão do comando
transactional-update
.-
run <command>
Executa o comando fornecido em um novo instantâneo.
-
setup-selinux
Instala e habilita a política do SELinux de destino.
3 Aplicando várias mudanças sem reinicialização #
O comando transactional-update
aplica as mudanças ao sistema de arquivos raiz em um sistema transacional. O comportamento padrão é criar um novo instantâneo do sistema de arquivos raiz atual após cada mudança e reinicializar para aplicar as mudanças.
Para fazer várias mudanças ao sistema de arquivos raiz sem reinicialização, você tem diversas opções, que estão descritas nas seções a seguir:
3.1 A opção transactional-update
--continue
#
Use o comando transactional-update
junto com a opção --continue
para fazer várias mudanças sem reinicializar. Um instantâneo separado é criado a cada execução, incluindo todas as mudanças do instantâneo anterior, além das novas mudanças. O instantâneo final inclui todas as mudanças. Para aplicá-las, reinicialize o sistema, e o instantâneo final se tornará o novo sistema de arquivos raiz.
3.2 O comando transactional-update run
#
Normalmente, o comando transactional-update
run
executa apenas um único comando. No entanto, você pode usá-lo para executar vários comandos em uma sessão transacional, concatenando-os em um shell de comando, como bash
, por exemplo:
>
sudo
transactional-update run bash -c 'ls && date; if [ true ]; then echo -n "Hello "; echo '\''world'\''; fi'
O comando transactional-update run
tem as mesmas limitações que o comando transactional-update shell
descrito na Seção 3.3, “O shell de transactional-update
”, com exceção de que os comandos inseridos são registrados no arquivo /var/log/transactional-update.log
.
3.3 O shell de transactional-update
#
O comando transactional-update shell
abre um shell no ambiente de transactional-update. No shell, você pode inserir praticamente qualquer comando do Linux para fazer mudanças no sistema de arquivos, por exemplo, instalar vários pacotes com o comando zypper
ou fazer mudanças em arquivos que fazem parte do sistema de arquivos apenas leitura. Você também pode verificar se as mudanças já feitas com o comando transactional-update
estão corretas.
O shell transacional tem várias limitações. Por exemplo, você não pode operar ações de iniciar ou parar serviços usando os comandos systemd
, nem modificar a partição /var
porque ela não está montada. Além disso, os comandos inseridos durante uma sessão de shell não são registrados no arquivo /transactional-update.log
.
Todas as mudanças feitas no sistema de arquivos fazem parte de um único instantâneo. Após concluir as mudanças no sistema de arquivos e sair do shell com o comando exit
, você precisará reinicializar o host para aplicar as mudanças.
4 Executando a limpeza de instantâneos #
Você pode usar transactional-update
para limpar instantâneos não utilizados do sistema de arquivos e diretórios de sobreposição /etc
não referenciados.
O transactional-update
reconhece os seguintes comandos de limpeza:
-
cleanup-snapshots
O comando marca todos os instantâneos não utilizados para remoção pelo Snapper.
-
cleanup-overlays
O comando remove todas as camadas de sobreposição não utilizadas de
/etc
do diretório/var/lib/overlay
.-
cleanup
O comando combina os comandos
cleanup-snapshots
ecleanup-overlays
.
4.1 Como funciona a limpeza #
Se você executar o comando transactional-update cleanup
, todos os instantâneos antigos sem um algoritmo de limpeza terão um definido. Todos os instantâneos importantes também serão marcados. O comando também remove todos os diretórios de sobreposição /etc
não referenciados (e, portanto, não utilizados) de /var/lib/overlay
.
Os instantâneos com o algoritmo de limpeza number
definido serão apagados de acordo com as regras configuradas em /etc/snapper/configs/root
pelos seguintes parâmetros:
- NUMBER_MIN_AGE
Define a duração mínima de um instantâneo (em segundos) que pode ser removido automaticamente.
- NUMBER_LIMIT/NUMBER_LIMIT_IMPORTANT
Define a contagem máxima de instantâneos armazenados. Os algoritmos de limpeza apagam os instantâneos acima do valor máximo especificado, sem levar em conta o instantâneo e o espaço no sistema de arquivos. Os algoritmos também apagam os instantâneos acima do valor mínimo até que os limites do instantâneo e do sistema de arquivos sejam atingidos.
A limpeza de instantâneos também é realizada regularmente pelo systemd
.
5 Registrando produtos #
Você pode usar o comando transactional-update register
para administrar todas as tarefas relacionadas ao registro do produto e seu gerenciamento de assinatura. Você pode especificar as seguintes opções:
-
--list-extensions
Com essa opção, o comando lista as extensões disponíveis para o seu sistema. Você pode usar a saída para localizar um identificador de produto para ativação do produto.
-
-p, --product
Use essa opção para especificar um produto para ativação. O identificador de produto tem o seguinte formato: <nome>/<versão>/<arquitetura>, por exemplo,
sle-module-live-patching/15.3/x86_64
. O comando correspondente tem o seguinte formato:>
sudo
transactional-update register -p sle-module-live-patching/15.3/x86_64-
-r, --regcode
Registre seu sistema com o código de registro fornecido. O comando registra a assinatura e habilita os repositórios de software.
-
-d, --de-register
A opção cancela o registro do sistema ou, quando usada junto com a opção
-p
, cancela o registro de uma extensão.-
-e, --email
Especifique um endereço de e-mail que seja usado no SUSE Customer Center para registro.
-
--url
Especifique o URL do servidor de registro. O URL é armazenado na configuração e usado nas chamadas de comando subsequentes. Por exemplo:
>
sudo
transactional-update register --url https://scc.suse.com-
-s, --status
Exibe o status do registro atual no formato JSON.
-
--write-config
Grava o valor das opções fornecidas no arquivo de configuração
/etc/SUSEConnect
.-
--cleanup
Remove credenciais antigas do sistema.
-
--version
Imprime a versão.
-
--help
Exibe o uso do comando.
6 Gerenciando pacotes de software #
Você pode usar transactional-update
para instalar, atualizar ou remover pacotes de software.
O SLE Micro obtém pacotes de software de repositórios que estão disponíveis após o registro do produto.
O transactional-update
usa os comandos a seguir para gerenciar pacotes de software.
pkg
e as opções do Zypper
Com os comandos transactional-update pkg
, você pode usar qualquer opção do Zypper que corresponda ao subcomando usado. Por exemplo, transactional-update pkg install
reconhece todas as opções que zypper install
reconhece.
-
pkg install
Instala pacotes individuais dos canais disponíveis usando o comando
zypper install
. Também é possível usar esse comando para instalar arquivos RPM de Correção Temporária do Programa (PTF, Program Temporary Fix). A opção padrão para esse comando é--interactive
.>
sudo
transactional-update pkg install package_name
ou
>
sudo
transactional-update pkg install rpm1 rpm2
ou, para instalar um padrão de software:
>
sudo
transactional-update pkg install -t pattern pattern_name
-
pkg remove
Remove pacotes individuais do instantâneo ativo usando o comando
zypper remove
. Também é possível usar esse comando para remover arquivos RPM de PTF. A opção padrão para esse comando é--interactive
.>
sudo
transactional-update pkg remove package_name
-
pkg update
Atualiza pacotes individuais do instantâneo ativo usando o comando
zypper update
. Apenas os pacotes que fazem parte do instantâneo do sistema de arquivos base podem ser atualizados. A opção padrão para esse comando é--interactive
.>
sudo
transactional-update pkg update package_name
-
patch
Verifica se há patches disponíveis e os instala. A opção padrão para esse comando é
--non-interactive
.-
dup
Faz upgrade do seu sistema. A opção padrão para esse comando é
--non-interactive
.-
up
Atualiza os pacotes instalados para versões mais recentes. A opção padrão para esse comando é
--non-interactive
.-
migration
O comando migra seu sistema para um destino selecionado. Normalmente, ele é usado para fazer upgrade do sistema se ele tiver sido registrado no SUSE Customer Center.
7 Fazendo rollback do sistema #
O GRUB 2 permite a inicialização de instantâneos btrfs e, portanto, permite usar qualquer instantâneo funcional mais antigo caso o novo instantâneo não funcione corretamente.
Ao inicializar um instantâneo, as partes do sistema de arquivos incluídas no instantâneo são montadas como apenas leitura; todos os outros sistemas de arquivos e partes excluídos dos instantâneos são montados como leitura-gravação e podem ser modificados.
Um instantâneo inicializável inicial é criado no fim da instalação inicial do sistema. É possível voltar para esse estado a qualquer momento inicializando o instantâneo. É possível identificar o instantâneo pela descrição first root file system
.
Há dois métodos para executar rollback do sistema.
Em um sistema em execução, você pode definir o instantâneo padrão. Leia mais no Procedimento 2, “Rollback de um sistema em execução”.
Especialmente nos casos em que o instantâneo atual está corrompido, você pode inicializar no novo instantâneo e defini-lo como padrão. Para obter informações detalhadas, consulte o Procedimento 3, “Rollback para um instantâneo de trabalho”.
Se o instantâneo atual estiver funcionando, você poderá seguir o procedimento abaixo para fazer rollback do sistema.
Identifique o instantâneo que deve ser definido como padrão e anote o número dele.
>
sudo
snapper listDefina o instantâneo como padrão.
>
sudo
transactional-update rollback snapshot_numberSe você omitir o snapshot number, o instantâneo atual será definido como padrão.
Dica: Definindo o último instantâneo de trabalhoPara definir o último instantâneo de trabalho como padrão, execute
rollback last
.Reinicialize o sistema para inicializar no novo instantâneo padrão.
O procedimento a seguir é usado caso o instantâneo atual esteja corrompido e você não consiga inicializá-lo.
Reinicialize o sistema e selecione
Start bootloader from a read-only snapshot
.Escolha um instantâneo para inicializar. Os instantâneos são classificados de acordo com a data de criação, com o mais recente na parte superior.
Efetue login no sistema e verifique se tudo funciona como esperado. Os dados gravados nos diretórios excluídos dos instantâneos permanecerão inalterados.
Se o instantâneo no qual você inicializou não for adequado para rollback, reinicialize o sistema e escolha outro.
Se o instantâneo funcionar como esperado, você poderá fazer rollback executando o seguinte comando:
>
sudo
transactional-update rollback
E reinicializar na sequência.
8 Gerenciando atualizações transacionais automáticas #
As atualizações automáticas são controladas pelo systemd.timer
que é executado uma vez por dia. Ele é aplicado a todas as atualizações e informa o rebootmgrd
de que a máquina deve ser reinicializada. Você pode ajustar o horário de execução da atualização. Consulte a documentação do systemd.timer(5).
8.1 Desabilitando atualizações automáticas #
As atualizações automáticas estão habilitadas por padrão. No entanto, você pode desabilitá-las com este comando:
>
sudo
systemctl --now disable transactional-update.timer
8.2 Configurando notificações de atualizações com falha #
Quando há falha em um comando transactional-update
automático, o instantâneo com falha é apagado. Nesse período, o sistema pode ser reinicializado, e você talvez não saiba que a última atualização automática falhou. Portanto, você pode configurar um serviço systemd
, que o informará sobre a falha do comando automático transactional-update
. O procedimento para fazer isso pode ser resumido nas seguintes etapas:
Instalar os pacotes necessários, se não estiverem presentes no sistema. Para obter informações detalhadas, consulte a Seção 8.2.1, “Instalando os pacotes necessários”.
Configurar o serviço
systemd-status-mail
. Para obter informações detalhadas, consulte a Seção 8.2.2, “Configurando o serviçosystemd-status-mail
”.
8.2.1 Instalando os pacotes necessários #
Os pacotes mailx
e systemd-status-mail
são necessários para configurar as notificações. Eles estão presentes no sistema por padrão. No entanto, se eles não estiverem instalados, instale os pacotes executando o seguinte comando:
>
sudo
transactional-update pkg in systemd-status-mail mailx
Reinicialize o sistema.
8.2.2 Configurando o serviço systemd-status-mail
#
Para configurar o serviço systemd-status-mail
, você pode criar um arquivo de configuração ou usar a ferramenta jeos-config
.
8.2.2.1 Configurando o serviço com jeos-config
#
Para configurar as notificações por e-mail, você pode usar as ferramentas jeos-config
conforme descrito abaixo.
Para abrir a janela de configuração, execute o comando:
>
sudo
jeos-config status_mailNa caixa de diálogo, configure os itens de acordo com as suas necessidades.
Confirme com
.
8.2.2.2 Configurando o serviço por meio da edição de um arquivo de configuração #
O arquivo de configuração padrão está em /usr/etc/default/systemd-status-mail
. Para modificá-lo, crie uma cópia em /etc/default/
e edite os seguintes itens:
- ADDRESS
Uma entrada obrigatória. Especifique o endereço de e-mail para o qual a notificação será enviada. Por exemplo:
ADDRESS=“tux@example.com”
- FROM
O e-mail do remetente do e-mail de notificação. Verifique se o endereço é válido. Por exemplo:
FROM=“geeko@example.com”
- MAILER
O tipo de aplicativo de e-mail para enviar notificações. Use o valor
mailx
da seguinte maneira:MAILER=“mailx”
- RELAYHOST
Especifique a retransmissão de e-mail usada pelo mailx.
RELAYHOST=“mail.example.com:587”
- MAILX_OPTIONS
Especifique as opções necessárias para garantir que o provedor de e-mail aceitará o e-mail de notificação.
MAILX_OPTIONS="-Sverbose -Ssmtp-use-starttls -Ssmtp-auth=login -Ssmtp-auth-user='tux@example.com' -Ssmtp-auth-password='TopSecret'"
9 Informações legais #
Copyright © 2006-2024 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.