Processo de criação de imagem de sistema operacional personalizado no RHEL para soluções SAP em IBM® Power® Virtual Server
As informações a seguir descrevem como criar uma imagem personalizada do sistema operacional (SO) em Red Hat Enterprise Linux (RHEL) para o software SAP em IBM® Power® Virtual Server.
Requisitos de criação de imagens personalizadas do sistema operacional
Preencha os requisitos a seguir antes de iniciar o processo de criação da imagem:
-
Crie uma conta em IBM Cloud e obtenha as credenciais necessárias para implantar um servidor de criação de imagens em Power Virtual Server. Os detalhes sobre o gerenciamento de identidade e acesso (IAM) estão descritos em Gerenciamento do gerenciamento de identidade e acesso(IAM)para IBM® Power® Virtual Server.
-
Verifique se você tem acesso ao site IBM Cloud Object Storage para poder carregar uma imagem de base. Consulte Getting started with IBM Cloud Object Storage para obter informações sobre como começar.
-
Faça o download da Red Hat Enterprise Linux 9 KVM Guest Image
rhel-9.4-ppc64le-kvm.qcow2
de Red Hat Enterprise Linux para Power little endian.A orientação a seguir para criar uma imagem de sistema operacional personalizada baseia-se na imagem do sistema operacional RHEL 9.4.
-
Crie um servidor de criação de imagens, onde você configura um ambiente de criação de imagens e cria uma imagem do sistema operacional. Ele consiste em uma instância Power Virtual Server executando o RHEL 9.2 ( RHEL9-SP2-SAP-NETWEAVER ) ou uma versão superior do RHEL, com o volume de armazenamento adicional de 200 GByte. Há dois métodos para configurar o servidor de criação de imagens:
-
Para obter uma abordagem manual, consulte as informações detalhadas em Introdução ao Power Virtual Server e Criação de um servidor virtual do Power IBM.
-
Para obter uma abordagem automatizada, consulte o guia Power Virtual Server with VPC Landing Zonedeployment.
-
Configurar um ambiente de imagem de compilação
As etapas a seguir descrevem como configurar um ambiente de servidor de compilação para a criação de imagens.
-
Faça login no seu servidor de compilação e verifique o status de registro executando o seguinte comando.
subscription-manager status
-
Atualize os pacotes do sistema operacional RHEL.
-
Verifique e ajuste as configurações de proxy para um ambiente de compilação. Defina as configurações temporárias do proxy HTTPS usando seu endereço IP do proxy ou URL. Se você implementou o Power Virtual Server automatizado com VPC landing zone do catálogo IBM Cloud, use esse endereço de proxy
http://10.30.40.7:3128/
para sua configuração.export https_proxy="http://10.30.40.7:3128/" || die "Set HTTPS proxy failed (rc $?)"
-
Crie um diretório '/data' e exporte uma variável de ambiente que aponte para ele.
mkdir -p /data
export MOUNT_PATH=/data
-
Anexe um volume de armazenamento adicional com capacidade de 200 GB e crie o sistema de arquivos
/data
.-
Execute o comando multipath para identificar os volumes de armazenamento disponíveis e seus WWNs (World Wide Names). Certifique-se de que a saída do comando mostre apenas um volume de armazenamento de 200 GB. Caso contrário, a criação do sistema de arquivos não funcionará corretamente.
multipath -ll
-
Exporte as seguintes variáveis para volumes físicos e lógicos, um grupo de volumes e um diretório de montagem.
export PV_SIZE=200G
export LV_NAME=image_lv
export VG_NAME=image_vg
-
Crie os volumes físicos e lógicos.
devices=$(multipath -ll | grep -B 1 $PV_SIZE | grep dm- | awk '{print "/dev/"$2}' | tr '\n' ' ')
stripes=$(multipath -ll | grep -B 1 $PV_SIZE | grep dm- | awk '{print "/dev/"$2}' | wc | awk '{print $1}')
pvcreate $devices
vgcreate ${VG_NAME} ${devices}
lvcreate -i${stripes} -I64 -l100%VG -n ${LV_NAME} ${VG_NAME}
mkfs.xfs /dev/mapper/${VG_NAME}-${LV_NAME}
-
Verificar se o volume lógico criado está ativo.
lvscan
-
Monte o sistema de arquivos.
mount -t xfs -o defaults,nofail --source /dev/mapper/${VG_NAME}-${LV_NAME} --target ${MOUNT_PATH}
-
Adicione o sistema de arquivos ao arquivo
/etc/fstab
.echo "/dev/mapper/${VG_NAME}-${LV_NAME} ${MOUNT_PATH} xfs defaults,nofail 0 0" >> /etc/fstab
-
Certifique-se de que o sistema de arquivos esteja presente na lista de todos os sistemas de arquivos montados.
df -h
-
-
Crie o diretório
/data/image
onde a imagem base é salva. -
Copie a imagem
rhel-9.4-ppc64le-kvm.qcow2
para/data/image
. -
Crie o diretório
/data/tmp
, no qual uma imagem temporária é salva durante o processo de compilação. -
Conclua as tarefas a seguir para configurar o servidor de compilação. Use o gerenciador de pacotes
dnf
RHEL.-
Instale os pacotes de sistema
xfsprogs
elvm2
. -
Instale os pacotes de desenvolvimento
make
,git
,libgcrypt-devel
ego-toolset
. -
Instale os pacotes
qemu-img
ecloud-utils-growpart
. -
Configure um proxy adicionando seu host de proxy no arquivo
~root/.bashrc
.export https_proxy='<your_https_proxy>'
-
-
Configure o módulo NBD para ser carregado no momento da inicialização, adicionando as seguintes linhas ao arquivo
/etc/modules-load.d/ndb.conf
.nbd options nbd max_part=8
-
Baixe o
pvsadm
ferramenta da última versão dopvsadm-linux-ppc64le
Repositório GitHub. Salve-o no arquivo denominado/usr/local/bin/pvsadm
e altere o modo para0755
. Para obter mais detalhes sobre a ferramenta, consultepvsadm
tool.
Criação de uma imagem de sistema operacional personalizada
O processo de criação de uma imagem de sistema operacional personalizada para IBM Cloud PowerVS consiste nas seguintes tarefas.
-
Verifique se as credenciais de assinatura do Red Hat Satellite são válidas.
-
Crie um arquivo vazio chamado
image-prep.template
e use-o como modelo de preparação de imagem. -
As tarefas a seguir contêm os comandos do shell necessários para criar uma imagem personalizada. Adicione esses comandos ao modelo
image-prep.template
. Os comandos atualizam a imagem básica do sistema operacional durante a criação da imagem com a ferramentapvsadm
para criar a imagem final do sistema operacional pronta para SAP. A ordem de comando é importante e não deve ser alterada.-
Copie as seguintes linhas, incluindo o tratamento de erros, para serem usadas como cabeçalho do modelo.
#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail die() { echo -e "\n${1}" set +o errexit set +o nounset exit 1 }
-
Adicione um servidor de nomes temporário.
echo "nameserver 9.9.9.9" >> /etc/resolv.conf \ || die "Add nameserver failed (rc $?)"
-
Crie um diretório de trabalho
/tmp/work
e exporte-o como uma variável ambiental.mkdir -p /tmp/work || die "Create work directory failed (rc $?)"
export WORK_DIR=/tmp/work
-
Crie o arquivo de troca 25GB, adicione permissões e verifique se ele foi criado corretamente.
fallocate -l 25G /swapfile || die "allocate swapfile failed (rc $?)"
chmod 600 /swapfile || die "chmod swapfile failed (rc $?)"
mkswap /swapfile || die "mkswap swapfile failed (rc $?)"
swapon /swapfile || die "swapon swapfile failed (rc $?)"
swapon --show
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab || die "update fstab with swapfile failed (rc $?)"
echo "swapon -s"
-
Inscreva-se em Red Hat Satellite e ative os repositórios SAP. Use seus próprios valores para o nome de usuário da assinatura, a senha e a versão de lançamento.
subscription-manager register \ --force --auto-attach \ --username=<SUBSCRIPTION_USER> \ --password=<SUBSCRIPTION_PASSWORD> \ --release=<OS_VERSION> \ || die "Register subscription failed (rc $?)"
subscription-manager repos \ --disable="*" \ --enable="rhel-9-for-$(uname -m)-baseos-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-appstream-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-sap-solutions-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-sap-netweaver-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-highavailability-e4s-rpms"\ --enable="codeready-builder-for-rhel-9-$(uname -m)-rpms" \ || die "Repository configuration failed (rc $?)"
-
Instalar um servidor de grupo de pacotes.
dnf -y group install server \ || die "Installing server group packages failed (rc $?)"
-
Instale os pacotes do sistema.
dnf -y install \ cloud-init \ device-mapper-multipath \ libxcrypt-compat \ glibc-langpack-en \ || die "Install system packages failed (rc $?)"
-
Atualizar
grub2
.dnf -y reinstall grub2-common \ || die "Reinstall system package failed (rc $?)"
dnf -y update grub2 \ || die "Update grub2 package failed (rc $?)"
-
Instale Ansible e as funções de sistema Red Hat para SAP.
dnf -y install ansible-core rhel-system-roles rhel-system-roles-sap \ || die "Install Ansible and RH System Roles failed (rc $?)"
-
Habilite o repositório EPEL.
dnf -y install "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm" \ || die "Installation EPEL configuration failed (rc $?)"
-
Configure o repositório de ferramentas do Power IBM.
dnf -y install "https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm" \ || die "Installation IBM Power Tools configuration failed (rc $?)"
echo 'y' | (/opt/ibm/lop/configure \ || die "Power Tools configuration failed (rc $?)")
-
Instale as ferramentas do IBM Power e desative o repositório.
dnf config-manager --set-disabled Advance_Toolchain \ || die "Disable Advance Toolchain repository failed (rc $?)"
dnf -y install ibm-power-managed-rhel9 \ || die "Install IBM Power Tools failed (rc $?)"
dnf config-manager --set-disabled IBM_Power_Tools \ || die "Disable IBM Power Tools repository failed (rc $?)"
-
Atualização do sistema operacional.
dnf -y update || die "OS update failed (rc $?)"
-
Remova o repositório EPEL.
dnf -y remove epel-release \ || die "Uninstall EPEL configuration failed (rc $?)"
-
Cancelar o registro no servidor Red Hat Satellite.
subscription-manager unregister \ || die "Unregister subscription failed (rc $?)"
subscription-manager clean \ || die "Clean subscription failed (rc $?)"
-
Altere a política criptográfica (desative SHA1/CBC ).
echo -e "cipher@ssh = -*-CBC\n" \ > /etc/crypto-policies/policies/modules/NO-CBC.pmod \ || die "Create of CBC disabling file failed (rc $?)"
update-crypto-policies --set DEFAULT:NO-SHA1:NO-CBC \ || die "Update of cryptografic policy failed (rc $?)"
-
Crie uma configuração multipath básica.
echo -e "defaults {\n \ user_friendly_names no\n \ find_multipaths smart\n}\n" \ > /etc/multipath.conf \ || die "Create multipath configuration failed (rc $?)"
-
Defina um inventário Ansible.
echo -e "localhost ansible_connection=local\n" > /root/inventory \ || die "Create Ansible inventory file failed (rc $?)"
-
Crie os arquivos Ansible yml para SAP HANA e NetWeaver.
cat <<EOF > /root/sap-hana.yml \ || die "Create SAP HANA Ansible file failed (rc $?)" - hosts: localhost vars: sap_hana_preconfigure_min_rhel_release_check: false sap_hana_preconfigure_install_ibm_power_tools: false sap_hana_preconfigure_add_ibm_power_repo: false connection: local roles: - redhat.sap_install.sap_general_preconfigure - redhat.sap_install.sap_hana_preconfigure EOF
cat <<EOF > /root/sap-netweaver.yml \ || die "Create SAP NetWeaver Ansible file failed (rc $?)" - hosts: localhost connection: local roles: - redhat.sap_install.sap_general_preconfigure - redhat.sap_install.sap_netweaver_preconfigure EOF
cat <<EOF > /root/sap-preconfigure.yml \ || die "Create SAP preconfiguration Ansible file failed (rc $?)" - hosts: localhost connection: local roles: - redhat.sap_install.sap_general_preconfigure EOF
-
Altere o parâmetro padrão do kernel no arquivo
/etc/sysctl.conf
.cat <<EOF >> /etc/sysctl.conf \ || die "Change of kernel parameter failed (rc $?)" net.core.rmem_max = 56623104 net.core.wmem_max = 56623104 net.ipv4.tcp_rmem = 65536 262088 56623104 net.ipv4.tcp_wmem = 65536 262088 56623104 net.ipv4.tcp_mem = 56623104 56623104 56623104 EOF
-
Habilite o Receive Flow Steering (RFS) nos dispositivos ibmveth, ajuste o arquivo
/etc/udev/rules.d/70-ibmveth-rfs.rules
.cat <<EOF >> /etc/udev/rules.d/70-ibmveth-rfs.rules \ || die "Create udev rule for RFS failed (rc $?)" # Enable Receive Flow Steering (RFS) on ibmveth devices SUBSYSTEM=="net",ACTION=="add",DRIVERS=="ibmveth",RUN{program}+="/bin/bash -c 'echo 32768 > /sys/\$DEVPATH/queues/rx-0/rps_flow_cnt';" EOF
Habilite o Receive Flow Steering (RFS) no arquivo
/etc/sysctl.d/95-enable-rfs.conf
.cat <<EOF >> /etc/sysctl.d/95-enable-rfs.conf \ || die "Create kernel parameter file for RFS failed (rc $?)" # Enable Receive Flow Steering (RFS) net.core.rps_sock_flow_entries=32768 EOF
-
Configure o daemon SSH.
sed -i \ -e 's/^\(#\)\?PermitRootLogin .*/PermitRootLogin yes/g' \ -e 's/^\(#\)\?PasswordAuthentication .*/PasswordAuthentication no/g' \ -e 's/^\(#\)\?MaxStartups .*/MaxStartups 10:30:60/g' \ /etc/ssh/sshd_config \ || die "Failed SSH daemon configuration (rc $?)"
-
Adaptar o GRUB.
-
Verifique se a partição PReP existe e atualize-a.
prep_partition=$(fdisk -l | grep -i ppc | grep -i loop | awk '{print $1}') # Check if a PReP partition was found if [ -z "$prep_partition" ]; then echo "No PReP partition found with /dev/loop." exit 1 else echo "PReP partition found: $prep_partition" fi
-
Instale o
grub2
na partição PReP.grub2-install "$prep_partition" \ || die "Install GRUB update failed (rc $?)"
-
Execute o comando bootlist.
bootlist -m normal -o || die "Setting boot list failed (rc $?)"
-
Altere a opção de tempo limite padrão do GRUB.
sed -i \ -e 's/GRUB_TIMEOUT=.*/GRUB_TIMEOUT=20/' \ /etc/default/grub || die "Fail to change default GRUB options (rc $?)"
-
Atualize a configuração do GRUB.
grubby --update-kernel=ALL \ --remove-args="net.ifnames=0" \ --args="console=tty0 console=hvc0,115200n8 crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G rd.shell rd.debug rd.driver.pre=dm_multipath log_buf_len=1M elevator=none" \ || die "GRUB cmdline configuration update failed (rc $?)"
-
Ativar o multipath para todos os kernels.
echo -e 'force_drivers+=" dm-multipath "\n' >/etc/dracut.conf.d/10-mp.conf\ || die "Create of multipath include file for dracut failed (rc $?)"
dracut --regenerate-all --force \ || die "Regenerate of initramfs images failed (rc $?)" for kernel in $(rpm -q kernel | sort -V | sed 's/kernel-//'); do dracut --kver ${kernel} --force --add multipath --include /etc/multipath\ /etc/multipath --include /etc/multipath.conf /etc/multipath.conf \ || die "Generate initramfs of ${kernel} failed (rc $?)" done
-
Gerar a configuração do GRUB.
grub2-mkconfig -o /boot/grub2/grub.cfg \ || die "Generate GRUB configuration failed (rc $?)"
-
-
Remova o servidor de nomes temporário.
sed -i '/nameserver 9.9.9.9/d' /etc/resolv.conf \ || die "Remove nameserver failed (rc $?)"
-
Habilite a reclassificação do SELinux na próxima inicialização.
touch /.autorelabel || die "Create relabel file failed (rc $?)"
-
Exclua a senha do usuário root.
usermod -p '!' root || die "Delete root password failed (rc $?)"
-
Limpe o sistema de arquivos.
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth*
rm -rf /tmp/work
rm -rf /root/.ssh
rm -rf /etc/pki/entitlement/
rm -rf /setup.sh
-
Exclusão do histórico de comandos.
history -c
-
-
Antes de executar a ferramenta
pvsadm
, certifique-se de que a troca local em um servidor de compilação esteja desativada. Caso contrário, o erromkswap: error: /swapfile is mounted; will not make swapspace
ocorre durante a execução depvsadm
. Para desativar a troca, execute o seguinte comando.swapoff -a
-
Use a ferramenta de criação de imagem
pvsadm
com o comandoqcow2ova
para converter a imagem qcow2 no formato OVA. Defina seus próprios valores personalizados para os sinalizadores de comando de acordo com seus formatos de entrada. Veja a descrição dos sinalizadores abaixo.--image-name <string> Name of the resultant OVA image --image-url <string> URL or absolute local file path to the qcow2 image --image-dist <string> Image Distribution(supported: rhel, centos, coreos) --target-disk-size <int> Size (in GB) of the target disk volume where OVA will be copied (default 120) --rhn-user <string> RedHat Subscription username. Required when Image distribution is rhel --rhn-password <string> RedHat Subscription password. Required when Image distribution is rhel --os-password <string> Root user password, will auto-generate the 12 bits password(applicable only for redhat and cento distro) --temp-dir <string> Scratch space to use for OVA generation --prep-template <string> Image preparation script template
Por exemplo, use
rhel-9.4-ppc64le-image
como um novo nome de imagem do sistema operacional,rhel-9.4-ppc64le-kvm.qcow2
é a imagem do sistema operacional de base localizada em/data/image
, portanto, o caminho local absoluto para a imagem qcow2 é/data/image/rhel-9.4-ppc64le-kvm.qcow2
e a distribuição da imagem érhel
. Ajuste os tamanhos da imagem e do disco de destino de acordo com suas necessidades; 120 GB é definido como o valor padrão para o volume do disco de destino. Um modelo de script de preparação de imagem éimage-prep.template
, e o nome do script também pode ser personalizado. Para simplificar a execução da ferramenta de criação de imagenspvsadm
, você também pode configurar variáveis de ambiente.export IMAGE_NAME=rhel-9.4-ppc64le-image export QCOW2_IMAGE_PATH=/data/image/rhel-9.4-ppc64le-kvm.qcow2 export IMAGE_SIZE=100 export TARGET_DISK_SIZE=100 export SUBSCRIPTION_USER=<RedHat subscription username> export SUBSCRIPTION_PASSWORD=<RedHat Subscription password> export IMAGE_BUILD_DIRECTORY=/data/tmp export IMAGE_PREP_SCRIPT=image-prep.template
pvsadm image qcow2ova --image-name ${IMAGE_NAME} \ --image-url ${QCOW2_IMAGE_PATH} \ --image-dist rhel \ --image-size ${IMAGE_SIZE} --target-disk-size ${TARGET_DISK_SIZE} \ --rhn-user ${SUBSCRIPTION_USER} \ --rhn-password ${SUBSCRIPTION_PASSWORD} \ --temp-dir ${IMAGE_BUILD_DIRECTORY} \ --prep-template ${IMAGE_PREP_SCRIPT}
A ferramenta
pvsadm
tem um menu de ajuda com descrições detalhadas de uso, comandos e sinalizadores. Execute o seguinte comando para acessar o menu de ajuda.pvsadm --help
-
Faça upload da imagem do sistema operacional criado de forma personalizada para Cloud Object Storage (COS).
Importação da imagem do sistema operacional no espaço de trabalho Power Virtual Server
Para importar sua imagem de inicialização personalizada, consulte a orientação para Importar uma imagem de inicialização.
Criação de uma instância do Power Virtual Server a partir da nova imagem importada do sistema operacional
Para provisionar uma nova instância do Power Virtual Server, siga as etapas descritas em Uso de uma imagem de inicialização personalizada para provisionar uma nova instância.