Mengaktifkan login otomatis dan mengatur nama host kustom
| Pastikan bahwa Anda telah menyelesaikan langkah-langkah yang diuraikan dalam halaman penyiapan awal sebelum memulai tutorial ini. |
Penyediaan Fedora CoreOS
Fedora CoreOS tidak memiliki disk instalasi yang terpisah. Sebaliknya, setiap instalasinya dimulai dari image disk generik yang dikustomisasi pada boot pertama melalui Ignition.
Berkas konfigurasi Ignition ditulis dalam format JSON, tetapi umumnya tidak ramah pengguna. Konfigurasi tersebut kemudian ditulis dalam format yang lebih sederhana, yaitu Butane config, yang kemudian dikonversi menjadi berkas konfigurasi Ignition. Alat yang bertanggung jawab untuk mengonversi berkas konfigurasi Butane menjadi berkas konfigurasi Ignition disebut Butane.
Konfigurasi Ignition Pertama menggunakan Butana
Mari kita buat konfigurasi Butane kecil yang akan melakukan tindakan berikut:
-
Tambahkan file dropin systemd untuk mengganti pengaturan default
serial-getty@ttyS0.service. -
Pengaturan override ini akan membuat layanan secara otomatis masuk ke pengguna
corepada konsol serial mesin yang telah di-boot. -
Atur nama host sistem dengan menempatkan berkas di
/etc/hostname, -
Tambahkan profil bash yang memberitahu systemd untuk tidak menggunakan pager untuk output.
Kita dapat membuat berkas konfigurasi bernama autologin.bu sekarang sebagai berikut:
variant: fcos
version: 1.6.0
systemd:
units:
- name: serial-getty@ttyS0.service
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 core --noclear %I $TERM
storage:
files:
- path: /etc/hostname
mode: 0644
contents:
inline: |
tutorial
- 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
Konfigurasi ini kemudian dapat dikonversi menjadi konfigurasi Ignition menggunakan Butane:
butane --pretty --strict autologin.bu --output autologin.ign
Konfigurasi Ignition yang dihasilkan oleh Butane sebagai autologin.ign memiliki isi sebagai berikut:
{
"ignition": {
"version": "3.4.0"
},
"storage": {
"files": [
{
"path": "/etc/hostname",
"contents": {
"compression": "",
"source": "data:,tutorial%0A"
},
"mode": 420
},
{
"path": "/etc/profile.d/systemd-pager.sh",
"contents": {
"compression": "",
"source": "data:,%23%20Tell%20systemd%20to%20not%20use%20a%20pager%20when%20printing%20information%0Aexport%20SYSTEMD_PAGER%3Dcat%0A"
},
"mode": 420
}
]
},
"systemd": {
"units": [
{
"dropins": [
{
"contents": "[Service]\n# Override Execstart in main unit\nExecStart=\n# Add new Execstart with `-` prefix to ignore failure`\nExecStart=-/usr/sbin/agetty --autologin core --noclear %I $TERM\n",
"name": "autologin-core.conf"
}
],
"name": "serial-getty@ttyS0.service"
}
]
}
}
Butane menghasilkan konfigurasi Ignition yang valid. Namun, jika Anda melakukan penyesuaian pada konfigurasi setelah Butane, atau membuat konfigurasi Ignition secara manual, Anda harus memverifikasi bahwa format konfigurasi tersebut valid menggunakan ignition-validate:
ignition-validate autologin.ign && echo 'Success!'
Membooting Fedora CoreOS
Sekarang setelah kita memiliki konfigurasi Ignition, kita dapat memulai mesin virtual menggunakan konfigurasi tersebut. Tutorial ini menggunakan gambar QEMU dengan libvirt, tetapi Anda seharusnya dapat menggunakan konfigurasi Ignition yang sama pada semua platform yang didukung oleh Fedora CoreOS.
Kita menggunakan virt-install untuk membuat mesin virtual Fedora CoreOS baru dengan konfigurasi tertentu:
# Atur label SELinux yang benar untuk mengizinkan akses ke config
chcon --verbose --type svirt_home_t autologin.ign
# Mulai mesin virtual Fedora CoreOS
virt-install --name=fcos --vcpus=2 --ram=2048 --os-variant=fedora-coreos-stable \
--import --network=bridge=virbr0 --graphics=none \
--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/autologin.ign" \
--disk="size=20,backing_store=${PWD}/fedora-coreos.qcow2"
Perintah virt-install akan memulai instance bernama fcos dari gambar fedora-coreos.qcow2 menggunakan konfigurasi Ignition autologin.ign. Perintah ini akan secara otomatis menghubungkan konsol serial mesin sehingga Anda dapat melihat pesan booting gambar tersebut.
Kita menggunakan opsi backing_store pada perintah virt-install --disk untuk dengan cepat membuat gambar disk baru dan menghindari penulisan ke gambar asli yang telah kita unduh. Gambar disk baru ini dapat dengan mudah dihapus.
Tergantung pada versi virt-install yang Anda gunakan, Anda mungkin tidak dapat menggunakan opsi --os-variant=fedora-coreos-stable dan akan mendapatkan pesan kesalahan. Dalam hal ini, Anda sebaiknya memilih varian Fedora yang lebih lama (misalnya --os-variant=fedora31). Anda dapat menemukan varian yang didukung oleh versi virt-install Anda saat ini dengan perintah osinfo-query os | grep '^\s*fedora'.
|
Setelah mesin dinyalakan, Anda akan melihat beberapa prompt, lalu Anda akan secara otomatis masuk dan disajikan dengan shell bash:
Fedora CoreOS 38.20230709.3.0 Kernel 6.3.11-200.fc38.x86_64 on an x86_64 (ttyS0) SSH host key: SHA256:Eq0GiuflXh/3E+9h689DV4K2C0VQZ5UsXXfbJ7nB4rw (ECDSA) SSH host key: SHA256:53uunBzHa2kfCO20q8h4cFeM19QRSscwUWUPoL4BP+4 (ED25519) SSH host key: SHA256:HXrypq4OjKQ267RPhpptulMMYwsnrVWW3PYuvkIyt3k (RSA) Ignition: ran on 2023/08/03 15:59:14 UTC (this boot) Ignition: user-provided config was applied No SSH authorized keys provided by Ignition or Afterburn tutorial login: core (automatic login) Fedora CoreOS 38.20230709.3.0 [core@tutorial ~]$
Mari kita verifikasi bahwa konfigurasi telah diterapkan dengan benar. Karena kita telah masuk secara otomatis ke terminal, kita dapat dengan aman mengasumsikan bahwa berkas dropin systemd telah dibuat:
[core@tutorial ~]$ systemctl cat serial-getty@ttyS0.service
# /usr/lib/systemd/system/serial-getty@.service
...
# /etc/systemd/system/serial-getty@ttyS0.service.d/autologin-core.conf
[Service]
# Override Execstart in main unit
ExecStart=
# Add new Execstart with `-` prefix to ignore failure`
ExecStart=-/usr/sbin/agetty --autologin core --noclear %I $TERM
Kita juga dapat memeriksa apakah nama host telah diatur dengan benar:
[core@tutorial ~]$ cat /etc/hostname
tutorial
[core@tutorial ~]$ hostnamectl
Static hostname: tutorial
Icon name: computer-vm
Chassis: vm π΄
Machine ID: fc4c5d5a14a741babe20559a25dcb846
Boot ID: 22ed3b3c049d42968fb6ca9e35c8055d
Virtualization: kvm
Operating System: Fedora CoreOS 38.20230709.3.0
CPE OS Name: cpe:/o:fedoraproject:fedora:38
OS Support End: Tue 2024-05-14
OS Support Remaining: 9month 1w 3d
Kernel: Linux 6.3.11-200.fc38.x86_64
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 1.16.2-1.fc38
Firmware Date: Tue 2014-04-01
Menjelajahi bagian dalam Fedora CoreOS
Setelah kita memiliki akses ke konsol mesin, kita dapat menjelajahi sistem operasi untuk melihat beberapa komponennya. Misalnya, meskipun ini adalah sistem berbasis OSTree, sistem ini tetap dibangun menggunakan RPM, dan kita dapat memeriksa sistem untuk melihat komponen apa saja yang membentuknya:
[core@tutorial ~]$ rpm -q ignition kernel moby-engine podman systemd rpm-ostree zincati ignition-2.15.0-3.fc38.x86_64 kernel-6.3.11-200.fc38.x86_64 moby-engine-20.10.23-1.fc38.x86_64 podman-4.5.1-1.fc38.x86_64 systemd-253.4-1.fc38.x86_64 rpm-ostree-2023.5-1.fc38.x86_64 zincati-0.0.25-4.fc38.x86_64
Kita juga dapat memeriksa versi terbaru Fedora CoreOS:
[core@tutorial ~]$ rpm-ostree status
State: idle
AutomaticUpdatesDriver: Zincati
DriverState: active; periodically polling for updates (last checked Thu 2023-08-03 15:59:23 UTC)
Deployments:
β fedora:fedora/x86_64/coreos/stable
Version: 38.20230709.3.0 (2023-07-24T12:25:01Z)
Commit: 552de26fe0fe6a5e491f7a4163db125e3d44b144ae53a8f5f488e3f8481c46f9
GPGSignature: Valid signature by 6A51BBABBA3D5467B6171221809A8D7CEB10B464
Dan periksa zincati.service, yang berkomunikasi dengan server pembaruan kita dan memberitahu rpm-ostree kapan harus melakukan pembaruan dan ke versi mana pembaruan tersebut harus dilakukan:
[core@tutorial ~]$ systemctl status --full zincati.service
β zincati.service - Zincati Update Agent
Loaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/service.d
ββ10-timeout-abort.conf
Active: active (running) since Thu 2023-08-03 16:06:39 UTC; 18s ago
Docs: https://github.com/coreos/zincati
Main PID: 1843 (zincati)
Status: "periodically polling for updates (last checked Thu 2023-08-03 16:06:39 UTC)"
Tasks: 6 (limit: 2238)
Memory: 2.8M
CPU: 257ms
CGroup: /system.slice/zincati.service
ββ1843 /usr/libexec/zincati agent -v
Aug 03 16:06:39 tutorial systemd[1]: Starting zincati.service - Zincati Update Agent...
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::cli::agent] starting update agent (zincati 0.0.25)
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::cincinnati] Cincinnati service: https://updates.coreos.fedoraproject.org
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::cli::agent] agent running on node '8fb5386cba574235a21ad3b2d59885d9', in update group 'default'
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::update_agent::actor] registering as the update driver for rpm-ostree
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::update_agent::actor] initialization complete, auto-updates logic enabled
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::strategy] update strategy: immediate
Aug 03 16:06:39 tutorial systemd[1]: Started zincati.service - Zincati Update Agent.
Aug 03 16:06:39 tutorial zincati[1843]: [INFO zincati::update_agent::actor] reached steady state, periodically polling for updates
Aug 03 16:06:41 tutorial zincati[1843]: [INFO zincati::cincinnati] current release detected as not a dead-end
Hal menarik lainnya yang bisa dilakukan adalah memeriksa log dari Ignition, jikalau ada hal menarik di sana yang mungkin ingin kita selidiki:
journalctl -t ignition
Dan terakhir, tentu saja kita dapat menggunakan perintah podman (atau docker) untuk memeriksa status saat ini dari kontainer di sistem:
podman version podman info
Perintah podman dapat dijalankan sebagai pengguna root atau pengguna non-root. Perintah docker harus dijalankan sebagai root melalui sudo kecuali pengguna telah ditambahkan ke grup docker.
|
Menjalankan kontainer menggunakan docker dan podman secara bersamaan dapat menyebabkan masalah dan mengakibatkan perilaku yang tidak terduga. Lihat entri FAQ untuk detail lebih lanjut.
|
Daemon Docker tidak dijalankan secara default, tetapi menjalankan perintah docker apa pun akan memulainya karena daemon ini diaktifkan melalui soket menggunakan systemd.
|
Menonaktifkan Mesin Virtual
Mari kita hapus mesin virtual tersebut agar kita bisa memulai dari awal lagi. Pertama, keluar dari konsol serial dengan menekan CTRL + ], lalu ketik:
virsh destroy fcos virsh undefine --remove-all-storage fcos
Anda dapat melanjutkan dengan tutorial kedua.
Want to help? Learn how to contribute to Fedora Docs βΊ