Latihan 1 dari materi Systemd & Service Management di DevOps — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Tulis function generateUnitFile(config) yang menerima object { description, execStart, user, restart, after } (after adalah array nama unit) dan mengembalikan teks unit file systemd.
- Section
[Unit]: baris [Unit], lalu Description= + description, lalu After= + isi after digabung dengan satu spasi. Kalau after array kosong, baris After= gak ditulis sama sekali.
- Section
[Service]: [Service], Type=simple, User= + user, ExecStart= + execStart, Restart= + restart, persis urutan itu.
- Section
[Install]: [Install] lalu WantedBy=multi-user.target.
- Baris dalam satu section digabung dengan
"\n", antar section dipisah satu baris kosong ("\n\n"), dan gak ada baris kosong atau "\n" di akhir teks. return teksnya.
Yang dicek, generateUnitFile dengan config contoh di kode awal (My App, deploy, on-failure, after berisi network.target dan postgresql.service) mengembalikan:
[Unit]
Description=My App
After=network.target postgresql.service
[Service]
Type=simple
User=deploy
ExecStart=/usr/bin/node server.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
Dan config { description: "Worker", execStart: "/usr/bin/python worker.py", user: "app", restart: "always", after: [] } mengembalikan:
[Unit]
Description=Worker
[Service]
Type=simple
User=app
ExecStart=/usr/bin/python worker.py
Restart=always
[Install]
WantedBy=multi-user.target
Baris console.log(generateUnitFile(...)) di kode awal sudah ada, biarkan saja untuk melihat hasilnya.