Produzindo uma configuração do Ignition

Visão geral do Ignition

Ignition é um utilitário de provisionamento que lê um arquivo de configuração (em formato JSON) e provisiona um sistema Fedora CoreOS baseado nessa configuração. Os componentes configuráveis incluem armazenamento e sistemas de arquivos, unidades do systemd e usuários.

O Ignition é executado apenas uma vez durante a primeira inicialização do sistema (enquanto estiver no initramfs). Como o Ignition é executado tão cedo no processo de inicialização, ele pode reparticionar discos, formatar sistemas de arquivos, criar usuários e gravar arquivos antes que o espaço do usuário comece a inicializar. Como resultado, os serviços do systemd já são gravados no disco quando o systemd é iniciado, acelerando o tempo de inicialização.

Processo de configuração

As configurações do Ignition são formatadas como JSON, que é rápido e fácil de ler por uma máquina. No entanto, esses arquivos não são fáceis de ler ou escrever. A solução é um processo de configuração em duas etapas que é amigável tanto para humanos quanto para máquinas:

  1. Produzir uma configuração Butane formatada em YAML.

  2. Executar o Butane para converter o arquivo YAML em uma configuração JSON do Ignition.

Durante o processo de transpilação, Butane verifica a sintaxe do arquivo YAML, que pode detectar erros antes de usá-lo para iniciar o sistema FCOS.

Depois de ter um arquivo do Ignition (.ign), você pode usá-lo para inicializar um sistema FCOS em uma VM ou instalá-lo em uma máquina física.

Try to plan your configuration with the full set of customization details before provisioning a Fedora CoreOS instance. But don’t worry if you forgot something as you can fix the configuration and re-deploy the instance from a fresh image.

Obter Butane

Você pode executar o Butane como um contêiner com docker ou podman ou baixá-lo como um binário independente.

Salvo indicação em contrário, os novos lançamentos de Butano são compatíveis com versões anteriores.

Através de um contêiner com podman ou docker

Você pode obter Butano de um contêiner hospedado em quay.io:

podman pull quay.io/coreos/butane:release
A tag release rastreia o lançamento mais recente e a tag latest rastreia o branch de desenvolvimento do Git.

Execute o Butane usando entrada e saída padrão ou usando arquivos:

Exemplo de execução de Butane usando entrada padrão e saída padrão
podman run --interactive --rm quay.io/coreos/butane:release \
       --pretty --strict < sua_config.bu > transpiled_config.ign
Exemplo executando Butane usando um arquivo como entrada e saída padrão
podman run --interactive --rm --security-opt label=disable \
       --volume ${PWD}:/pwd --workdir /pwd quay.io/coreos/butane:release \
       --pretty --strict sua_config.bu > transpiled_config.ign

Para simplificar a digitação, você também pode adicionar o seguinte alias à configuração do shell:

alias butane='podman run --rm --interactive       \
              --security-opt label=disable        \
              --volume ${PWD}:/pwd --workdir /pwd \
              quay.io/coreos/butane:release'
Esses exemplos usam podman, mas você pode usar o docker de maneira semelhante.

Instalando via pacotes de distribuição

Instalando no Fedora

Butane está disponível como um pacote Fedora:

sudo dnf install -y butane

Instalando via Homebrew

Butane está disponível como um pacote Homebrew:

brew install butane

Instalando via MacPorts

Butane está disponível como um pacote MacPorts:

sudo port install butane

Instalando via Scoop

Butane está disponível como um pacote Scoop via o extras:

scoop bucket add extras
scoop install butane

Instalando via cliente do gerenciador de pacotes do Windows (winget)

Butane está disponível como um pacote winget:

winget install --id Fedora.CoreOS.butane

Binário independente

Linux

Para usar o binário do Butane no Linux, siga estas etapas:

  1. Caso ainda não tenha feito isso, baixe as chaves de assinatura do Fedora e importe-as:

    curl https://fedoraproject.org/fedora.gpg | gpg --import
  2. Baixe a versão mais recente do Butane e a assinatura separada na página de lançamentos.

  3. Verifique com gpg:

    gpg --verify butane-x86_64-unknown-linux-gnu.asc

macOS

Para usar o binário do Butane no macOS, siga estas etapas:

  1. Se ainda não o fez, baixe as chaves de assinatura do Fedora e importe-as:

    curl https://fedoraproject.org/fedora.gpg | gpg --import
  2. Baixe a versão mais recente do Butane e a assinatura separada na página de lançamentos.

  3. Verifique com gpg:

    gpg --verify butane-x86_64-apple-darwin.asc

Windows

Para usar o binário do Butane no Windows, siga estas etapas:

  1. Se ainda não o fez, baixe as chaves de assinatura do Fedora e importe-as:

    Invoke-RestMethod -Uri https://fedoraproject.org/fedora.gpg | gpg --import
  2. Baixe a versão mais recente do Butane e a assinatura separada na página de lançamentos.

  3. Verifique com gpg:

    gpg --verify butane-x86_64-pc-windows-gnu.exe.asc

Example

Crie uma configuração básica do Ignition que modifique o usuário Fedora CoreOS padrão core para permitir o login do usuário com uma chave SSH.

As etapas gerais são as seguintes:

  1. Escreva a configuração do Butane no formato YAML.

  2. Use o Butane para converter a configuração do Butane em uma configuração do Ignition (JSON).

  3. Inicialize uma imagem Fedora CoreOS nova com a configuração de Ignition resultante.

Pré-requisito

Este exemplo usa um par de chaves SSH públicas e privadas. Se ainda não o tiver, você pode gerar um par de chaves SSH.

A chave pública SSH será fornecida à máquina Fedora CoreOS (via Ignition). A chave privada SSH precisa estar disponível para o seu usuário na estação de trabalho local, a fim de se autenticar remotamente por SSH.

Escrevendo a configuraçãodo Butane

  1. Copie o seguinte exemplo em um editor de texto:

    variant: fcos
    version: 1.5.0
    passwd:
      users:
        - name: core
          ssh_authorized_keys:
            - ssh-rsa AAAA...
  2. Substitua a linha acima começando com ssh-rsa com o conteúdo do seu arquivo de chave pública SSH.

  3. Salve o arquivo com o nome example.bu.

Os arquivos YAML devem ter recuo consistente. Embora o Butane verifique erros de sintaxe, certifique-se de que o recuo corresponda ao exemplo acima. No geral, as configurações do Butane devem estar em conformidade com o formato especificação de configuração do Butane.

Usando o Butane

  1. Execute o Butane na configuração do Butane:

    butane --pretty --strict example.bu > example.ign
  2. Use o arquivo `example.ign`para inicializar o Fedora CoreOS.

Se estiver usando Butane no Windows, > example.ign criará um arquivo Ignition codificado em UTF-16. Isso pode impedir que o Fedora CoreOS inicialize corretamente. Use --output example.ign em vez disso.