Creazione di un file di configurazione Ignition

Lo strumento Butane è l’opzione preferita per creare un file di configurazione di Ignition. Butane utilizza un file YAML Butane Config e produce una Ignition Config in formato JSON. Il file JSON viene utilizzato dal sistema al primo avvio. La Ignition Config applica la configurazione nell’immagine, come la creazione di utenti e l’installazione di unità systemd.

Prequisiti
Procedura
  1. Crea un file di configurazione Butane Config e salvalo nel formato .bu. Per le immagini Fedora IoT, devi specificare la voce variant come fiot e la voce version come 1.0.0. La variante fiot di butane nella versione 1.0.0 si riferisce alla specifica Ignition versione 3.3.0. Di seguito è riportato un esempio di file YAML di configurazione Butane:

    variant: fiot
    version: 1.0.0
    ignition:
      config:
        merge:
          - source: http://192.168.122.1/config.ign
    passwd:
      users:
        - name: core
          groups:
            - wheel
          password_hash: password_hash_here
          ssh_authorized_keys:
            - ssh-ed25519 some-ssh-key-here
    storage:
      files:
        - path: /etc/NetworkManager/system-connections/enp1s0.nmconnection
          contents:
            inline: |
              [connection]
              id=enp1s0
              type=ethernet
              interface-name=enp1s0
              [ipv4]
              address1=192.168.122.10/24,192.168.122.1
              dns=8.8.8.8;
              dns-search=
              may-fail=false
              method=manual
          mode: 0600
        - path: /usr/local/bin/startup.sh
          contents:
            inline: |
              #!/bin/bash
              echo "Hello, World!"
          mode: 0755
    systemd:
      units:
        - name: hello.service
          contents: |
            [Unit]
            Description=A hello world
            [Install]
            WantedBy=multi-user.target
          enabled: true
        - name: fdo-client-linuxapp.service
          dropins:
            - name: log_trace.conf
              contents: |
                [Service]
                Environment=LOG_LEVEL=trace
  2. Esegui il seguente comando per utilizzare il file YAML di configurazione Butane Config e generare una configurazione Ignition in formato JSON:

    $ podman run -i --rm quay.io/coreos/butane --pretty --strict < fiot.bu | tee fiot.ign
    {
      "ignition": {
        "config": {
          "merge": [
            {
              "source": "http://192.168.122.1/config.ign"
            }
          ]
        },
        "version": "3.4.0"
      },
      "passwd": {
        "users": [
          {
            "groups": [
              "wheel"
            ],
            "name": "core",
            "passwordHash": "password_hash_here",
            "sshAuthorizedKeys": [
              "ssh-ed25519 some-ssh-key-here"
            ]
          }
        ]
      },
      "storage": {
        "files": [
          {
            "path": "/etc/NetworkManager/system-connections/enp1s0.nmconnection",
            "contents": {
              "compression": "gzip",
              "source": "data:;base64,H4sIAAAAAAAC/1SKwQrCMBAF7/stNjahSEX2S0oPS/JKA822JKvQvxcFDzKnGWaKuyqi5V1nyomhh2892XmAYSuqwiiroS4S0akU/J4pH69hJkmpojXP/h6cv43Oh+B8fw3D5a9Q0saj+/L4SNcgNa5MRc5ukbzxIlsDFdi6Jy6iT9noHQAA//9IedCQoQAAAA=="
            },
            "mode": 384
          },
          {
            "path": "/usr/local/bin/startup.sh",
            "contents": {
              "compression": "",
              "source": "data:;base64,IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8sIFdvcmxkISIK"
            },
            "mode": 493
          }
        ]
      },
      "systemd": {
        "units": [
          {
            "contents": "[Unit]\nDescription=A hello world\n[Install]\nWantedBy=multi-user.target\n",
            "enabled": true,
            "name": "hello.service"
          },
          {
            "dropins": [
              {
                "contents": "[Service]\nEnvironment=LOG_LEVEL=trace\n",
                "name": "log_trace.conf"
              }
            ],
            "name": "fdo-client-linuxapp.service"
          }
        ]
      }
    }

    Dopo aver eseguito il file YAML Butane Config per verificare e generare il file JSON Ignition Config, potresti ricevere avvisi quando utilizzi campi non supportati, come le partizioni, ad esempio. Puoi correggere quei campi e rieseguire la verifica.

Ora disponi di un file di configurazione JSON Ignition che puoi utilizzare per personalizzare la tua installazione.

Risorse aggiuntive