Implantando o SLE Micro usando imagens de disco brutas em discos DASD do IBM Z
- 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.
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.
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.
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”.
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”.
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:
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 noAtive os discos usando o comando:
#
chzdev -eDISK_IDPor exemplo, para ativar o disco
0.0.0101
:#
chzdev -e 0.0.0101Verifique se os discos estão ativos na saída do comando
lsdasd
.
4 Preparando o disco de configuração #
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:
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 1310760Na saída acima, o valor
Bus-ID
do disco que será usado como dispositivo de configuração é 0.0.0102. Use o valor deBus-ID
ou o tamanho do disco para identificá-lo, pois o nome do dispositivo (/dev/dasdX
) pode mudar após cada reinicialização.Formate o disco. Lembre-se de que a formatação remove todos os dados desse disco.
#
dasdfmt -b 4096 -y -p /dev/dasdbCrie uma partição:
#
parted /dev/dasdb mkpart ext2 0% 100%Formate a partição:
#
mkfs.ext4 /dev/dasdb1Defina o rótulo da partição como
ignition
:#
e2label /dev/dasdb1 ignitionVerifique o sistema de arquivos:
#
blkidMonte a partição:
#
mount /dev/dasdb1 /mntPrepare a estrutura de diretórios para o Ignition e/ou o Combustion. Para o Ignition:
#
mkdir -p /mnt/ignitionPara o Combustion:
#
mkdir -p /mnt/combustionCopie sua chave SSH pública para
/mnt/combustion
comossh_key.pub
.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
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.
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.
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
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 #
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
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.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.
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
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.
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
”.
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))
NotaNo 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:
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:
Faça download da imagem de disco bruta usando
wget
oucurl
. Por exemplo:>
curl -L0kOExtraia a imagem:
>
unpack xz -dBUILD_IDENTIFICATION.raw.xzExporte 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)Formate o disco:
Se o disco for formatado pela primeira vez:
#
dasdfmt -b 4096 -y -p /dev/$SMDASDSe o disco já foi formatado:
#
dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
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
Encerre o Linux em execução:
#
init 0Inicie 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:
Execute
transactional-update register
da seguinte maneira:#
transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESSPara 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.
Reinicialize o sistema para alternar para o instantâneo mais recente.
O SLE Micro agora está registrado.
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.
Execute o comando
useradd
da seguinte maneira:#
useradd -m USER_NAME
Defina uma senha para essa conta:
#
passwdUSER_NAMESe necessário, adicione o usuário ao grupo
wheel
:#
usermod -aG wheelUSER_NAME
7 Informações legais #
Copyright © 2006-2024 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.