Red Hat Training

A Red Hat training course is available for RHEL 8

6.3.7. Personalizações de imagens suportadas

Uma série de personalizações de imagens são suportadas neste momento dentro dos planos. Para fazer uso destas opções, elas devem ser inicialmente configuradas no projeto e importadas (empurradas) para o Image Builder.

Nota

Essas personalizações não são atualmente suportadas dentro da interface gráfica de usuário do cockpit que acompanha o projeto.

Procedimento

  1. Defina o nome da hostname da imagem:

    [customizations]
    hostname = "baseimage"
  2. Especificações do usuário para a imagem do sistema resultante:

    [[customizations.user]]
    name = "USER-NAME"
    description = "USER-DESCRIPTION"
    password = "PASSWORD-HASH"
    key = "PUBLIC-SSH-KEY"
    home = "/home/USER-NAME/"
    shell = "/usr/bin/bash"
    groups = ["users", "wheel"]
    uid = NUMBER
    gid = NUMBER
    Importante

    Para gerar o hash, você deve instalar python3 em seu sistema. O seguinte comando irá instalar o pacote python3.

    # yum instalar python3

    Substitua PASSWORD-HASH pelo hash de senha atual. Para gerar o hash, use um comando como:

    $ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw===getpass.getpass("Confirmar: ")) else exit())

    Substitua PUBLIC-SSH-KEY pela chave pública atual.

    Substituir os outros titulares de lugar por valores adequados.

    Deixe de fora qualquer uma das linhas conforme necessário, apenas o nome do usuário é necessário.

    Repita este bloco para que cada usuário inclua.

  3. Especificações do grupo para a imagem do sistema resultante:

    [[customizations.group]]
    name = "GROUP-NAME"
    gid = NUMBER

    Repita este bloco para cada grupo a incluir.

  4. Definir uma chave ssh de usuário existente:

    [[customizations.sshkey]]
    user = "root"
    key = "PUBLIC-SSH-KEY"
    Nota

    Esta opção só é aplicável aos usuários existentes. Para criar um usuário e definir uma chave ssh, use a personalização do User specifications for the resulting system image.

  5. Anexar uma opção de parâmetro de inicialização do kernel aos valores padrão:

    [customizations.kernel]
    append = "KERNEL-OPTION"
  6. Defina o nome do hospedeiro da imagem:

    [customizations]
    hostname = "BASE-IMAGE"
  7. Adicione um grupo para a imagem resultante do sistema:

    [[customizations.group]]
    name = "USER-NAME"
    gid = "NUMBER"

    Somente o nome é obrigatório e o GID é opcional.

  8. Defina o fuso horário e os servidores Network Time Protocol (NTP) para a imagem resultante do sistema:

    [customizations.timezone]
    timezone = "TIMEZONE"
    ntpservers = "NTP_SERVER"

    Se você não definir um fuso horário, o sistema usa Universal Time, Coordinated (UTC) como padrão. A configuração dos servidores NTP é opcional.

  9. Defina as configurações locais para a imagem do sistema resultante:

    [customizations.locale]
    languages = ["LANGUAGE"]
    keyboard = "KEYBOARD"

    A configuração das opções de idioma e teclado é obrigatória. Você pode adicionar vários idiomas. O primeiro idioma que você adicionar será o idioma principal e os outros idiomas serão secundários.

  10. Defina o firewall para a imagem resultante do sistema:

    [customizations.firewall]
    port = ["PORTS"]

    Você pode usar as portas numéricas, ou seus nomes do arquivo /etc/services para habilitar as listas.

  11. Personalizar os serviços de firewall:

    Reveja os serviços de firewall disponíveis.

    $ firewall-cmd --get-services

    No projeto, na seção customizations.firewall.service, especifique os serviços de firewall que você deseja personalizar.

    [customizations.firewall.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]

    Os serviços listados em firewall.services são diferentes dos nomes disponíveis no arquivo /etc/services.

    Opcionalmente, você pode personalizar os serviços de firewall para a imagem do sistema que você planeja criar.

    Nota

    Se você não quiser personalizar os serviços de firewall, omitir as seções [customizations.firewall] e [customizations.firewall.services] do projeto.

  12. Defina quais serviços devem ser habilitados durante o tempo de inicialização:

    [customizations.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]

    Você pode controlar quais serviços devem ser habilitados durante o tempo de inicialização. Alguns tipos de imagens já possuem serviços habilitados ou desabilitados para que a imagem funcione corretamente e esta configuração não possa ser anulada.

  13. Adicione arquivos de um repositório git ao seu projeto:

    [[repos.git]]
    rpmname = "RPM-NAME"
    rpmversion = "RPM-VERSION"
    rpmrelease = "RPM-RELEASE"
    summary = "RPM-SUMMARY"
    repo = "REPO-URL"
    ref = "GIT-REF"
    destination = "SERVICES"

    Você pode usar entradas para adicionar arquivos de um repositório git à imagem criada.

    Por exemplo, para criar um pacote de RPM chamado server-config-1.0-1.noarch.rpm, adicione as seguintes informações ao seu projeto:

    Substitua _RPM-NAME pelo nome do pacote RPM a ser criado. Este é também o nome do prefixo no arquivo de alcatrão resultante.

    Substituir RPM-VERSION pela versão do pacote RPM, por exemplo, "1.0.0.0".

    Substitua RPM-RELEASE pela versão do lançamento do pacote RPM, por exemplo, "1

    Substitua RPM-SUMMARY pelo resumo do pacote RPM.

    Substitua REPO-URL pela URL do repositório get para clonar e criar o arquivo a partir dele.

    Substitua GIT-REF pela referência do git para verificar, por exemplo, origin/branch-name, git tag, ou git commit hash.

    Substitua SERVICES pelo caminho para instalar o diretório do repositório git ao instalar o pacote RPM.

    Como conseqüência, o repositório git que você forneceu é clonado, a referência de git especificada é verificada e um pacote RPM é criado para instalar os arquivos em um caminho de destino, por exemplo, /opt/server/. O RPM inclui um resumo com os detalhes do repositório e a referência utilizada para criá-lo. O pacote RPM também está incluído nos metadados de construção da imagem.

    Nota

    Cada vez que uma construção começa, ela clona o repositório. Se você se referir a um repositório com uma grande quantidade de histórico, pode levar algum tempo para clonar e usar uma quantidade significativa de espaço em disco. Além disso, o clone é temporário e é removido assim que o pacote RPM é criado.