Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Implantando o SLE Micro usando imagens de disco brutas em discos DASD do IBM Z

Implantando o SLE Micro usando imagens de disco brutas em discos DASD do IBM Z

Data de Publicação: 12/12/2024
O QUE É?

O SLE Micro fornece imagens brutas (também chamadas de imagens predefinidas) que podem ser implantadas diretamente no armazenamento do seu dispositivo.

POR QUÊ?

Este artigo apresenta instruções passo a passo sobre como implantar o SLE Micro em uma máquina IBM Z.

DEDICAÇÃO

A leitura do artigo leva aproximadamente 20 minutos.

META

O SLE Micro será implantado com êxito em seu sistema.

REQUISITOS
  • Um disco com o Linux em execução.

  • Um disco no qual você implanta a imagem bruta e o SLE Micro será executado.

  • Um disco que funciona como meio de configuração.

1 Sobre as imagens predefinidas

As imagens predefinidas são representações prontas para uso de um sistema operacional em execução. Elas não são instaladas da maneira tradicional com um instalador, mas são copiadas para o disco rígido do host de destino. O tópico inclui informações básicas sobre essas imagens predefinidas.

As imagens predefinidas devem ser configuradas na primeira inicialização usando as ferramentas incluídas nas imagens. O carregador de boot detecta a primeira inicialização conforme descrito na Seção 1.2, “Detecção de primeira inicialização”. Cada imagem vem com subvolumes padrão montados, que podem ser mudados na configuração durante a primeira inicialização. Para obter detalhes sobre os subvolumes, consulte a Seção 1.1, “Particionamento padrão”.

1.1 Particionamento padrão

As imagens predefinidas são fornecidas com um esquema de particionamento padrão. Você pode mudá-lo durante a primeira inicialização usando o Ignition ou o Combustion.

Importante
Importante: O Btrfs é obrigatório para o sistema de arquivos raiz

Se você pretende realizar qualquer mudança no esquema de particionamento padrão, o sistema de arquivos raiz deve ser Btrfs.

Cada imagem tem os seguintes subvolumes:

/home
/root
/opt
/srv
/usr/local
/var

O diretório /etc é montado como overlayFS, em que o diretório superior é montado em /var/lib/overlay/1/etc/.

Você pode reconhecer os subvolumes montados por padrão pela opção x-initrd.mount em /etc/fstab. Outros subvolumes ou partições devem ser configurados por meio do Ignition ou Combustion.

1.2 Detecção de primeira inicialização

A configuração da implantação é executada apenas na primeira inicialização. Para diferenciar a primeira inicialização das seguintes, o arquivo de flag /boot/writable/firstboot_happened será criado após a conclusão da primeira inicialização. Se o arquivo não estiver presente no sistema de arquivos, o atributo ignition.firstboot será inserido na linha de comando do kernel e, portanto, tanto o Ignition quanto o Combustion serão acionados para execução (no initrd). Após concluir a primeira inicialização, o arquivo de flag /boot/writable/firstboot_happened será criado.

Nota
Nota: O arquivo de flag sempre é criado

Mesmo que a configuração não seja bem-sucedida por causa de arquivos de configuração impróprios ou ausentes, o arquivo de flag /boot/writable/firstboot_happened será criado.

1.2.1 Forçar a reconfiguração do sistema em uma inicialização subsequente

Se você precisar reconfigurar o sistema após a primeira inicialização, poderá forçar a reconfiguração na inicialização subsequente. Há duas opções.

  • Você pode inserir o atributo ignition.firstboot=1 na linha de comando do kernel.

  • Você pode apagar o arquivo de flag /boot/writable/firstboot_happened.

2 Implantação do SLE Micro

O procedimento de implantação do SLE Micro engloba três fases. Não ignore nenhuma das fases e siga a ordem indicada abaixo.

  1. Ativação dos discos DASD: antes de iniciar a implantação, você precisa garantir que todos os discos que serão usados estejam disponíveis e ativos. Para obter informações detalhadas, consulte a Seção 3, “Preparando a máquina”.

  2. Preparação de um dispositivo de configuração: para configurar a rede, adicionar usuários e registrar o sistema, prepare a configuração de acordo com as instruções apresentadas na Seção 4, “Preparando o disco de configuração”.

  3. Download e implantação da imagem do SLE Micro no disco. Para obter informações detalhadas, consulte a Seção 5, “Implantando a imagem de disco bruta no disco DASD”.

3 Preparando a máquina

Antes de iniciar a implantação do SLE Micro, você precisa verificar se todos os três discos DASD necessários estão ativos. Para verificar o estado dos discos, execute o comando:

# lsdasd

Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
================================================================================ 
0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

O disco de 5 GB será usado como um dispositivo de configuração, e o disco de 20 GB será aquele em que o SLE Micro será implantado.

Se você não localizar os discos na saída do comando, precisará ativá-los. Para fazer isso, proceda da seguinte maneira:

  1. Execute lszdev dasd para exibir uma lista completa de dispositivos:

    # lszdev dasd
    
    TYPE       ID        ON   PERS  NAMES 
    dasd-eckd  0.0.0100  yes  no    dasda 
    dasd-eckd  0.0.0101  no   no    
    dasd-eckd  0.0.0102  no   no   
    dasd-eckd  0.0.0190  no   no     
    dasd-eckd  0.0.019d  no   no     
    dasd-eckd  0.0.019e  no   no     
    dasd-eckd  0.0.0592  no   no
  2. Ative os discos usando o comando:

    # chzdev -eDISK_ID

    Por exemplo, para ativar o disco 0.0.0101:

    # chzdev -e 0.0.0101
  3. Verifique se os discos estão ativos na saída do comando lsdasd.

4 Preparando o disco de configuração

Dica
Dica: Disco virtual ou físico

Um disco virtual pode ser mais adequado para implantações de produção, enquanto um disco físico é mais adequado para desenvolvimento.

Durante o processo de instalação, você pode inserir uma configuração complexa para definir usuários, diretórios ou fornecer chaves SSH. Para fazer isso, crie um dispositivo de configuração que armazene uma configuração completa. O procedimento de exemplo a seguir descreve como criar esse tipo de dispositivo:

  1. Identifique o disco de 5 GB:

    # lsdasd
    
    Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
    ================================================================================ 
    0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
    0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
    0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

    Na saída acima, o valor Bus-ID do disco que será usado como dispositivo de configuração é 0.0.0102. Use o valor de Bus-ID ou o tamanho do disco para identificá-lo, pois o nome do dispositivo (/dev/dasdX) pode mudar após cada reinicialização.

  2. Formate o disco. Lembre-se de que a formatação remove todos os dados desse disco.

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. Crie uma partição:

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. Formate a partição:

    # mkfs.ext4 /dev/dasdb1
  5. Defina o rótulo da partição como ignition:

    # e2label /dev/dasdb1 ignition
  6. Verifique o sistema de arquivos:

    # blkid
  7. Monte a partição:

    # mount /dev/dasdb1 /mnt
  8. Prepare a estrutura de diretórios para o Ignition e/ou o Combustion. Para o Ignition:

    # mkdir -p  /mnt/ignition

    Para o Combustion:

    # mkdir -p /mnt/combustion
  9. Copie sua chave SSH pública para /mnt/combustion como ssh_key.pub.

  10. Prepare a configuração conforme descrito a seguir.

4.1 Configurando a implantação do SLE Micro com o Combustion

Combustion é um módulo do dracut que permite configurar o sistema na primeira inicialização. Você pode usar o Combustion, por exemplo, para mudar as partições padrão, definir senhas de usuários, criar arquivos ou instalar pacotes.

4.1.1 Como funciona o Combustion?

O Combustion é invocado depois que o argumento ignition.firstboot é passado para a linha de comando do kernel. O Combustion lê um arquivo fornecido chamado script, executa os comandos incluídos e, deste modo, realiza mudanças no sistema de arquivos. Se script incluir o flag de rede, o Combustion tentará configurar a rede. Após a montagem de /sysroot, o Combustion tentará ativar todos os pontos de montagem em /etc/fstab e, em seguida, chamará transactional-update para aplicar outras mudanças, por exemplo, definir a senha de root ou instalar pacotes.

O arquivo de configuração script deve residir no subdiretório combustion da mídia de configuração chamada combustion. A estrutura de diretórios deve ter a seguinte aparência:

<root directory>
└── combustion
    └── script
    └── other files
Dica
Dica: Usando Combustion junto com Ignition

O Combustion pode ser usado junto com o Ignition. Se você pretende fazer isso, defina o rótulo do meio de configuração ignition e inclua o diretório ignition com o config.ign em sua estrutura de diretórios, conforme mostrado abaixo:

<root directory>
└── combustion
    └── script
    └── other files
└── ignition
    └── config.ign

Neste cenário, o Ignition é executado antes do Combustion.

4.1.2 Exemplos de configuração do Combustion

4.1.2.1 O arquivo de configuração script

O arquivo de configuração script é um conjunto de comandos que são analisados e executados pelo Combustion em um shell transactional-update. Este artigo mostra exemplos de tarefas de configuração executadas pelo Combustion.

Importante
Importante: Incluir declaração do interpretador

Como o arquivo script é interpretado pelo shell, inicie-o sempre com a declaração do interpretador em sua primeira linha. Por exemplo, no caso do Bash:

#!/bin/bash

Para efetuar login no sistema, inclua pelo menos a senha de root. No entanto, é recomendável estabelecer a autenticação por meio de chaves SSH. Se você precisa usar uma senha de root, configure uma que seja segura. Para uma senha gerada aleatoriamente, use pelo menos 10 caracteres. Se você criar a senha manualmente, use mais do que 10 caracteres e combine letras maiúsculas, letras minúsculas e números.

4.1.2.1.1 Configuração de rede

Para configurar e usar a conexão de rede durante a primeira inicialização, adicione a seguinte declaração ao script:

# combustion: network

O uso dessa declaração transmite o argumento rd.neednet=1 para o dracut. A configuração de rede é padronizada para usar DHCP. Se uma configuração de rede diferente for necessária, proceda conforme descrito na Seção 4.1.2.1.2, “Fazendo modificações no initramfs”.

Se você não usar a declaração, o sistema permanecerá configurado sem nenhuma conexão de rede.

4.1.2.1.2 Fazendo modificações no initramfs

Talvez seja necessário fazer mudanças no ambiente initramfs, por exemplo, para gravar uma configuração de rede personalizada para o NetworkManager em /etc/NetworkManager/system-connections/. Para fazer isso, use a declaração prepare.

Por exemplo, para criar uma conexão com um endereço IP estático e configurar o DNS:

#!/bin/bash
# combustion: network prepare
set -euxo pipefail
          
nm_config() {
  umask 077 # Required for NM config
  mkdir -p /etc/NetworkManager/system-connections/
  cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF
  [connection]
  id=static
  type=ethernet
  autoconnect=true
          
  [ipv4]
  method=manual
  dns=192.168.100.1
  address1=192.168.100.42/24,192.168.100.1
EOF
}
          
if [ "${1-}" = "--prepare" ]; then
  nm_config # Configure NM in the initrd
  exit 0
fi
          
# Redirect output to the console
exec > >(exec tee -a /dev/tty0) 2>&1
          
  nm_config # Configure NM in the system
  curl example.com
# Leave a marker
echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.3 Particionamento

As imagens brutas do SLE Micro são fornecidas com um esquema de particionamento padrão, conforme descrito na Seção 1.1, “Particionamento padrão”. Você pode usar um particionamento diferente. O conjunto de trechos de exemplo a seguir move /home para uma partição diferente.

Nota
Nota: Executar mudanças fora dos diretórios incluídos nos instantâneos

O script a seguir executa mudanças que não estão incluídas nos instantâneos. Se o script falhar e o instantâneo for descartado, algumas mudanças permanecerão visíveis e não poderão ser revertidas, por exemplo, as mudanças feitas no dispositivo /dev/vdb.

O trecho a seguir cria um esquema de particionamento GPT com uma única partição no dispositivo /dev/vdb:

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF

partition=/dev/vdb1

A partição é formatada como Btrfs:

wipefs --all ${partition}
mkfs.btrfs ${partition}

O conteúdo possível de /home é movido para o novo local da pasta /home pelo seguinte trecho:

mount /home
mount ${partition} /mnt
rsync -aAXP /home/ /mnt/
umount /home /mnt

O seguinte trecho remove uma entrada antiga de /etc/fstab e cria uma nova:

awk -i inplace '$2 != "/home"' /etc/fstab
echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab
4.1.2.1.4 Criando novos usuários

Como alguns serviços (por exemplo, o Cockpit) exigem login de um usuário não root, defina pelo menos um usuário sem privilégios. Se preferir, crie esse usuário de um sistema em execução conforme descrito na Seção 6.2, “Adicionando usuários”.

Para adicionar uma nova conta de usuário, primeiro crie uma string de hash que represente a senha do usuário. Use o comando openssl passwd -6.

Após obter o hash da senha, adicione as seguintes linhas ao script:

mount /home
useradd -m EXAMPLE_USER
echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 Definindo uma senha de root

Antes de definir a senha de root, gere um hash da senha, por exemplo, usando openssl passwd -6. Para definir a senha, adicione a seguinte linha ao script:

echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 Adicionando chaves SSH

O trecho a seguir cria um diretório para armazenar a chave SSH de root e, em seguida, copia a chave SSH pública localizada no dispositivo de configuração para o arquivo authorized_keys.

mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
Nota
Nota

O serviço SSH deve ser habilitado, caso você tenha que usar login remoto via SSH. Para obter informações detalhadas, consulte a Seção 4.1.2.1.7, “Habilitando serviços”.

4.1.2.1.7 Habilitando serviços

Para habilitar serviços do sistema, como SSH, adicione a seguinte linha ao script:

systemctl enable sshd.service
4.1.2.1.8 Instalando pacotes
Importante
Importante: Conexão de rede e registro do sistema podem ser necessários

Como alguns pacotes podem exigir assinatura adicional, talvez seja necessário registrar seu sistema primeiro. Uma conexão de rede disponível também pode ser necessária para instalar pacotes adicionais.

Durante a primeira configuração de boot, você pode instalar pacotes adicionais no sistema. Por exemplo, você pode instalar o editor vim adicionando:

zypper --non-interactive install vim-small
Nota
Nota

Lembre-se de que você não poderá usar o zypper depois que a configuração for concluída e você fizer a inicialização no sistema configurado. Para executar mudanças mais tarde, você deve usar o comando transactional-update para criar um instantâneo modificado.

4.1.2.2 Um exemplo completo do arquivo script

O script a seguir fornece as configurações completas que podem servir como um guia sobre como escrever sua própria configuração do Combustion. O exemplo não requer nenhuma configuração adicional do Ignition.

    #!/bin/bash
    # combustion: network prepare
    
    
    set -euxo pipefail
    
    ## The OSA subchannels to enable
    ZNET_SUBCHANNELS=0.0.1000,0.0.1001,0.0.1002
    
    ## Network information to configure
    IPADDRESS="10.144.64.155/24" ## Formet is ipaddress/cidr
    GATEWAY="10.144.64.254"
    NAMESERVERS="10.144.53.53;10.144.53.54" ## A semicolon-separated list of name servers
    
    ## Hostname information
    NODE_HOSTNAME="micro6"
    
    ## Add password for root user
    ## Use either 'openssl passwd -6' or 'mkpasswd --method=sha-512' to encrypt the password.
    ROOT_USER_PASSWORD='PASSWORD_HASH'
    SSH_ROOT_PUBLIC_KEY=ssh_key.pub
    
    ## Add a regular user, because root login may be disallowed in some services.
    CREATE_NORMAL_USER=user ## Replace the "user" with a desired username here.
    NORMAL_USER_PASSWORD='PASSWORD_HASH'
    SSH_USER_PUBLIC_KEY=ssh_key.pub
    
    ## Register to SUSE Customer Center and install additional packages
    REG_EMAIL='tux@suse.com' ## Email address for product registration
    SLMICRO_REGCODE='REGISTRATIONCODE' ## A registration code required to install additional packages
    ADDITIONAL_PACKAGES='' ## A space separated list of additional packages to install
    
    
    nm_config() {
      umask 077 # Required for Network Manager configuration
      mkdir -p /etc/NetworkManager/system-connections/
      cat >'/etc/NetworkManager/system-connections/Wired connection 1.nmconnection' <<EOF
      [connection]
      id=static
      type=ethernet
      autoconnect=true
    
      [ipv4]
      method=manual
      address1=$IPADDRESS
      gateway=$GATEWAY
      dns=$NAMESERVERS
    EOF
    }
    
    if [ "${1-}" = "--prepare" ]; then
      # Configure Network Manager in the initrd
      nm_config
      # Enable OSA network devices
      chzdev qeth $ZNET_SUBCHANNELS -ep
      chzdev qeth $ZNET_SUBCHANNELS -e    
      exit 0
    fi
    
    
    
    ## Post output on stdout
    exec > >(exec tee -a /dev/ttyS0) 2>&1
    
    ## Set hostname
    echo $NODE_HOSTNAME > /etc/hostname
    
    ## Set root password
    echo root:$ROOT_USER_PASSWORD | chpasswd -e
    ## Add ssh public key as authorized key for the root user
    mkdir -pm700 /root/.ssh/
    cat $SSH_ROOT_PUBLIC_KEY >> /root/.ssh/authorized_keys
    
    ## Mount /var and /home so user can be created smoothly
    if [ "$CREATE_NORMAL_USER" ]
    then
      mount /var && mount /home
    fi
    ## User creation
    if [ "$CREATE_NORMAL_USER" ]
    then
      echo "User creation is requested, creating user."
      useradd -m $CREATE_NORMAL_USER -s /bin/bash -g users
      echo $CREATE_NORMAL_USER:$NORMAL_USER_PASSWORD | chpasswd -e
      echo $CREATE_NORMAL_USER "ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/adminusers
      mkdir -pm700 /home/$CREATE_NORMAL_USER/.ssh/
      chown -R $CREATE_NORMAL_USER:users /home/$CREATE_NORMAL_USER/.ssh/
      cat $SSH_USER_PUBLIC_KEY >> /home/$CREATE_NORMAL_USER/.ssh/authorized_keys
      echo "Requested user has been created, requested password has been set."
    else
      echo "No user will be created"
    fi
    
    # Configure NM in the system
    nm_config
    # Enable OSA network device
    chzdev qeth $ZNET_SUBCHANNELS -ep
    chzdev qeth $ZNET_SUBCHANNELS -e
    
    ## Enable services
    echo "Enabling services."
    systemctl enable cockpit.socket
    systemctl enable sshd
    
    ## Unmount var and home
    if [ "$CREATE_NORMAL_USER" ]
    then
      umount /var && umount /home
    fi  
    
    
    echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion

4.2 Configurando a implantação do SLE Micro com o Ignition

Ignition é uma ferramenta de aprovisionamento que permite configurar um sistema de acordo com as suas especificações na primeira inicialização.

4.2.1 Como funciona o Ignition?

Quando o sistema é inicializado pela primeira vez, o Ignition é carregado como parte de um initramfs e procura um arquivo de configuração em um diretório específico (em um disco flash USB, ou você pode fornecer um URL). Todas as mudanças são executadas antes que o kernel alterne do sistema de arquivos temporário para o sistema de arquivos raiz real (antes da emissão do comando switch_root).

O Ignition usa um arquivo de configuração no formato JSON chamado config.ign. Você pode gravar a configuração manualmente ou usar o aplicativo da Web Fuel Ignition em https://ignite.opensuse.org para gerá-la.

Importante
Importante

O Fuel Ignition ainda não abrange o vocabulário completo do Ignition, e o arquivo JSON resultante pode precisar de outros ajustes manuais.

4.2.1.1 config.ign

O arquivo de configuração config.ign deve residir no subdiretório ignition da mídia de configuração, por exemplo, um pendrive USB chamado ignition. A estrutura de diretórios deve ter a seguinte aparência:

<root directory>
└── ignition
    └── config.ign
Dica
Dica

Para criar uma imagem de disco com a configuração do Ignition, você pode usar o aplicativo da Web Fuel Ignition em https://ignite.opensuse.org.

O config.ign contém vários tipos de dados: objetos, strings, números inteiros, boolianos e listas de objetos. Para obter uma especificação completa, consulte Ignition specification v3.3.0.

O atributo version é obrigatório e, no caso do SLE Micro, o valor dele deve ser definido como 3.3.0 ou qualquer versão anterior. Do contrário, o Ignition falhará.

Para efetuar login no sistema como root, você deve incluir pelo menos uma senha de root. No entanto, é recomendável estabelecer o acesso por meio de chaves SSH. Para configurar uma senha, use uma senha segura. Se você usar uma senha gerada aleatoriamente, use pelo menos 10 caracteres. Se você criar a senha manualmente, use mais do que 10 caracteres e combine letras maiúsculas, letras minúsculas e números.

4.2.2 Exemplos de configuração do Ignition

4.2.2.1 Exemplos de configuração

Esta seção apresenta vários exemplos de configuração do Ignition no formato JSON incorporado.

Importante
Importante

A Seção 1.1, “Particionamento padrão” lista os subvolumes que são montados por padrão durante a execução da imagem predefinida. Para adicionar um novo usuário ou modificar qualquer um dos arquivos em um subvolume que não esteja montado por padrão, você precisa declarar esse subvolume primeiro para que ele também seja montado. Encontre mais detalhes sobre a montagem de sistemas de arquivos na Seção 4.2.2.1.1.3, “O atributo filesystems.

Nota
Nota: O atributo version é obrigatório

Cada config.fcc deve incluir a versão 1.4.0 ou inferior, que será convertida na especificação do Ignition correspondente.

4.2.2.1.1 Configuração de armazenamento

O atributo storage é usado para configurar partições, RAID, definir sistemas de arquivos, criar arquivos etc. Para definir partições, use o atributo disks. O atributo filesystems é usado para formatar partições e definir pontos de montagem de partições específicas. O atributo files pode ser usado para criar arquivos no sistema de arquivos. Cada um dos atributos mencionados está descrito nas seções a seguir.

4.2.2.1.1.1 O atributo disks

O atributo disks é uma lista de dispositivos que permite definir partições nesses dispositivos. O atributo disks deve conter pelo menos um device, os outros atributos são opcionais. O seguinte exemplo usa um único dispositivo virtual e divide o disco em quatro partições:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "disks": [
      {
        "device": "/dev/vda",
        "partitions": [
          {
            "label": "root",
            "number": 1,
            "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709"
          },
          {
            "label": "boot",
            "number": 2,
            "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172"
          },
          {
            "label": "swap",
            "number": 3,
            "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F"
          },
          {
            "label": "home",
            "number": 4,
            "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915"
          }
        ],
        "wipeTable": true
      }
    ]
  }
}
4.2.2.1.1.2 O atributo raid

raid é uma lista de matrizes RAID. Os seguintes atributos de raid são obrigatórios:

level

um nível da matriz RAID específica (linear, raid0, raid1, raid2, raid3, raid4, raid5, raid6)

devices

uma lista de dispositivos na matriz referenciada por seus caminhos absolutos

name

um nome que será usado para o dispositivo md

Por exemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "raid": [
      {
        "devices": [
          "/dev/sda",
          "/dev/sdb"
        ],
        "level": "raid1",
        "name": "system"
      }
    ]
  }
}
4.2.2.1.1.3 O atributo filesystems

filesystems deve conter os seguintes atributos:

device

o caminho absoluto para o dispositivo, normalmente /dev/sda, no caso de disco físico

format

o formato do sistema de arquivos (Btrfs, Ext4, xfs, vfat ou swap (troca))

Nota
Nota

No caso do SLE Micro, o sistema de arquivos root deve ser formatado como Btrfs.

O exemplo a seguir demonstra o uso do atributo filesystems. O diretório /opt será montado na partição /dev/sda1, que está formatada como Btrfs. O dispositivo não será apagado.

Por exemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda1",
        "format": "btrfs",
        "path": "/opt",
        "wipeFilesystem": false
      }
    ]
  }
}

Normalmente, o diretório pessoal de um usuário comum está localizado no diretório /home/USER_NAME. Como /home não é montado por padrão no initrd, a montagem deve ser definida claramente para que a criação do usuário seja bem-sucedida:

{
  "ignition": {
    "version": "3.1.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH"
        ]
      }
    ]
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda3",
        "format": "btrfs",
        "mountOptions": [
          "subvol=/@/home"
        ],
        "path": "/home",
        "wipeFilesystem": false
      }
    ]
  }
}
4.2.2.1.1.4 O atributo files

Você pode usar o atributo files para criar qualquer arquivo em sua máquina. Para criar arquivos fora do esquema de particionamento padrão, lembre-se de que você precisará definir os diretórios usando o atributo filesystems.

No exemplo a seguir, um nome de host é criado usando o atributo files. O arquivo /etc/hostname será criado com o nome de host sl-micro1:

Importante
Importante

Lembre-se de que o JSON aceita modos de arquivo em números decimais, por exemplo, 420.

JSON:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "files": [
      {
        "overwrite": true,
        "path": "/etc/hostname",
        "contents": {
          "source": "data:,sl-micro1"
        },
        "mode": 420
      }
    ]
  }
}
4.2.2.1.1.5 O atributo directories

O atributo directories é uma lista dos diretórios que serão criados no sistema de arquivos. O atributo directories deve conter pelo menos um atributo path.

Por exemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "directories": [
      {
        "path": "/home/tux",
        "user": {
          "name": "tux"
        }
      }
    ]
  }
}
4.2.2.1.2 Administração de usuários

O atributo passwd é usado para adicionar usuários. Como alguns serviços (por exemplo, o Cockpit) exigem login de um usuário não root, defina pelo menos um usuário sem privilégios. Se preferir, crie esse usuário de um sistema em execução conforme descrito na Seção 6.2, “Adicionando usuários”.

Para efetuar login no sistema, crie um usuário root e um usuário comum e defina as respectivas senhas. Você precisa criar o hash das senhas, por exemplo, usando o comando openssl:

openssl passwd -6

O comando cria um hash da senha escolhida. Use esse hash como o valor do atributo password_hash.

Por exemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH USER@HOST"
        ]
      }
    ]
  }
}

O atributo users deve conter pelo menos um atributo name. ssh_authorized_keys é uma lista de chaves SSH para o usuário.

4.2.2.1.3 Habilitando serviços systemd

Você pode habilitar serviços systemd especificando-os no atributo systemd.

Por exemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}
4.2.2.2 Convertendo arquivos no formato YAML em JSON

JSON é um formato de arquivo universal para armazenamento de dados estruturados. Os aplicativos, como o Ignition, usam esse formato para armazenar e recuperar suas configurações. Como a sintaxe do JSON é complexa e difícil de ler, você pode gravar a configuração em um formato mais amigável chamado YAML e, depois disso, convertê-lo em JSON.

4.2.2.2.1 Convertendo arquivos YAML no formato JSON

A ferramenta que converte vocabulários específicos do Ignition em arquivos YAML no formato JSON é butane. Ela também verifica a sintaxe do arquivo YAML para detectar possíveis erros na estrutura. Para obter a versão mais recente da butane, adicione o seguinte repositório:

> sudo  zypper ar -f \
  https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \
  devel_kubic_ignition

Substitua openSUSE_Tumbleweed por uma destas opções (dependendo da sua distribuição):

  • 'openSUSE_Leap_$releasever'

  • 15.5

Agora você pode instalar a ferramenta butane:

> sudo  zypper ref && zypper in butane

Após a conclusão da instalação, você poderá chamar a butane executando:

>  butane -p -o config.ign config.fcc
  • config.fcc é o caminho para o arquivo de configuração YAML.

  • config.ign é o caminho para o arquivo de configuração JSON de saída.

  • A opção de comando -p adiciona quebras de linha ao arquivo de saída e, portanto, torna-o mais legível.

5 Implantando a imagem de disco bruta no disco DASD

Para implantar o SLE Micro no disco DASD de 20 GB, faça o seguinte:

  1. Faça download da imagem de disco bruta usando wget ou curl. Por exemplo:

    > curl -L0kO
  2. Extraia a imagem:

    > unpack xz -dBUILD_IDENTIFICATION.raw.xz
  3. Exporte uma variável que encontre e armazene o nome do dispositivo de 20 GB.

    # export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)
  4. Formate o disco:

    • Se o disco for formatado pela primeira vez:

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • Se o disco já foi formatado:

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. Copie a imagem de disco bruta para o disco (no nosso caso, o nome do dispositivo é /dev/dasdc):

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. Encerre o Linux em execução:

    # init 0
  7. Inicie o SLE Micro inicializando o segundo minidisco DASD em um terminal x3270:

    # ipl 101

6 Etapas pós-implantação

6.1 Registrando o SLE Micro da CLI

Se o seu sistema não foi registrado durante o processo de implantação usando o script do Combustion, você pode registrar do sistema em execução.

Para registrar o SLE Micro no SUSE Customer Center, faça o seguinte:

  1. Execute transactional-update register da seguinte maneira:

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS

    Para o registro com um servidor de registro local, especifique também o URL para o servidor:

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS \
     --url "https://suse_register.example.com/"

    Substitua REGISTRATION_CODE pelo código de registro que você recebeu com a cópia do SLE Micro. Substitua EMAIL_ADDRESS pelo endereço de e-mail associado à conta do SUSE que você ou sua organização usa para gerenciar assinaturas.

  2. Reinicialize o sistema para alternar para o instantâneo mais recente.

  3. O SLE Micro agora está registrado.

Nota
Nota: Outras opções de registro

Para obter informações que não fazem parte do escopo desta seção, consulte a documentação em linha com SUSEConnect --help.

6.2 Adicionando usuários

Como o SLE Micro requer um usuário sem privilégios para efetuar login por SSH ou para acessar o Cockpit, você precisa criar essa conta.

Esta etapa é opcional se você definiu um usuário sem privilégios no Combustion.

  1. Execute o comando useradd da seguinte maneira:

    # useradd -m USER_NAME
  2. Defina uma senha para essa conta:

    # passwdUSER_NAME
  3. Se necessário, adicione o usuário ao grupo wheel:

    # usermod -aG wheelUSER_NAME