Convert2RHEL é um serviço da Red Hat que converte sistemas operacionais semelhantes ou derivados do Red Hat Enterprise Linux (RHEL), como o CentOS Linux e o Oracle Linux. Para ver uma lista completa dos sistemas operacionais compatíveis, leia este documento. Para saber mais informações, leia este post de Terry Bowling e este outro sobre o Oracle Linux.

O Red Hat Satellite 6.10 apresentou pela primeira vez a capacidade de realizar operações em massa do Convert2RHEL. Escrevi sobre isso neste blog post. O Satellite 6.11 aproveita esses recursos de duas maneiras:

  1. Um Ansible role automatiza a configuração/preparação do servidor Satellite para o Convert2RHEL.

  2. Um playbook do Ansible automatiza as conversões de host.

O fluxograma abaixo apresenta uma visão geral de alto nível das tarefas necessárias para executar uma operação em massa do Convert2RHEL no Satellite 6.11.

 

Flowchart of tasks required to perform a bulk Convert2RHEL operation

Quando estiver tudo pronto, registre os hosts do Centos/Oracle Linux no Satellite e agende uma tarefa para converter seus hosts para o RHEL.

Observe que o Ansible role pode ser aplicado manualmente ao servidor Satellite, com um servidor Ansible separado.

Aqui detalhamos todas as etapas necessárias para implementar essa nova automação.

Prepare o servidor Satellite

Primeiro, siga estas instruções para importar os Ansible roles incluídos.

Primeiro, acesse Configure > Roles.

 

first go to Configure > Roles

Clique em "Import…".

 

Click on Import

Clique em "Select All" e depois em "Submit".

 

Click on Select All and then Submit

Em seguida, teremos que criar variáveis para o Ansible role antes de executá-lo no servidor Satellite. Essas variáveis informarão ao Ansible role como você deseja configurar a operação em massa do Convert2RHEL em seu servidor Satellite. Isso inclui especificar um manifesto de subscrição, uma organização, um local, credenciais de administrador, etc.

Descobri que a maneira mais fácil e rápida de configurar as variáveis do Ansible role é usar o serviço de linha de comando Hammer no servidor Satellite. Você também pode configurar as variáveis do Ansible role pela IU da web do Satellite

Neste servidor Satellite específico, estou definindo as seguintes variáveis.

Variável

Valor

satellite_rhel_wait_for_syncs

true

satellite_manifest_path

/usr/share/satellite/manifest_satellite_20220815T193102Z.zip

satellite_organization

Acme Org

satellite_password

Ha ha no you don't

satellite_username

myee

satellite_server_url

https://ip-172-31-29-4.us-west-1.compute.internal

satellite_validate_certs

true

satellite_content_rhel_enable_rhel7

true

satellite_content_rhel_enable_rhel8

true

Veja como criar as variáveis do Ansible role com o serviço Hammer.

satellite_rhel_wait_for_syncs

O Ansible role configura e sincroniza os repositórios necessários para executar a operação em massa do Convert2RHEL. A variável satellite_rhel_wait_for_syncs instrui a operação a aguardar a sincronização dos repositórios.

Digite o seguinte na interface da linha de comando do servidor Satellite ao fazer login como raiz:

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_rhel_wait_for_syncs --variable-type boolean --default-value false --override true

satellite_manifest_path

Quando o Ansible role é executada, ela faz upload do manifesto de subscrição, garantindo que todos os seus novos hosts estejam adequadamente licenciados. Se você já tiver feito upload de um manifesto válido, terá que fazer isso novamente, infelizmente.

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_manifest_path --variable-type string --default-value "/usr/share/satellite/manifest_satellite_20220815T193102Z.zip" --override true

satellite_organization/usr

Minha organização do Satellite é "Acme Org".

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_organization --variable-type string --default-value "Acme Org" --override true

satellite_password

O Ansible role exigirá credenciais de administrador do Satellite. Digite a senha aqui.

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_password --variable-type string --default-value "YOUR_ADMIN_PASSWORD" --override true

Observação: para evitar o uso de senhas, você pode configurar tokens de acesso pessoal.

 

To avoid using passwords you can set up Personal Access Tokens instead

satellite_username

Digite o nome de usuário administrativo aqui.

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_username --variable-type string --default-value "myee" --override true

satellite_server_url

A URL do servidor Satélite é a URL que os hosts precisarão acessar com o serviço curl.

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_server_url --variable-type string --default-value "https://ip-172-31-29-4.us-west-1.compute.internal" --override true

satellite_validate_certs

Esse valor deve ser definido como true.

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_validate_certs --variable-type boolean --default-value true --override true

satellite_content_rhel_enable_rhel7

Essa variável especifica que você deseja que o Ansible role sincronize o conteúdo do RHEL7 a fim de habilitar a conversão de hosts do Centos 7 (ou Oracle) para o RHEL7. Se você não quiser que o conteúdo do RHEL7 seja sincronizado, use essa variável para especificar false. 

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_content_rhel_enable_rhel7 --variable-type boolean --default-value true --override true

satellite_content_rhel_enable_rhel8

Essa variável especifica que você deseja que o Ansible role sincronize o conteúdo do RHEL8 a fim de habilitar a conversão de hosts do Centos 8 (ou Oracle) para o RHEL8. Se você não quiser que o conteúdo do RHEL8 seja sincronizado, use essa variável para especificar false

hammer ansible variables create --location "Vancouver" --organization "Acme Org" --ansible-role redhat.satellite.convert2rhel --variable satellite_content_rhel_enable_rhel8 --variable-type boolean --default-value true --override true

Você pode verificar se suas variáveis estão definidas corretamente na interface web. Acesse o submenu Ansible Variables.

 

Go to the Ansible Variables sub-menu

Verifique todas as variáveis até encontrar as que você acabou de criar.

 

Ansible variables

Agora precisamos configurar o Satellite para permitir a execução de tarefas de execução remota nele mesmo.

Observação: esta etapa  não é necessária se você já puder executar tarefas de execução remota no servidor Satellite. 

Faça login no servidor Satellite como raiz e execute o seguinte comando:

satellite-installer \ --foreman-proxy-plugin-remote-execution-ssh-install-key true

A saída será semelhante à tela abaixo.

 

Satellite installer sample output

Em seguida, aplicaremos o Ansible role ao servidor Satellite.

Clique em Hosts > All Hosts.

 

Click on Hosts > All Hosts

Edite seu servidor Satellite.

 

Edit your Satellite server

Clique na guia Ansible Roles.

 

Click on the Ansible Roles tab

O role do Convert2RHEL está na segunda página do submenu. Clique no sinal de + para atribuir o role redhat.satellite.convert2rhel ao seu servidor Satellite.

 

The Convert2RHEL roles is on the second page

Em seguida, clique em "Submit".

 

Click Submit

Você será redirecionado para a página de informações do host. Clique no botão "Schedule Remote Job" e selecione "Run Ansible roles".

 

Click on the Schedule Remote Job button and select Run Ansible roles

Você será redirecionado para uma página exibindo o status da tarefa. Clique no host do Satellite para ver o status da tarefa em tempo real.

 

Click on the Satellite host to see the real-time status of the job

Aqui você pode ver cada ação na tarefa (job) que está sendo executada.

 

Here you can see each task in the job being executed

Observação: o Ansible role sincroniza o conteúdo necessário, cria grupos de hosts e chaves de ativação, entre outras tarefas. O Satellite 6.11 tem um bug onde a chave de ativação criada para registrar hosts do CentOS 7, "Convert2RHEL7", habilita o repositório Convert2RHEL8. Para contornar esse bug, você deve substituir esse repositório na chave de ativação "convert2rhel_centos7".

 

To work around this bug, you must override this repo in the "convert2rhel_centos7" activation key

Execute a conversão

IMPORTANTE: antes de executar a conversão, os hosts candidatos devem estar atualizados e reinicializados com o kernel mais recente. 

Primeiro, precisaremos registrar nossos hosts a serem convertidos. Nesse caso, estou convertendo hosts do CentOS7. Clique em Hosts > Register Host.

 

Click on Hosts > Register Host

Nos meus hosts CentOS de teste, não copiei os arquivos da autoridade de certificação do servidor Satellite. Você pode obter mais informações sobre como fazer isso aqui.

No menu Register Host, selecione 1) Host group "CentOS 7 converting", 2) "Insecure"  e 3) "Advanced". A opção "Insecure" permite que o script seja executado primeiro sem verificar o certificado autoassinado. A comunicação subsequente é totalmente segura. Se quiser evitar o uso do método "Insecure", leia sobre a importação de certificados aqui.

 

Register Host

Em seguida, clique em "Advanced".

Execute as seguintes tarefas no contexto "Advanced" do menu "Register Host".

  1. Verifique se "Activation Keys" foram herdadas do grupo de hosts "convert2rhel_centos7". Você não precisará clicar em nada aqui.

  2. Clique em "Generate". Isso gerará o script curl que você copiará e colará na CLI do host do CentOS.

  3. Clique no botão Copy para copiar o script curl. 

 

Register Host Advanced Tab

Agora faça login em um de seus hosts candidatos. Exporte o local correto do seu host.

export LANG=pt-br.UTF-8

Cole o script curl e execute-o. Veja um exemplo de saída.

 

Some example output

Repita esta tarefa para todos os seus hosts candidatos.

No menu Hosts, você vê todos os seus hosts do CentOS registrados no Satellite.

 

In the Hosts menu, you see all your CentOS hosts registered to Satellite.

Para iniciar a operação Convert2RHEL, execute as seguintes tarefas.

  1. Selecione os hosts candidatos.

  2. Clique em "Select Action" e selecione "Schedule Remote Job".

 

Click on "Select Action" and select "Schedule Remote Job".

No menu Job invocation, execute as seguintes tarefas.

  1. No menu suspenso "Job category", selecione "Convert 2 RHEL".

  2. No menu suspenso "Activation Key", selecione "convert2rhel_rhel7".

  3. Clique em "Submit" para iniciar a operação em massa do Convert2RHEL.

 

Click "Submit" to start the bulk Convert2RHEL operation.

Você será redirecionado para o menu "Job Overview", onde poderá optar por visualizar o status em tempo real da tarefa em cada host clicando no host.

 

You’ll be redirected to the "Job Overview" menu

Esta é o preview em tempo real da tarefa.

 

Here’s the real-time view of the job.

Como resultado, todos os hosts foram convertidos para RHEL de uma vez.

 

The final result, all hosts converted to RHEL at once!

Para mais informações, consulte a documentação oficial do Convert2RHEL aqui.

 


About the author

As a Senior Principal Technical Marketing Manager in the Red Hat Enterprise Linux business unit, Matthew Yee is here to help everyone understand what our products do. He joined Red Hat in 2021 and is based in Vancouver, Canada.

Read full bio