Por: @jonasc Publicado em: 2022-02-28
Migração FWFLEX CentOS 8 para Alma Linux 8
Pré-requisito que o CentOS esteja na versão 8.5. Necessário update antes de iniciar processo de migração.
Alternativas de migração
- Script de migração fornecido pela distro: almalinux-deploy
- Comando
dnf distro-sync
- Atualizar através da interface do produto
Script de migração fornecido pela distro
Utilizar o script almalinux-deploy.sh
disponível no GitHub.
Necessário configurar exclude de pacotes da itflex e pacotes que apresentaram erros de dependência na execução do script e habilitar repos que não são ativos por padrão.
Alterar as variáveis abaixo no script:
local dnf_repos="--enablerepo=powertools,ha"
local exclude_pkgs="--exclude=itflex*,python3-botocore,python3-dateutil,python3-clufter,clufter-bin,clufter-common"
O script utiliza o comando dnf distro-sync
, que sincroniza a versão dos pacotes locais com os dos repositórios. Necessário fazer exclude de quaisquer pacotes que não desejamos atualizar.
Após execução do comando, é necessário habilitar os repos ha
e powertools
, passando para enabled=1
no conf.
Após o sync, o dnf update
apresentou erro do clufter-bin
, pois o pacote possui nome diferente no repo novo.
[root@fwflex-testing-3-fw01 yum.repos.d]# dnf update --exclude=itflex*
iTFLEX 3rdparty repo 8.2 kB/s | 2.9 kB 00:00
iTFLEX repo 10 kB/s | 2.9 kB 00:00
Erro:
Problema: package python3-clufter-0.77.1-5.el8.noarch requires clufter-bin = 0.77.1-5.el8, but none of the providers can be installed
- cannot install both clufter-bin-0.77.1-5.el8.alma.x86_64 and clufter-bin-0.77.1-5.el8.x86_64
- cannot install the best update candidate for package python3-clufter-0.77.1-5.el8.noarch
- cannot install the best update candidate for package clufter-bin-0.77.1-5.el8.x86_64
(tente adicionar '--allowerasing' à linha de comando para substituir pacotes conflitantes ou '--skip-broken' para pular pacotes desinstaláveis ou '--nobest' para usar não apenas os melhores pacotes candidatos)
Para corrigir é necessário forçar o install:
dnf install clufter-bin
Após instalação acima, não apresentou pacotes a serem atualizados:
[root@fwflex-testing-3-fw01 yum.repos.d]# dnf update --exclude=itflex*
Última verificação de data de vencimento de metadados: 0:02:52 atrás em seg 28 fev 2022 12:22:56 -03.
Dependências resolvidas.
Nada para fazer.
Concluído!
Comando distro-sync
Importar chave GPG do repositório:
rpm --import http://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux
Remover arquivos .repo
do CentOS:
mv /etc/yum.repos.d/CentOS-Linux-* /tmp/
Configurar arquivos .repo
do Alma Linux (utilizar o que vem na instalação da distro), deve ficar conforme listado abaixo:
[root@fwflex-testing-3-fw01 ~]# ll /etc/yum.repos.d/
total 52
-rw-r--r-- 1 jonasc itflex 951 fev 2 10:39 almalinux-ha.repo
-rw-r--r-- 1 jonasc itflex 893 fev 2 10:27 almalinux-plus.repo
-rw-r--r-- 1 jonasc itflex 971 fev 2 10:39 almalinux-powertools.repo
-rw-r--r-- 1 jonasc itflex 2690 fev 2 10:27 almalinux.repo
-rw-r--r-- 1 jonasc itflex 1049 fev 2 10:27 almalinux-resilientstorage.repo
-rw-r--r-- 1 root root 1485 jan 31 13:19 epel-modular.repo
-rw-r--r-- 1 root root 1422 jan 31 13:19 epel.repo
-rw-r--r-- 1 root root 1584 jan 31 13:19 epel-testing-modular.repo
-rw-r--r-- 1 root root 1521 jan 31 13:19 epel-testing.repo
-rw-r--r-- 1 root root 374 out 18 19:50 itflex.repo
-rw-r--r-- 1 root root 831 set 16 17:23 netify.repo
-rw-r--r-- 1 root root 194 set 16 17:16 osquery.repo
-rw-r--r-- 1 root root 410 set 16 17:23 zabbix.repo
Habilitar os repos ha
e powertools
, passando para enabled=1
no conf.
Executar clean all e distro-sync:
dnf clean all
dnf distro-sync --exclude=itflex*,python3-botocore,python3-dateutil,python3-clufter,clufter-bin,clufter-common --disablerepo=itflex
O distro sync realiza praticamente o mesmo que um dnf update
. Porém ele verifica os pacotes instalados localmente e sincroniza para a mesma versão dos repositórios configurados. Caso tenha algum downgrade necessário, também é executado.
Após o sync, o dnf update
apresentou erro do clufter-bin
, pois o pacote possui nome diferente no repo novo.
[root@fwflex-testing-3-fw02 yum.repos.d]# dnf update --exclude=itflex*
iTFLEX 3rdparty repo 8.2 kB/s | 2.9 kB 00:00
iTFLEX repo 10 kB/s | 2.9 kB 00:00
Erro:
Problema: package python3-clufter-0.77.1-5.el8.noarch requires clufter-bin = 0.77.1-5.el8, but none of the providers can be installed
- cannot install both clufter-bin-0.77.1-5.el8.alma.x86_64 and clufter-bin-0.77.1-5.el8.x86_64
- cannot install the best update candidate for package python3-clufter-0.77.1-5.el8.noarch
- cannot install the best update candidate for package clufter-bin-0.77.1-5.el8.x86_64
(tente adicionar '--allowerasing' à linha de comando para substituir pacotes conflitantes ou '--skip-broken' para pular pacotes desinstaláveis ou '--nobest' para usar não apenas os melhores pacotes candidatos)
Para corrigir é necessário forçar o install:
dnf install clufter-bin
Após instalação acima, não apresentou pacotes a serem atualizados:
[root@fwflex-testing-3-fw02 yum.repos.d]# dnf update --exclude=itflex*
Última verificação de data de vencimento de metadados: 0:02:52 atrás em seg 28 fev 2022 12:22:56 -03.
Dependências resolvidas.
Nada para fazer.
Concluído!
Atualizar através da interface do produto
Importar chave GPG do repositório:
rpm --import http://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux
Remover arquivos .repo
do CentOS:
mv /etc/yum.repos.d/CentOS-Linux-* /tmp/
Configurar arquivos .repo
do Alma Linux (utilizar o que vem na instalação da distro), deve ficar conforme listado abaixo:
[root@fwflex-testing-3-fw01 ~]# ll /etc/yum.repos.d/
total 52
-rw-r--r-- 1 jonasc itflex 951 fev 2 10:39 almalinux-ha.repo
-rw-r--r-- 1 jonasc itflex 893 fev 2 10:27 almalinux-plus.repo
-rw-r--r-- 1 jonasc itflex 971 fev 2 10:39 almalinux-powertools.repo
-rw-r--r-- 1 jonasc itflex 2690 fev 2 10:27 almalinux.repo
-rw-r--r-- 1 jonasc itflex 1049 fev 2 10:27 almalinux-resilientstorage.repo
-rw-r--r-- 1 root root 1485 jan 31 13:19 epel-modular.repo
-rw-r--r-- 1 root root 1422 jan 31 13:19 epel.repo
-rw-r--r-- 1 root root 1584 jan 31 13:19 epel-testing-modular.repo
-rw-r--r-- 1 root root 1521 jan 31 13:19 epel-testing.repo
-rw-r--r-- 1 root root 374 out 18 19:50 itflex.repo
-rw-r--r-- 1 root root 831 set 16 17:23 netify.repo
-rw-r--r-- 1 root root 194 set 16 17:16 osquery.repo
-rw-r--r-- 1 root root 410 set 16 17:23 zabbix.repo
Habilitar os repos ha
e powertools
, passando para enabled=1
no conf.
Executar clean all e check updates:
dnf clean all
itflex-check-updates
Acessar a interface do produto e realizar a atualização do SO.
Funciona em partes. Ocorre alguns skippings, conforme log:
Skipping packages with conflicts:
(add '--best --allowerasing' to command line to force their upgrade):
corosynclib x86_64 3.1.5-1.el8 appstream 68 k
iproute x86_64 5.12.0-4.el8 baseos 774 k
iptables-libs x86_64 1.8.4-20.el8 baseos 106 k
libguestfs x86_64 1:1.40.2-28.module_el8.5.0+2608+72063365.alma appstream 2.7 M
libguestfs-tools-c x86_64 1:1.40.2-28.module_el8.5.0+2608+72063365.alma appstream 5.6 M
libvirt-client x86_64 6.0.0-37.1.module_el8.5.0+2621+39fdc467 appstream 367 k
mariadb-common x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 62 k
mariadb-errmsg x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 233 k
nginx-all-modules noarch 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 23 k
nginx-filesystem noarch 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 23 k
nginx-mod-http-perl x86_64 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 44 k
nginx-mod-http-xslt-filter x86_64 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 32 k
nginx-mod-mail x86_64 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 63 k
nginx-mod-stream x86_64 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 84 k
pacemaker-cli x86_64 2.1.0-8.el8 ha 334 k
pacemaker-cluster-libs x86_64 2.1.0-8.el8 appstream 135 k
virt-manager-common noarch 2.2.1-4.el8.alma appstream 889 k
Skipping packages with broken dependencies:
glibc i686 2.28-164.el8 baseos 3.4 M
glibc x86_64 2.28-164.el8 baseos 3.6 M
glibc-devel x86_64 2.28-164.el8 baseos 1.0 M
glibc-headers x86_64 2.28-164.el8 baseos 479 k
glibc-langpack-pt x86_64 2.28-164.el8 baseos 507 k
iptables-ebtables x86_64 1.8.4-20.el8 baseos 71 k
mariadb x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 6.0 M
mariadb-backup x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 6.1 M
mariadb-gssapi-server x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 50 k
mariadb-server-utils x86_64 3:10.3.28-1.module_el8.3.0+2177+7adc332a appstream 1.1 M
nginx-mod-http-image-filter x86_64 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma appstream 34 k
nodejs-full-i18n x86_64 1:10.24.0-1.module_el8.3.0+2047+b07ac28e appstream 7.3 M
npm x86_64 1:6.14.11-1.10.24.0.1.module_el8.3.0+2047+b07ac28e appstream 3.7 M
openssh-clients x86_64 8.0p1-10.el8 baseos 667 k
openssh-server x86_64 8.0p1-10.el8 baseos 484 k
openssl-devel x86_64 1:1.1.1k-5.el8_5 baseos 2.3 M
Via dnf update
continuam aparecendo outros pacotes para atualizar.
São pacotes listados no skipping acima e os pacotes de infra que o produto realiza exclude na atualização do SO.
O update através do dnf
funcionou, sem problemas de dependências quebradas. Realizado este comando apenas para validar atualização dos RPMs, procedimento não recomendado para ambiente de produção.
Conclusão
Não é possível garantir que em 100% dos casos a atualização ocorrerá de forma transparente. Porém é possível diminuir as chances de apresentar problemas, realizando exclude dos pacotes da itflex, pacotes no repo 3rdparty e pacotes de infra que não atualizamos durante a atualização do SO.
É interessante utilizar o script do Alma Linux, pois ele renomeia diversos campos de CentOS para Alma.
Importante recomendar reboot após atualização, para iniciar com Kernel atualizado.
Necessário, a partir deste spike, definir alterações necessárias no produto e procedimentos recomendados.