ການເລີ່ມເຮັດວຽກ systemd unit ໃນລະດັບຜູ້ໃຊ້ເມື່ອເປີດເຄື່ອງ
ເຮັດທຸກຂັ້ນຕອນທີ່ໄດ້ອະທິບາຍໄວ້ໃນ ໜ້າການຕັ້ງຄ່າເບື້ອງຕົ້ນ ກ່ອນທີ່ຈະເລີ່ມບົດຮຽນນີ້. ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ສ້າງໄຟລ໌ ssh-key.pub ຕາມຄຳແນະນຳທີ່ໃຫ້ໄວ້ໃນ ເງື່ອນໄຂເບື້ອງຕົ້ນ ສຳລັບບົດຮຽນນີ້. ພວກເຮົາຈະໃຊ້ຄີ (key) ນີ້ໃນໄຟລ໌ການຕັ້ງຄ່າ Butane ທີ່ພວກເຮົາກຳລັງຈະຂຽນ.
|
ໃນບົດຮຽນນີ້, ພວກເຮົາຈະຕັ້ງຄ່າ systemd unit ໃນລະດັບຜູ້ໃຊ້ສຳລັບຜູ້ໃຊ້ທີ່ບໍ່ມີສິດພິເສດ (unprivileged user). ບາງຄັ້ງມັນກໍເປັນປະໂຫຍດທີ່ຈະເລີ່ມເຮັດວຽກ systemd unit ໃນລະດັບຜູ້ໃຊ້ໂດຍບໍ່ຈຳເປັນຕ້ອງເຂົ້າສູ່ລະບົບ. ຕົວຢ່າງ: ທ່ານອາດຈະຕ້ອງການເລີ່ມຄອນເທນເນີ (container) ທີ່ໃຫ້ບໍລິການເຄືອຂ່າຍ ຫຼື ຣັນ (run) ວຽກ HPC. ສຳລັບການຕັ້ງຄ່ານີ້, ພວກເຮົາຈະເພີ່ມສິ່ງຕໍ່ໄປນີ້ເຂົ້າໃນການຕັ້ງຄ່າ Butane:
-
systemd unit ໃນລະດັບຜູ້ໃຊ້:
/home/sleeper/.config/systemd/user/linger-example.service. -
ເປີດໃຊ້ງານມັນໃຫ້ເປັນບໍລິການ systemd ໃນລະດັບຜູ້ໃຊ້.
ການຕັ້ງຄ່າ systemd unit
ໃນຕົວຢ່າງນີ້, ພວກເຮົາຈະເລີ່ມບໍລິການ systemd ສຳລັບຜູ້ໃຊ້ sleeper. ທຳອິດ, ໃຫ້ພວກເຮົາສ້າງຜູ້ໃຊ້ຂຶ້ນມາ:
variant: fcos
version: 1.7.0
passwd:
users:
- name: sleeper
ສິ່ງນີ້ຈະສ້າງໄດເຣັກທໍຣີຫຼັກ (home directory) ສຳລັບຜູ້ໃຊ້ sleeper ນຳອີກ. ຈາກນັ້ນພວກເຮົາສາມາດເພີ່ມ systemd unit ເຂົ້າໄປ:
variant: fcos
version: 1.7.0
storage:
files:
- path: /home/sleeper/.config/systemd/user/linger-example.service
mode: 0644
contents:
inline: |
[Unit]
Description=A systemd user unit demo
[Service]
ExecStart=/usr/bin/sleep infinity
user:
name: sleeper
group:
name: sleeper
ບໍລິການຂອງລະບົບສາມາດເປີດໃຊ້ງານໄດ້ໂດຍກົງໃນການຕັ້ງຄ່າ Butane ແຕ່ບໍລິການໃນລະດັບຜູ້ໃຊ້ແມ່ນຕ້ອງໄດ້ເປີດໃຊ້ງານດ້ວຍຕົນເອງໃນຕອນນີ້:
variant: fcos
version: 1.7.0
storage:
directories:
- path: /home/sleeper/.config/systemd/user/default.target.wants
mode: 0755
user:
name: sleeper
group:
name: sleeper
links:
- path: /home/sleeper/.config/systemd/user/default.target.wants/linger-example.service
user:
name: sleeper
group:
name: sleeper
target: /home/sleeper/.config/systemd/user/linger-example.service
hard: false
ພວກເຮົາຕັ້ງຄ່າ lingering ສຳລັບ instance ຂອງ systemd ໃນລະດັບຜູ້ໃຊ້ ເພື່ອໃຫ້ມັນເລີ່ມເຮັດວຽກໂດຍກົງເມື່ອເປີດເຄື່ອງ ແລະ ເຮັດວຽກຢູ່ຕະຫຼອດ:
variant: fcos
version: 1.7.0
storage:
files:
- path: /var/lib/systemd/linger/sleeper
mode: 0644
ເນື່ອງຈາກໄດເຣັກທໍຣີຕໍ່ໄປນີ້ຍັງບໍ່ມີເທື່ອ, ພວກເຮົາຈະຕ້ອງສ້າງພວກມັນຂຶ້ນມາເພື່ອບອກໃຫ້ Ignition ຕັ້ງຄ່າຄວາມເປັນເຈົ້າຂອງ ແລະ ສິດການເຂົ້າເຖິງທີ່ຖືກຕ້ອງ:
variant: fcos
version: 1.7.0
storage:
directories:
- path: /home/sleeper/.config
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd/user
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd/user/default.target.wants
mode: 0755
user:
name: sleeper
group:
name: sleeper
ການຂຽນການຕັ້ງຄ່າ Butane ແລະ ການແປງເປັນ Ignition
ການຕັ້ງຄ່າ Butane ສຸດທ້າຍ, ທີ່ເກັບໄວ້ໃນ user.bu, ຈະແມ່ນ:
variant: fcos
version: 1.7.0
passwd:
users:
- name: core
ssh_authorized_keys_local:
- ssh-key.pub
- name: sleeper
storage:
directories:
- path: /home/sleeper/.config
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd/user
mode: 0755
user:
name: sleeper
group:
name: sleeper
- path: /home/sleeper/.config/systemd/user/default.target.wants
mode: 0755
user:
name: sleeper
group:
name: sleeper
files:
- path: /var/lib/systemd/linger/sleeper
mode: 0644
- path: /home/sleeper/.config/systemd/user/linger-example.service
mode: 0644
contents:
inline: |
[Unit]
Description=A systemd user unit demo
[Service]
ExecStart=/usr/bin/sleep infinity
user:
name: sleeper
group:
name: sleeper
links:
- path: /home/sleeper/.config/systemd/user/default.target.wants/linger-example.service
user:
name: sleeper
group:
name: sleeper
target: /home/sleeper/.config/systemd/user/linger-example.service
hard: false
ການຕັ້ງຄ່ານີ້ສາມາດແປງເປັນ Ignition ໄດ້:
butane --pretty --strict --files-dir=./ user.bu --output user.ign
ການທົດສອບ
ຄືກັນກັບກ່ອນໜ້ານີ້ ພວກເຮົາຈະໃຊ້ສິ່ງຕໍ່ໄປນີ້ເພື່ອບູດ (boot) instance:
# ຕັ້ງຄ່າ SELinux label ໃຫ້ຖືກຕ້ອງເພື່ອອະນຸຍາດໃຫ້ເຂົ້າເຖິງການຕັ້ງຄ່າ
chcon --verbose --type svirt_home_t user.ign
# ເລີ່ມເຄື່ອງສະເໝືອນ (virtual machine) 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}/user.ign" \
--disk="size=20,backing_store=${PWD}/fedora-coreos.qcow2"
ຈາກນັ້ນພວກເຮົາສາມາດກວດສອບໄດ້ວ່າ unit ໄດ້ຖືກເລີ່ມເຮັດວຽກພາຍໃຕ້ instance ຂອງຜູ້ໃຊ້ systemd sleeper ແລ້ວ:
[core@localhost ~]$ sudo machinectl shell sleeper@
Connected to the local host. Press ^] three times within 1s to exit session.
[sleeper@localhost ~]$ systemctl --user status
● localhost.localdomain
State: running
Units: 157 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Thu 2023-08-03 18:31:27 UTC; 23s ago
systemd: 253.4-1.fc38
CGroup: /user.slice/user-1001.slice/user@1001.service
├─app.slice
│ └─linger-example.service
│ └─1589 /usr/bin/sleep infinity
└─init.scope
├─1489 /usr/lib/systemd/systemd --user
└─1496 "(sd-pam)"
[sleeper@localhost ~]$ systemctl --user status linger-example.service
● linger-example.service - A systemd user unit demo
Loaded: loaded (/var/home/sleeper/.config/systemd/user/linger-example.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/user/service.d
└─10-timeout-abort.conf
Active: active (running) since Thu 2023-08-03 18:31:27 UTC; 38s ago
Main PID: 1589 (sleep)
Tasks: 1 (limit: 2238)
Memory: 224.0K
CPU: 1ms
CGroup: /user.slice/user-1001.slice/user@1001.service/app.slice/linger-example.service
└─1589 /usr/bin/sleep infinity
Aug 03 18:31:27 localhost.localdomain systemd[1489]: Started linger-example.service - A systemd user unit demo.
ການລຶບລ້າງຂໍ້ມູນ
ຈາກນັ້ນທ່ານສາມາດປິດ instance ລົງໄດ້. ທຳອິດ, ໃຫ້ຕັດການເຊື່ອມຕໍ່ຈາກ serial console ໂດຍການກົດ CTRL + ] ແລະ ຈາກນັ້ນທຳລາຍ (destroy) ເຄື່ອງ:
virsh destroy fcos virsh undefine --remove-all-storage fcos
ຕອນນີ້ທ່ານສາມາດດຳເນີນການຕໍ່ໃນ ບົດຮຽນຖັດໄປ.
Want to help? Learn how to contribute to Fedora Docs ›