Práticas recomendadas para implantar atualizações de forma segura
O Amazon Linux 2023 (AL2023) tem vários recursos projetados para ajudar na implantação segura de atualizações do sistema operacional, além de permitir saber o que mudou entre as atualizações e, se necessário, reverter facilmente para a versão anterior. Esta seção explora as lições aprendidas pela AWS ao longo de mais de uma década de uso interno e externo do Amazon Linux.
Atenção
A execução de dnf --releasever=latest update não é uma prática recomendada e provavelmente resultará no primeiro teste de uma atualização do sistema operacional em produção.
Em vez de usar latest, use uma versão específica do AL2023. Isso garante que você esteja implantando as mesmas alterações em todas as instâncias de produção que testou anteriormente. Por exemplo, dnf --releasever=2023.9.20250929 update sempre atualizará para o lançamento 2023.9.20250929.
Para obter mais informações, consulte a seção Updating AL2023 no Guia do usuário do AL2023.
Sem planejar a segurança da implantação das atualizações do sistema operacional, o impacto de uma interação negativa inesperada entre sua aplicação/serviço e uma atualização do sistema operacional pode ser significativamente maior, incluindo uma interrupção total. Como acontece com qualquer problema de software, quanto mais cedo o problema for detectado, menor será o impacto que ele poderá ter sobre os usuários finais.
É importante não cair na armadilha de acreditar em duas coisas que fundamentalmente não são verdadeiras:
O fornecedor do sistema operacional nunca cometerá um erro em uma atualização do sistema operacional.
O comportamento específico ou a interface com o sistema operacional em que você confia corresponde ao comportamento e às interfaces que o fornecedor do sistema operacional consideraria confiáveis.
Ou seja, tanto o fornecedor do sistema operacional quanto você concordariam que houve um problema com a atualização.
Não confie em boas intenções, implemente sistemas para garantir que a segurança da implantação inclua qualquer atualização do sistema operacional.
Não é recomendável testar novas atualizações do sistema operacional implantando-as em ambientes de produção. É uma prática recomendada considerar o sistema operacional como outra parte de sua implantação e pensar em aplicar os mesmos mecanismos de segurança de implantação que você considera adequados para qualquer outra alteração em um ambiente de produção.
É uma prática recomendada testar toda e qualquer atualização do sistema operacional antes de implantar nos sistemas de produção. Durante a implantação, são recomendadas implementações graduais combinadas com um bom monitoramento. As implementações em etapas podem garantir que, se ocorrer um problema, mesmo que não seja imediato, o impacto seja restrito a um subconjunto da frota, e a implantação da atualização possa ser interrompida enquanto se realiza uma investigação mais aprofundada e se tomam medidas de mitigação.
A mitigação de qualquer impacto negativo causado pela atualização do sistema operacional costuma ser a primeira prioridade, seguida pela resolução do problema, onde quer que ele esteja. Quando a introdução de uma atualização do sistema operacional está correlacionada a um impacto negativo, a capacidade de reverter para a versão anterior do sistema operacional, que se sabe ser boa, é uma ferramenta poderosa.
O Amazon Linux 2023 apresenta Atualizações determinísticas por meio de repositórios com versionamento, um novo recurso poderoso para garantir que qualquer alteração na versão do sistema operacional (ou pacotes individuais) seja repetível. Assim, se ocorrer algum problema ao mudar de uma versão do sistema operacional para a seguinte, existem mecanismos simples de usar disponíveis para manter a versão do sistema operacional que funciona corretamente enquanto se resolve o problema.
Com o AL2023, sempre que lançamos atualizações de pacotes, há uma nova versão para vinculação e novas AMIs que se vinculam a essa versão. As AL2023 Release Notes abordam as mudanças em cada lançamento, e as Recomendações de segurança do Amazon Linux para o AL2023 abordam os problemas de segurança resolvidos nas atualizações de pacotes.
Por exemplo, se o problema presente no lançamento 2023.6.20241028 afetou você, é possível reverter imediatamente para o uso das AMIs e imagens de contêiner do lançamento anterior, 2023.6.20241010. Nesse caso, havia um bug em um pacote que foi corrigido no lançamento subsequente 2023.6.20241031, mas com Atualizações determinísticas por meio de repositórios com versionamento qualquer pessoa afetada poderia tomar imediatamente uma medida simples para mitigar o problema: bastava usar as imagens anteriores.
Atualizações determinísticas por meio de repositórios com versionamento também garantem que qualquer implantação em andamento de uma atualização do sistema operacional, seja no local ou pelo inicialização de novas AMIs ou imagens de contêiner, não seja afetada por atualizações do sistema operacional lançadas posteriormente.
No nosso primeiro exemplo, a frota A é uma grande frota que está no meio da implantação da atualização de 2023.5.20241001 para 2023.6.20241010 quando 2023.6.20241028 é lançada. Atualizações determinísticas por meio de repositórios com versionamento significam que a implementação para a frota A continua sem qualquer alteração nas atualizações que está aplicando.
O objetivo das estratégias de implantação baseadas em ondas ou em fases, como implantar primeiro em 1% de uma frota, depois em 5%, 10%, 20% e 40%, até atingir 100%, é poder testar uma mudança de forma limitada antes de implementá-la mais amplamente. Esse tipo de estratégia de implantação geralmente é considerado a prática recomendada para implantar qualquer alteração em produção.
Com uma estratégia de implantação baseada em ondas e a atualização da frota A para 2023.6.20241010 em um estágio em que está sendo implantada em muitos hosts ao mesmo tempo, o fato de 2023.6.20241028 ter sido lançada não tem impacto na implantação em andamento graças ao uso de Atualizações determinísticas por meio de repositórios com versionamento.
Se a frota B estivesse executando uma versão mais antiga, digamos 2023.5.20240708, e tivesse começado a implantar a atualização para 2023.6.20241028, e a frota B fosse afetada pelo problema nessa versão, isso seria percebido no início da implantação. Nesse momento, pode-se decidir se é necessário pausar qualquer implementação até que uma correção para esse problema esteja disponível ou se, entretanto, é necessário iniciar uma implantação da mesma versão que a frota A estava executando, 2023.6.20241010, para que a frota B receba todas as atualizações entre 2023.5.20240708 e 2023.6.20241010.
É importante observar que não instalar as atualizações do sistema operacional prontamente pode causar problemas. Novas atualizações provavelmente contêm correções de bugs e segurança que podem ser relevantes para o seu ambiente. Para obter mais informações, consulte Segurança e compatibilidade no Amazon Linux 2023 e Gerenciar atualizações de pacotes e do sistema operacional no AL2023.
É importante configurar seus sistemas de implantação para instalar facilmente novas atualizações do sistema operacional, testá-las antes da implantação em produção e usar mecanismos, como implantações baseadas em ondas, para minimizar qualquer impacto negativo. Para poder mitigar qualquer impacto negativo de uma atualização do sistema operacional, é importante saber como fazer com que seus sistemas de implantação apontem para uma versão anterior em boas condições do sistema operacional e, depois que o problema for resolvido, não ficar preso a essa versão antiga, mas sim mudar para uma nova versão em boas condições.
Preparar-se para atualizações secundárias
A preparação para atualizações secundárias do sistema operacional, como um lançamento pontual do AL2023, deve ser limitada a zero esforço. Confira as AL2023 Release Notes para ficar por dentro das próximas alterações.
O fim do período de suporte de um pacote pode envolver a mudança para uma versão mais recente do runtime da linguagem (como no caso de PHP no AL2023). É uma prática recomendada se preparar para isso com antecedência, migrando para novas versões de runtime da linguagem com bastante antecedência do término do período de suporte.
Para pacotes como pcre versão 1, também há a oportunidade de planejar com antecedência e migrar qualquer código para seu substituto, que neste caso é pcre versão 2. É recomendável fazer isso o quanto antes, para ter tempo suficiente para lidar com eventuais contratempos.
Onde não há substituição direta, como no caso de Berkeley DB (libdb), talvez seja necessário fazer uma escolha com base no seu caso de uso.
Preparar-se para atualizações principais
A atualização para uma nova versão principal de um sistema operacional é quase universalmente vista como algo que requer planejamento, trabalho para se adaptar a funcionalidades alteradas ou descontinuadas e também testes antes da implantação. Não é incomum poder se preparar para a próxima versão principal do Amazon Linux 2023 de forma mais incremental, como resolver qualquer uso de funcionalidades descontinuadas ou removidas antes de prosseguir com a migração para a próxima versão principal.
Por exemplo, ao migrar do AL2 para o AL2023, a leitura da seção Funcionalidades descontinuadas no AL2 e removidas do AL2023 pode resultar em várias pequenas etapas seguras que podem ser realizadas enquanto ainda se utiliza o AL2 para se preparar para o AL2023. Por exemplo, qualquer uso de O Python 2.7 foi substituído pelo Python 3 (fora do uso do sistema operacional, como no gerenciador de pacotes yum) pode ser migrado para o Python 3 em preparação para o uso de Python no AL2023. Se estiver usando PHP, tanto o AL2 (por meio do Extra do AL2 do PHP 8.2) quanto o AL2023 distribuem o PHP 8.2 e, portanto, a migração da versão do PHP e a migração do sistema operacional não precisam ocorrer simultaneamente.
Ao usar o AL2023, também é possível se preparar hoje mesmo para a próxima versão principal do Amazon Linux 2023. A seção Descontinuações no AL2023 aborda recursos e pacotes que foram descontinuados no AL2023 e que devem ser removidos.
Por exemplo, migrar qualquer uso restante de System V init (sysvinit), como scripts init, para seus equivalentes de systemd preparará você para o futuro, além de permitir que use o conjunto completo de recursos de systemd para monitorar o serviço, como e se deve reiniciá-lo, quais outros serviços ele precisa e se alguma restrição de recurso ou permissão deve ser aplicada.
Para recursos como suporte a 32 bits, a descontinuação pode abranger várias versões principais do sistema operacional. Para 32 bits, o Amazon Linux 1 (AL1) descontinuou AMIs x86 (i686) de 32 bits, o Amazon Linux 2 descontinuou Pacotes x86 (i686) de 32 bits e o Amazon Linux 2023 descontinuou Suporte ao runtime x86 (i686) de 32 bits. A transição do IMDSv1 também abrange várias versões principais do sistema operacional. Para esses tipos de mudanças, entende-se que alguns clientes precisam de mais tempo para se adaptar a elas, portanto, há uma grande margem de manobra antes que a funcionalidade não esteja mais disponível no Amazon Linux 2023.
A lista de funcionalidades descontinuadas é atualizada durante a vida útil do sistema operacional, e é recomendável acompanhar as alterações feitas nela.