“Fedora CoreOS (FCOS)” adalah varian dari “Fedora Linux”, tetapi tidak seperti Fedora atau distro-distro linux kebanyakan, dia bersifat “immutable”.
Imutabilitas Link to heading
Pada sistem operasi tradisional (termasuk distro-distro linux pada umumnya), packages di-install dan di-update secara individual. Misal pada distro RHEL dan turunannya menggunakan “DNF”, dan “APT” untuk Debian dan distro-distro turunannya.
Pada Fedora CoreOS, updates bersifat atomic yang diterapkan sebagai pengganti OS secara keseluruhan. Pendekatan ini menjaga konsistensi dan reliabilitas setiap deployment.
Pendekatan atomic update ini mirip dengan yang biasa dilakukan pada router-router dan perangkat sejenis. Dimana update firmware dilakukan secara keseleruhan.
Instalasi dengan ignition dan butane Link to heading
Seringkali, sebuah organisasi membutuhkan beberapa instalasi mesin tetapi dengan konfigurasi dasar yang sama. Fedora CoreOS memungkinkan hal ini, karena deployment Fedora CoreOS menggunakan file konfigurasi Ignition pada saat instalasi.
File Ignition adalah sebuah file JSON yang berisi konfigurasi yang akan diterapkan pada instalasi. Akan tetapi, untuk memudahkan biasanya sysop akan membuat file YAML yang mudah dibaca oleh manusia, yang disebut konfigurasi Butane.
File ignotion/butane ini kemudian digunakan untuk melakukan deployment ke satu atau beberapa instalasi Fedora CoreOS.
Contoh file Butane:
variant: fcos
version: 1.6.0
passwd:
users:
# membuat user standar 'coreos'
- name: coreos
ssh_authorized_keys:
# cantumkan beberapa public ssh key
- ecdsa-sha2-nistp256 ********************************************************************************************************************************************
groups:
# cantumkan beberapa grup
- wheel
storage:
disks:
- device: /dev/disk/by-id/coreos-boot-disk
wipe_table: false
partitions:
# sysroot, base of OS
- number: 4
label: root
# min 8GB, direkomendasikan 10GB
size_mib: 10240
resize: true
# membuat partisi swap sebesar 8GB
- label: swap
size_mib: 8192
type_guid: 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
- label: var
size_mib: 0
filesystems:
- device: /dev/disk/by-partlabel/swap
format: swap
wipe_filesystem: true
with_mount_unit: true
# direkomendasikan membuat partisi ini
- path: /var
device: /dev/disk/by-partlabel/var
format: xfs
with_mount_unit: true
files:
# aktivasi zram
- path: /etc/systemd/zram-generator.conf
mode: 0644
contents:
inline: |
[zram0]
# ubah editor default menjadi vim
- path: /etc/profile.d/zz-default-editor.sh
overwrite: true
contents:
inline: |
export EDITOR=vim
# strategi auto-update
# auto-update tiap malam pukul 23:30 dengan akurasi 45 menit
- path: /etc/zincati/config.d/55-updates-strategy.toml
contents:
inline: |
[updates]
strategy = "periodic"
[updates.periodic]
time_zone = "Asia/Jakarta"
[[updates.periodic.window]]
days = [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]
start_time = "23:30"
length_minutes = 45
links:
- path: /etc/localtime
target: ../usr/share/zoneinfo/Asia/Jakarta
systemd:
units:
- name: rpm-ostree-install-some.service
enabled: true
contents: |
[Unit]
Description=Layer some additional packages with rpm-ostree
Wants=network-online.target
After=network-online.target
Before=zincati.service
ConditionPathExists=!/var/lib/%N.stamp
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/rpm-ostree install -y --allow-inactive qemu-guest-agent vim-enhanced node-exporter prometheus-podman-exporter wget2 iftop htop nmap wget2 whois tcpdump bwm-ng telnet iperf3 tmux ps_mem iotop
ExecStart=/bin/touch /var/lib/%N.stamp
ExecStart=/bin/systemctl --no-block reboot
[Install]
WantedBy=multi-user.target
Auto update Link to heading
System dapat dikonfigurasi untuk melakukan update secara otomatis dengan menggunakan strategi auto-update dari servis zincati. Perlu diingat, update ini bersifat atomic, bukan update package-per-package.
Atomic update secara keseluruhan menjamin konsistensi dan reliabilitas, bahkan ketika update ke versi major berbeda yang baru, misal dari Fedora CoreOS versi 41 ke 42.
Di-desain untuk menjalankan containers Link to heading
Fedora CoreOS dioptimasi untuk menjalankan tugas-tugas dalam bentuk container. OS hanya perlu diinstall packages yang berisi paket-paket dasar atau tool-tool basic untuk mengelola sistem, sedangkan tugas-tugas utama dijalankan dengan menggunakan teknologi container.
Fedora CoreOS juga menjadi inti dari OKD, sebuah distribusi komunitas untuk Kubernetes.
Pendekatan ini memungkinkan reliabilitas yang terjamin, bahkan ketika dilakukan update ke versi major yang berbeda.
Kesimpulan Link to heading
Kami menyukai Fedora CoreOS dan menjadikan OS ini sebagai OS utama dalam setiap instalasi VM terkini Kami. Dengan strategi auto-update dari zincati dan kombinasi servis “podman-auto-update” untuk meng-update container-container yang berjalan, Kami tidak perlu sibuk mengupdate satu-per-satu VM dan tugas-tugas yang dijalankan di masing-masing VM tersebut.