DevSecOps

12 mar, 2012

Restauração e registro do RedHat após utilização de repositórios CentOS

Publicidade

Eu tive a experiência de precisar de um servidor RedHat e não ter a licença no momento da implementação de um sistema instalado por um terceiro. A distribuição era obrigatória para que tivéssemos o suporte do fabricante da solução que estava sendo instalada. Sabia que era possível utilizar os repositórios do CentOS, devido a compatibilidade, e os habilitamos. Com isso, o software que adquirimos poderia ser instalado.

O problema todo ocorreu quando as licenças foram disponibilizadas e o SO não passou na validação de registro na RedHat. Depois de abrir um chamado na RedHat, ficou constatado que o SO havia deixado de ser um autêntico RedHat e havia se tornado um CentOS, pois os pacotes “kernel” e o pacote “release”, entre outros, foram substituídos.

Como isso foi resolvido?

Montamos um ambiente semelhante ao que já estava instalado com os mesmos pacotes e iniciamos um processo de reversão na instalação. Abaixo, descrevo como foi realizado todo o processo, que culminou no registro do SO com sucesso no site da RedHat.

Como eu disse, tudo foi simulado antes de ser aplicado em produção e não dou nenhum tipo de garantia, portanto faça por sua conta e risco.

Antes de iniciar qualquer procedimento, tenha em mente que será necessário rebotar o servidor em alguns momentos para que o procedimento seja concluído. Por segurança, tenha backup dos arquivos de configuração referentes aos pacotes CentOS que estão instalados no servidor, as versões de todos os pacotes centos instalados e lembre-se que todo o procedimento deve ser executado como um root.

Os pacotes CentOS são identificados no próprio nome do pacote pela palavra “centos” e para identificá-los execute:

rpm --qa | grep centos

Preparação e simulação do ambiente de testes

1. Instalado um servidor RedHat (em máquina virtual) com o mesmo perfil do servidor original;

2. Incluimos os repositórios copiados de uma instalação CentOS (com a mesma versão do RedHat) e renomeando o repositório atual no RedHat para “.old” (ou simplesmente deletando);

3. Excluimos o pacote yum-rhn-plugin com o comando:

rpm -ev yum-rhn-plugin

4. Realizamos a limpeza do cache de pacotes com o comando:

yum clean all

5. Realizamos novo cache dos repositórios do CentOS com o comando:

yum check-update

6. Atualizamos o kernel com o comando:

yum update kernel*

7. Instalamos todos os pacotes identificados como sendo CentOS no servidor, que no meu caso foram os especificados no próprio comando abaixo:

yum install redhat-logos centos-release-notes crash pango ntp yum firstboot-tui filesystem nss-tools gzip redhat-artwork yum-fastestmirror setuptool kudzu procmail desktop-backgrounds-basic anacron pirut gdm pm-utils firefox basesystem comps-extras busybox yum-metadata-parser system-config-date firefox nss rhgb firstboot nss centos-release Deployment_Guide-en-US specspo pango initscripts bluez-utils gnome-session -y

Iniciando o processo de restore do SO

1. Foram copiados do DVD e/ ou baixados os pacotes originais RedHat de acordo com a versão instalada (indicados como centos);

2. Foram removidos inicialmente alguns pacotes com o comando abaixo:

rpm -ev yum-3.2.22-37.el5.centos yum-metadata-parser-1.1.2-3.el5.centos yum-fastestmirror-1.1.16-16.el5.centos yum-updatesd-0.9-2.el5 pirut-1.3.28-19.el5.centos.noarch

3. Reinstalamos os pacotes originais na sequencia a seguir:

rpm -ivh yum-3.0.1-5.el5.noarch.rpm yum-metadata-parser-1.0-8.fc6.i386.rpm yum-fastestmirror-1.1.16-16.el5.noarch.rpm yum-updatesd-3.0.1-5.el5.noarch.rpm pirut-1.2.10-1.el5.noarch.rpm

 4. Em seguida, foram instalados os pacotes abaixo, verificando antes se há dependências para cada um deles (sem o parâmetro “- -force”, as dependências devem estar na mesma linha de comando):

rpm -Uvh anacron-2.3-45.el5.i386.rpm --force
rpm -Uvh basesystem-8.0-5.1.1.noarch.rpm --force
rpm -Uvh bluez-utils-3.7-2.i386.rpm --force
rpm -Uvh busybox-1.2.0-10.el5.i386.rpm --force
rpm -Uvh comps-extras-11.1-1.1.noarch.rpm --force
rpm -Uvh crash-4.0-3.14.i386.rpm --force
rpm -Uvh Deployment_Guide-en-US-5.0.0-19.noarch.rpm Deployment_Guide-pt-BR-5.0.0-19.noarch.rpm --force
rpm -Uvh desktop-backgrounds-basic-2.0-37.noarch.rpm --force
rpm -Uvh filesystem-2.4.0-1.i386.rpm --force
rpm -Uvh filesystem-2.4.0-3.el5.i386.rpm --force
rpm -e firefox-3.6.24-3.el5.centos
rpm -Uvh firstboot-1.4.27.2-1.el5.noarch.rpm firstboot-tui-1.4.27.2-1.el5.noarch.rpm --force
rpm -Uvh gdm-2.16.0-30.el5.i386.rpm --force
rpm -Uvh gnome-session-2.16.0-8.el5.i386.rpm --force
rpm -Uvh gzip-1.3.5-13.el5.i386.rpm --force
rpm -Uvh initscripts-8.45.38-2.el5.i386.rpm --force
rpm -Uvh kudzu-1.2.57.1.13-1.i386.rpm --force
rpm -Uvh nss-3.12.10-7.el5_7.i386.rpm --force
rpm -Uvh nss-tools-3.12.10-7.el5_7.i386.rpm --force
rpm -Uvh ntp-4.2.2p1-15.el5.i386.rpm --force
rpm -Uvh pango-1.14.9-8.el5.i386.rpm pango-devel-1.14.9-8.el5.i386.rpm --force
rpm -Uvh pm-utils-0.99.3-10.el5.i386.rpm --force
rpm -Uvh procmail-3.22-17.1.i386.rpm --force
rpm -Uvh redhat-artwork-5.0.9-1.el5.i386.rpm --force
rpm -Uvh redhat-logos-4.9.16-1.noarch.rpm --force
rpm -Uvh rhgb-0.16.4-8.el5.i386.rpm --force
rpm -Uvh setuptool-1.19.2-1.i386.rpm --force
rpm -Uvh specspo-13-1.el5.noarch.rpm --force
rpm -Uvh system-config-date-1.8.12-4.el5.noarch.rpm --force
rpm -ivh yum-rhn-plugin-0.4.3-1.el5.noarch.rpm

Neste último procedimento não realizei a instalação/ update dos pacotes de kernel (todos) e releases (redhat-release-5Server redhat-release-notes-5Server).

5.  Neste ponto reiniciamos o servidor e na tela do Grub selecionamos o kernel anterior (instalado com o sistema original). Só então realizamos a sequência de restore dos pacotes do kernel:

rpm -Uvh kernel-2.6.18-274.12.1.el5.i686.rpm kernel-devel-2.6.18-274.12.1.el5.i686.rpm kernel-headers-2.6.18-274.12.1.el5.i386.rpm --force
rpm -Uvh redhat-release-5Server-5.0.0.9.i386.rpm redhat-release-notes-5Server-5.i386.rpm

Se este último comando não funcionar, acrescente o parâmetro “–force” ao final do comando.

6. Agora edite o arquivo:

/boot/grub/menu.lst

E substitua todas as ocorrências “CentOS” por “RedHat Enterprise Linux Server”, digitando no VI em modo comando:

:%s/CentOS/RedHat\ Enterprise\ Linux\ Server/s

7. Novamente reinicie o servidor e selecione o Kernel mais novo instalado (caso aplique-se).

Removendo os repositórios CentOS

1. Acesse o diretório dos repositórios:

/etc/yum.repos.d/

Remova ou renomeie qualquer arquivo com extensão “.repo”, exceto o arquivo “rhel-debuginfo.repo”.

2. Acesse o diretório de cache do yum:

/var/cache/yum/

E remova todo o conteúdo que houver dentro dele (arquivos e subdiretórios) utilizando o comando:

rm -fR *

Muito cuidado! Tenha certeza de estar dentro do diretório correto ou terá problemas sério.

3. Por último, limpe o cache do yum com o comando:

yum clean all

Registrando o SO no RHN

Na linha de comando (ou terminal na interface gráfica) digite:

rhn_register --nox

Informe o login e senha da conta que possui acesso às licenças (elas são vinculadas a esta conta no momento da aquisição das mesmas).

No espaço “nome do perfil”, insira a descrição do servidor que será exibida no site (eu costumo colocar o FQDN do servidor pela facilidade de identificação, normalmente já é apresentado o hostname configurado no servidor).

Clique próximo  > próximo  > próximo  > OK > Concluir

E o processo de registro no RHN está encerrado.

Acesse o site do RHN, logue-se e verifique que o servidor encontra-se relacionado suas licenças como um autêntico RedHat.

Para validar que é possível fazer instalações e updates/ upgrades após o procedimento, faça um teste simples de instalação de um pacote qualquer ou mesmo o update total do servidor:

yum install pacote -y

ou

yum upgrade -y

ou

yum update -y

Processo encerrado e servidor restaurado.