Eine einfache CoreOS-Konfiguration für Einsteiger mit Passwort-Login

English Deutsch

Im Gegensatz zu anderen Linux-basierten Systemen erfordert CoreOS eine recht steile Lernkurve, um es ordnungsgemäß zu installieren – beispielsweise muss die richtige Ignition-Datei erstellt werden. Dies ist ein großes Hindernis, das es zu überwinden gilt, insbesondere für Erstbenutzer.

Dieser Beitrag versucht, die steile Lernkurve zu mildern, indem eine grundlegende Konfiguration bereitgestellt wird, die für die meisten praktischen (und insbesondere kleinmaßstäblichen) Anwendungsfälle geeignet ist und einen guten Ausgangspunkt für benutzerdefinierte Konfigurationen bietet.

Einfache Installation

Zuerst die VM von der CoreOS-Live-CD booten. Es wird angenommen, dass ein DHCP-Netzwerk mit eth0 verbunden ist. Es erscheint sofort eine Shell.

Die VM wird automatisch eine IP-Adresse über DHCP beziehen.

Für die Installation kann die von TechOverflow gehostete Ignition-Datei verwendet werden. Je nach Hardware/Hypervisor muss die richtige Festplatte anstelle von /dev/xvda verwendet werden. Im Zweifel lsblk verwenden, um den richtigen Festplattennamen zu finden.

Nun den Installationsbefehl ausführen:

install.sh
sudo coreos-installer install /dev/xvda --copy-network --ignition-url https://techoverflow.net/coreos.ign

Nach Abschluss der Installation neu starten mit

commands.sh
reboot

Nach dem Neustart der Maschine können die Standard-Anmeldedaten verwendet werden:

Benutzername: admin Passwort: coreos

Der Hostname ist CoreOS.

Das Passwort muss nach der Installation unbedingt geändert werden! Wenn ein anderer Benutzer erstellt wird, beachten, dass das Passwort des Admin-Benutzers weiterhin geändert werden muss mit

commands.sh
sudo passwd admin

Eigene Konfigurationsdatei erstellen

Dies ist das Ignition-YAML, das verwendet wurde, um die korrekte Konfigurationsdatei zu erstellen. Den Online-Transpiler unter https://fcct.techoverflow.net verwenden, um das YAML in die JSON-Datei zu kompilieren. Um einen neuen Passwort-Hash zu erstellen, den Docker-basierten mkpasswd-Ansatz von TechOverflow verwenden.

ignition.yaml
variant: fcos
version: 1.0.0
passwd:
  users:
    - name: admin
      groups:
        - "sudo"
        - "docker"
      password_hash: $y$j9T$n6h8P2ik8tfoNUFBBoly00$7bnrMF8oFrB25Fc3NqigqEH/MI5YXIJwtCG/iEsns.2

systemd:
  units:
    - name: docker.service
      enabled: true

    - name: containerd.service
      enabled: true
    - name: [email protected]
      dropins:
      - name: autologin-core.conf
        contents: |
          [Service]
          # Override Execstart in main unit
          ExecStart=
          # Add new Execstart with `-` prefix to ignore failure
          ExecStart=-/usr/sbin/agetty --autologin admin --noclear %I $TERM
          TTYVTDisallocate=no
storage:
  files:
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: |
          CoreOS
    - path: /etc/profile.d/systemd-pager.sh
      mode: 0644
      contents:
        inline: |
          # Tell systemd to not use a pager when printing information
          export SYSTEMD_PAGER=cat
    - path: /etc/sysctl.d/20-silence-audit.conf
      mode: 0644
      contents:
        inline: |
          # Raise console message logging level from DEBUG (7) to WARNING (4)
          # to hide audit messages from the interactive console
          kernel.printk=4
    - path: /etc/ssh/sshd_config.d/20-enable-passwords.conf
      mode: 0644
      contents:
        inline: |
          # Enable SSH password login
          PasswordAuthentication yes

which results in the following transpiled JSON:

transpiled.json
{
  "ignition": {
    "version": "3.0.0"
  },
  "passwd": {
    "users": [
      {
        "groups": [
          "sudo",
          "docker"
        ],
        "name": "admin",
        "passwordHash": "$y$j9T$n6h8P2ik8tfoNUFBBoly00$7bnrMF8oFrB25Fc3NqigqEH/MI5YXIJwtCG/iEsns.2"
      }
    ]
  },
  "storage": {
    "files": [
      {
        "contents": {
          "source": "data:,CoreOS%0A"
        },
        "mode": 420,
        "path": "/etc/hostname"
      },
      {
        "contents": {
          "source": "data:,%23%20Tell%20systemd%20to%20not%20use%20a%20pager%20when%20printing%20information%0Aexport%20SYSTEMD_PAGER%3Dcat%0A"
        },
        "mode": 420,
        "path": "/etc/profile.d/systemd-pager.sh"
      },
      {
        "contents": {
          "source": "data:,%23%20Raise%20console%20message%20logging%20level%20from%20DEBUG%20(7)%20to%20WARNING%20(4)%0A%23%20to%20hide%20audit%20messages%20from%20the%20interactive%20console%0Akernel.printk%3D4%0A"
        },
        "mode": 420,
        "path": "/etc/sysctl.d/20-silence-audit.conf"
      },
      {
        "contents": {
          "source": "data:,%23%20Enable%20SSH%20password%20login%0APasswordAuthentication%20yes%0A"
        },
        "mode": 420,
        "path": "/etc/ssh/sshd_config.d/20-enable-passwords.conf"
      }
    ]
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "docker.service"
      },
      {
        "enabled": true,
        "name": "containerd.service"
      },
      {
        "dropins": [
          {
            "contents": "[Service]\\n# Override Execstart in main unit\\nExecStart=\\n# Add new Execstart with `-` prefix to ignore failure\\nExecStart=-/usr/sbin/agetty --autologin admin --noclear %I $TERM\\nTTYVTDisallocate=no\\n",
            "name": "autologin-core.conf"
          }
        ],
        "name": "[email protected]"
      }
    ]
  }
}

Check out similar posts by category: CoreOS