Crear un archivo de configuración Ignition

La herramienta Butane es la opción preferida para crear un archivo de configuración Ignition. Butane consume un archivo Butane Config YAML y produce un Ignition Config en el formato JSON. El archivo JSON se utiliza por un sistema en el primer arranque. El Ignition Config aplica la configuración en la imagen como creación de usuarios y instalación de unidades systemd.

Requisitos previos
Procedimiento
  1. Cree un archivo Butane Config y guárdelo en el formato .bu. Debe especificar el apunte variant como fiot, y el apunte version como 1.0.0, para imágenes Fedora IoT. La variante butane fiot en los destinos de versión 1.0.0 de Ignition especifica la versión 3.3.0. Lo siguiente es un archivo Butane Config YAML de ejemplo:

    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. Ejecute las instrucciones siguientes para utilizar el archivo Butane Config YAML y genere un Ignition Config en el formato JSON:

    $ podman run -i --rm quay.io/coreos/butane --pretty --strict < fiot.bn | 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"
          }
        ]
      }
    }

    Tras que ejecute el archivo Butane config YAML para comprobar y generar el archivo Ignition Config JSON, quizá obtenga avisos cuando utilice campos no admitidos, como particiones, por ejemplo. Puede reparar estos campos y re-ejecutar la comprobación.

Ahora tiene un archivo de configuración de Ignitio JSON que puede utilizar para personalizar su instalación.

Recursos adicionales