Membuat file konfigurasi Ignition

Alat Butane adalah opsi yang disarankan untuk membuat file konfigurasi Ignition. Butane mengonsumsi file Butane Config YAML dan menghasilkan Ignition Config dalam format JSON. File JSON digunakan oleh sistem pada boot pertamanya. Ignition Config menerapkan konfigurasi dalam image, seperti pembuatan pengguna, dan instalasi unit systemd.

Prasyarat
  • Anda telah menginstal podman atau Butane v0.20.0 atau yang lebih baru:

Procedure
  1. Buat file Butane Config dan simpan dalam format .bu. Anda harus menentukan entri variant sebagai fiot, dan entri version sebagai 1.0.0, untuk image Fedora IoT. Varian fiot butane pada versi 1.0.0 menargetkan versi spesifikasi Ignition 3.3.0. Berikut adalah contoh file Butane Config YAML:

    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. Jalankan perintah berikut untuk mengonsumsi file Butane Config YAML dan menghasilkan Ignition Config dalam format 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"
          }
        ]
      }
    }

    Setelah Anda menjalankan file Butane Config YAML untuk memeriksa dan menghasilkan file Ignition Config JSON, Anda mungkin mendapatkan peringatan saat menggunakan kolom yang tidak didukung, seperti partisi misalnya. Anda dapat memperbaiki kolom-kolom tersebut dan menjalankan ulang pemeriksaan.

Anda sekarang memiliki file konfigurasi JSON Ignition yang dapat Anda gunakan untuk mengustomisasi instalasi Anda.