Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


public:instance-data-json-to-networkd

So kann die IPv4 Konfiguration auf Hetzner VMs aussehen:

/etc/systemd/network/eth0.network
[Match]
Name=e*
Type=ether
 
[Network]
DHCP=ipv4

Diese Datei will ich jetzt um die IPv6 Konfiguration ergänzen. Auf VMs von Hetzner liegt folgende Datei:

/run/cloud-init/instance-data.json
{
 "base64_encoded_keys": [
  "merged_cfg/random_seed/data"
 ],
 "ds": {
  "_doc": "EXPERIMENTAL: The structure and format of content scoped under the 'ds' key may change in subsequent releases of cloud-init.",
  "meta_data": {
   "instance-id": xxxxxx,
   "local-hostname": "xxxxxxx",
   "network-config": {
    "config": [
     {
      "mac_address": "aa:bb:cc:dd:ee:ff",
      "name": "eth0",
      "subnets": [
       {
        "dns_nameservers": [
         "213.133.99.99",
         "213.133.98.98",
         "213.133.100.100"
        ],
        "ipv4": true,
        "type": "dhcp"
       },
       {
        "address": "2a01:4f8:xxxx:xxxx::1/64",
        "gateway": "fe80::1",
        "ipv6": true,
        "type": "static"
       }
      ],
      "type": "physical"
     }
    ],
    "version": 1
   },
…

Da möchte ich die für systemd-networkd relevanten Daten raus extrahieren und IPv6 Adresse sowie Gateway an die /etc/systemd/network/eth0.network anhängen:

jq -r '.ds.meta_data."network-config".config[].subnets[] | select(.ipv6 == true) | "Address=\(.address)\nGateway=\(.gateway)"' /run/cloud-init/instance-data.json >> /run/cloud-init/instance-data.json >> /etc/systemd/network/eth0.network
public/instance-data-json-to-networkd.txt · Zuletzt geändert: 2026/05/02 21:13 von ingo_wichmann