Como aplicar patches em máquinas Linux que residam em um ambiente desconectado

Se você tiver máquinas Linux clientes que residam e um ambiente desconectado, o agente não conseguirá utilizar o YUM para baixar pacotes RPM da internet. Será então necessário fazer o seguinte:

  • Configure e popule um ou mais repositórios locais que contenham toda a biblioteca de RPMs disponíveis
  • Configure as máquinas clientes para procurarem os RPMs ausentes no repositório local correto em vez de na internet

As informações a seguir servem como diretriz geral para configurar e usar um repositório local. Se tiver dúvidas ou problemas específicos, entre em contato com o fornecedor do seu sistema operacional Linux.

Como configurar um repositório local

Requisitos

Você pode usar qualquer máquina de servidor Linux compatível como repositório local. O único requisito é que ela tenha espaço em disco suficiente para conter todo o inventário dos pacotes RPM disponíveis. Existem muitos repositórios públicos diferentes para armazenar pacotes RPM. Por exemplo, existe um repositório público para RPMs RHEL 9, outro repositório público para RPMs RHEL 8, etc. Como regra geral, a máquina do repositório local deve ter pelo menos 100 GB de espaço em disco para cada repositório público a ser baixado.

Você provavelmente precisará de duas ou mais máquinas de servidor Linux para esse processo.

  • Cenário 1: Você opta por usar uma máquina como repositório local para todas as diferentes versões de RPMs. Neste cenário, a máquina que você usa como repositório pode baixar RPMs da mesma versão de distribuição usada na máquina do repositório. Você precisará, no entanto, de uma máquina separada para baixar os RPMs para cada versão diferente de cada distribuição usada na sua organização.
  • Por exemplo, se a sua organização contém máquinas cliente RHEL 9 x64, RHEL 8 x64 e CentOS 7 x64, você pode usar uma máquina de servidor RHEL 9 x64 como repositório local e utilizá-la para baixar todos os RPMs para seus servidores, estações de trabalho, desktops e demais equipamentos RHEL 9. Você usaria máquinas RHEL 8 x64 e CentOS 7 x64 separadas para baixar todos os RPMs para os servidores, estações de trabalho, desktops e demais equipamentos RHEL 8 e CentOS, transferindo posteriormente esses RPMs para a máquina do repositório local.

  • Cenário 2: você pode optar por manter três repositórios locais diferentes: um para todos os RPMs RHEL 9, outra para todos os RPMs RHEL 8 e uma terceira para todos os RPMs CentOS 7. Este cenário requer três máquinas dedicadas atuando como repositórios, mas elimina a etapa de transferência adicional e a inconveniência de manter o repositório conjunto.

Processo de configuração

Como é provável que leve várias horas para fazer o download da biblioteca inteira de pacotes RPM disponíveis em seu repositório local, a recomendação é executar o processo de configuração em duas fases diferentes. A fase 1, na qual você fará o download de todos os RPMs disponíveis, deve ser realizada no final do dia de trabalho, para que o processo de download possa ser executado durante à noite. A fase 2 pode então ser realizada no dia seguinte.

Você deve ter privilégios de root para executar os seguintes comandos.

Fase 1

  1. Crie o diretório a ser usado como repositório.
    Por exemplo, o comando a seguir cria um diretório que será usado para conter RPMs do Red Hat 9.
  2. mkdir –p /repos/redhat/9

  3. Exiba a lista dos repositórios públicos que estão disponíveis para preencher o seu repositório local.
    A lista dos repositórios públicos que estão disponíveis a você é baseada na sua assinatura do RHEL.
  4. yum repolist

  5. Usando o YUM, instale o pacote que inclua o reposync.
  6. yum install yum-utils

  7. Faça o download de todos os pacotes disponíveis no repositório público de sua escolha.
    Por exemplo, o comando a seguir baixa RPMs do repositório público rhel-9-for-x8664-baseos-rpms.
  8. reposync –-gpgcheck –l –-repoid=rhel-9-for-x86_64-baseos-rpms –-download_path=/repos/redhat/9

    O processo de download vai demorar bastante, portanto, planeje de acordo. A opção -gpgcheck remove os pacotes reprovados na verificação de assinatura durante o processo de download.

  9. Repita a Etapa 3 para cada variante de repositório público necessária.
  10. Por exemplo, se sua organização contiver RHEL 9 em Intel e ARM, será preciso baixar os RPMs de ambos os repositórios públicos associados. Você pode precisar de vários dias para executar todos os downloads necessários.

    Não tente baixar RPMs para uma versão diferente do Red Hat ou CentOS. Por exemplo, uma máquina RHEL 9 não pode ser usada para baixar RPMs para máquinas RHEL 8 x64 ou RHEL 7 x64.

Fase 2

O processo descrito aqui cria um repositório acessível via HTTP. Existem outros métodos que podem ser usados para criar um repositório. Sinta-se à vontade para usar o método com o qual você esteja mais familiarizado.

  1. Usando o YUM, instale o programa que fornece a capacidade de criar um repositório.
  2. yum install createrepo

  3. Crie o repositório.
  4. createrepo /repos/redhat/9

    Se receber um erro dizendo que não é possível abrir um arquivo *.rpm, verifique se não ficou sem espaço em disco. Se não houver problema de espaço, repita a etapa de download (Etapa 3 na Fase 1). É possível que alguns arquivos tenham sido perdidos na primeira vez que o download foi realizado.

  5. Instale o serviço web do Apache.
    Isso fornecerá a capacidade de acessar seu repositório local usando o protocolo HTTP.
  6. yum install httpd

  7. Abra a porta 80 no seu firewall local.
    O motivo disso é estarmos configurando o repositório para usar HTTP. HTTPS também é uma opção, mas o HTTP é usado aqui para simplificar o exemplo.
  8. Edite o arquivo httpd.conf e adicione qualquer uma das entradas a seguir que estiverem faltando.
  9. vi /etc/httpd/conf/httpd.conf

     

    ServerAdmin root@localhost

    DocumentRoot /var/www/html

    ServerName <machinename>

  10. Vincule seu novo repositório ao local padrão do site.
  11. ln -s /repos/redhat /var/www/html/redhat

  12. Verifique a sintaxe do serviço web do Apache.
  13. httpd -t

  14. Inicie o serviço web do Apache.
  15. systemctl start httpd

    Talvez seja necessário repetir esse comando cada vez que o servidor for reiniciado. Você pode usar os comandos a seguir para iniciar automaticamente o serviço sempre que o servidor for reiniciado:
    systemctl enable httpd.

  16. Obtenha o arquivo zip updateinfo.xml.gz.
  17. As etapas 9 a 13 aplicam-se apenas a máquinas Red Hat.

    yum list-sec

  18. Copie os arquivos *updateinfo.xml.gz do local padrão para a pasta /repodata.
  19. cp /var/cache/yum/x86_64/9rhServer/rhel-9-for-x86_64-baseos-rpms/*updateinfo.xml.gz /repos/redhat/9/repodata/

  20. Descompacte o arquivo *updateinfo.xml.gz.
  21. gzip –d /repos/redhat/9/repodata/*updateinfo.xml.gz

  22. Renomeie o arquivo *updateinfo.xml para eliminar caracteres desnecessários.
  23. mv /repos/redhat/9/repodata/*updateinfo.xml /repos/redhat/9/repodata/updateinfo.xml

  24. Modifique o repositório para confirmar que ele contém o arquivo updateinfo.xml.
  25. modifyrepo /repos/redhat/9/repodata/updateinfo.xml /repos/redhat/9/repodata/

  26. (Aplica-se apenas a máquinas que tenham o SELinux ativado) Forneça permissão para www/html/redhat acessar /repos/redhat.
  27. cd /var/www/html

    chcon -R -t httpd_sys_content_t redhat/

Repetir o processo de configuração para outras versões e distribuições Linux

Você precisará repetir processo de configuração integral ou parcialmente para cada versão diferente de cada distribuição Linux suportada na sua organização. Por exemplo, você deve usar uma máquina RHEL 9 para baixar RPMs RHEL 9, uma máquina CentOS 7 x64 para baixar RPMs CentOS 7 x64, uma máquina RHEL 8 x64 para baixar RPMs RHEL 8 x64, etc. Altere os comandos conforme necessário para cada versão específica do Linux.

Cenário 1: se você estiver usando um repositório para todas as diferentes versões do Linux

Supondo que você esteja usando uma máquina Red Hat 9 como repositório, eis o que você precisaria repetir para recuperar os RPMs Red Hat 8:

  1. Na máquina de repositório do Red Hat 9, repita a Fase 1, Etapa 1, exceto especificar /repos/redhat/8.
  2. Na máquina Red Hat 8, execute a Fase 1, Etapas 3 e 4.
    Na etapa 3, o diretório repos/redhat/9 não existirá na máquina Red Hat 8, então remova a opção -download_path e deixe ir para o local padrão ou especifique um local diferente.
  3. Quando terminar de baixar os RPMs, transfira-os para o diretório repos/redhat/8 no seu repositório local.
    Quando terminar, você terá na máquina um repositório contendo os pacotes RPM para todos as versões suportadas do Red Hat.

Cenário 2: se você estiver mantendo repositórios separados para cada versão diferente do Linux

Repita todo o processo de configuração para cada versão diferente do Linux suportada por sua organização.

Aponte suas máquinas cliente Linux para o repositório local

Você deve modificar o YUM em cada cliente Linux para que ele procure os RPMs no repositório local em vez de na internet.

Se optar por manter um repositório local diferente para cada versão do Linux, certifique-se de apontar cada cliente para o repositório local correto.

  1. Faça logon na máquina do cliente.
  2. Mude para o diretório que lista onde os repositórios estão localizados.
  3. cd /etc/yum.repos.d

  4. Crie um arquivo chamado local.repo e configure-o para apontar para o novo repositório local.
  5. nano local.repo

    [mylocalrepo]

    name=Local Rhel9 Server Repo

    baseurl=http://es-nxt-rhel9-repo.example.com/redhat/9

    gpgcheck=0

  6. Especifique que, se um RPM estiver ausente no repositório local, o cliente não deverá tentar localizá-lo na Internet (desconecta a máquina cliente).
  7. ls

    vi qualquer arquivo exceto local.repo (exemplo redhat.repo)

    Procure seu repoid (exemplo rhel-9-for-x86_64-baseos-rpms)

    Set enabled = 0

Manutenção periódica do seu repositório

Você precisará manter seu repositório local atualizado ressincronizando-o periodicamente com o repositório público. Quando executar o comando a seguir, apenas os novos pacotes RPM serão baixados para o repositório local.

reposync –gpgcheck –l –repoid=rhel-9-for-x86_64-baseos-rpms –download_path=/repos/redhat/9

createrepo --update /repos/redhat/9

Redes isoladas (air gap)

Se a sua organização mantém uma rede "air gap", ou seja, nenhuma máquina cliente tem permissão para se conectar a qualquer máquina que tenha acesso à Internet, você deve configurar e manter um segundo repositório. Isso é ilustrado no diagrama a seguir.

Nesse caso, depois de instalar e configurar seu repositório conectado conforme descrito acima, você configurará um segundo repositório em uma máquina desconectada e, em seguida, usará uma mídia removível para transferir manualmente os arquivos do repositório conectado para o repositório desconectado. Suas máquinas cliente Linux devem ser configuradas para apontar para o repositório desconectado em vez de para o repositório conectado.

Informações relacionadas

https://access.redhat.com/solutions/23016