Menggunakan services-config.yaml
Saat Anda menggunakan pengelola layanan Linux yang disederhanakan untuk melakukan migrasi, Migrate to Containers
akan membuat file artefak baru, services-config.yaml
.
Gunakan file ini untuk mengontrol inisialisasi aplikasi di penampung yang di-deploy.
Misalnya, setelah Anda memigrasikan penampung, edit file services-config.yaml
untuk mengontrol
inisialisasi aplikasi ke:
- Menghapus aplikasi dari file
- Menambahkan aplikasi ke file
- Mengedit properti inisialisasi aplikasi
Berikut adalah contoh file services-config.yaml
:
version: v1beta1 env: - name: KEY1 value: VALUE1 - name: KEY2 value: VALUE2 applications: - name: nginx type: forking envfile: /path/to/file.txt env: - name: KEY3 value: VALUE3 start: - cmd: /usr/sbin/nginx -g 'daemon on; master_process on;' pidfile: /run/nginx.pid - name: ssh@ type: simple start: - cmd: /usr/sbin/sshd -i $SSHD_OPTS ignore_errors: true runtime_directories: mode: "0755" paths: - /run/sshd preserve: true - name: suitecrm type: exec start: - cmd: /etc/init.d/suitecrm start status: cmd: /etc/init.d/suitecrm status - name: phpsessionclean type: oneshot start: - cmd: /usr/lib/php/sessionclean timers: - name: phpsessionclean.timer on_calendar: - cron: 09,39 * * * * - name: mariadb type: notify prestart: - cmd: /usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld - cmd: /bin/sh -c "systemctl unset-environment _WSREP_START_POSITION" - cmd: /bin/sh -c "[ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1" start: - cmd: /usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION poststart: - cmd: /bin/sh -c "systemctl unset-environment _WSREP_START_POSITION" - cmd: /etc/mysql/debian-start user: mysql group: mysql
Dalam file ini:
env
: Menentukan variabel lingkungan di tingkat global atau di tingkat aplikasi. Jika Anda menentukan variabel lingkungan yang sama di tingkat global dan aplikasi, variabel lingkungan di tingkat aplikasi akan diprioritaskan.Untuk variabel lingkungan yang ditetapkan di tingkat global, gunakan
env
untuk menentukan pasanganname
/value
. Nama dapat berisi huruf ASCII, angka, dan karakter garis bawah. Nama tidak boleh diawali dengan angka.Untuk variabel lingkungan yang ditetapkan di tingkat aplikasi, gunakan
env
untuk menentukan pasanganname
/value
. Atau, gunakanenvfile
untuk menentukan jalur ke file teks yang berisi baris dalam bentuk:# Comments allowed KEY=VALUE
Jika file teks berisi definisi variabel lingkungan yang menduplikasi variabel yang ditentukan oleh
env
, variabel yang ditentukan olehenv
akan diprioritaskan.
applications
: Menentukan daftar aplikasi yang akan dimulai saat Anda men-deploy penampung dan menetapkan properti inisialisasi aplikasi.name
: Menentukan nama aplikasi.type
menentukan jenis aplikasi, sebagai salah satu dari berikut ini:forking
: Jalankan file yang ditentukan olehstart
tanpa melakukan forking. File yang dapat dieksekusi layanan diharapkan akan melakukan fork. Sebaiknya Anda juga menetapkanpidfile
.exec
: Fork untuk menjalankan layanan. Layanan dianggap dimulai setelahexec
dipanggil pada file yang dapat dieksekusi.simple
- Sama sepertiexec
. Perilaku layanansimple
berbeda dengan definisisystemd
karena menunggufork
danexec
, bukanfork
.notify
: Sama sepertiexec
, kecuali untuksystemd
, variabel lingkunganNOTIFY_SOCKET
tidak ditetapkan sehingga panggilansd_notify systemd
tidak berfungsi.oneshot
: Layanan dianggap dimulai setelahexec
dipanggil pada file yang dapat dieksekusi. Statusnya adalaherror
jika layanan keluar dengan kode error yang tidak sama dengan 0.
Perintah
prestart
,start
,poststart
, danstatus
untuk layanan.Untuk memulai layanan, Migrasi ke Penampung akan mengeksekusi perintah
prestart
(jika ada), lalu perintahstart
, dan terakhir perintahpoststart
(jika ada). Jika perintah gagal, dan Anda belum mengonfigurasi perintah untuk menggunakanignore_errors
, layanan akan dihentikan dan Anda akan melihat pesan error dalam status layanan.Perintah yang digunakan untuk melakukan operasi tertentu pada aplikasi memiliki bentuk:
command-type: cmd: command shell: /bin/sh ignore_errors: false ignore_environment_variables: false
Dengan keterangan:
command-type: Menentukan jenis perintah sebagai
prestart
,start
,poststart
, ataustatus
.Untuk
start
, Anda dapat memiliki satu perintah kecuali jikatype
adalahoneshot
.Jika
type=forking
atautype=oneshot
, perintahpoststart
akan dijalankan setelah perintahstart
melakukan fork. Jika tidak, perintah tersebut akan langsung dieksekusi setelah menjalankan perintahstart
.command: Menentukan perintah yang akan dijalankan untuk melakukan operasi.
shell
(Opsional): Secara default, semua perintah dijalankan di shell/bin/sh
. Secara opsional, Anda dapat menetapkanshell
ke/bin/bash
.ignore_errors
(Opsional): Jikatrue
, kode keluar dari perintah yang biasanya dianggap sebagai kegagalan akan dicatat, tetapi perintah dianggap telah berhasil. Nilai defaultnya adalahfalse
.Secara default, Migrate to Containers menetapkan
ignore_errors
ketrue
untuksystemd
yang dapat dieksekusi yang menyertakan awalan "-".ignore_environment_variables
(Opsional): Jikatrue
, penggantian variabel lingkungan tidak diterapkan. Nilai defaultnya adalahfalse
.Secara default, Migrate to Containers menetapkan
ignore_environment_variables
ketrue
untuksystemd
yang dapat dieksekusi yang menyertakan awalan ":".
pidfile
: Menentukan file pid yang berisi ID proses layanan yang digunakan untuk memeriksa apakah proses masih berjalan.chdir
: Menentukan direktori kerja proses yang dimulai.user
: Menentukan nama pengguna tempat proses baru dimulai.group
: Menentukan nama grup tempat proses baru dimulai.timers
: Menentukan daftar timer aplikasi. Aplikasi akan diaktifkan setiap kali salah satu timer yang ditentukan berlalu.version: v1beta1 env: [] Applications: - name: service_name type: service_type start: - cmd: service_exec_command timers: - name: timer_name on_calendar: - cron: realtime_time on_startup: - duration: monotonic_time on_service_start: - duration: monotonic_time on_service_stop: - duration: monotonic_time
name
: Menentukan nama timer.on_calendar
: Menentukan daftar acara kalender untuk timer.cron
: Waktu yang ditentukan menggunakan format cron. Contoh:cron: 0 0 * * * cron: @daily
on_startup
: Menentukan daftar durasi (relatif terhadap saat Anda men-deploy penampung).duration
: Waktu yang ditentukan menggunakan format durasi. Contoh:
duration: 30m duration: 1sec
on_service_start
: Menentukan daftar durasi, relatif terhadap saat status aplikasi Anda berubah menjadi aktif.duration
: Waktu yang ditentukan menggunakan format durasi.
on_service_stop
: Menentukan daftar durasi, relatif terhadap saat status aplikasi Anda berubah menjadi tidak aktif.duration
: Waktu yang ditentukan menggunakan format durasi.
Gunakan properti berikut untuk menentukan
paths
ke direktori yang dibuat sebelum memulai layanan:runtime_directories
: Menentukan daftarpaths
ke direktori yang dibuat di/run/
.state_directories
: Menentukan daftarpaths
ke direktori yang dibuat di/var/lib/
.cache_directories
: Menentukan daftarpaths
ke direktori yang dibuat di/var/cache/
.logs_directories
: Menentukan daftarpaths
ke direktori yang dibuat di/var/log/
.configuration_directories
: Menentukan daftarpaths
ke direktori yang dibuat di/etc/
.
Setiap properti ini menggunakan opsi berikut:
mode
: Menentukan mode file. Nilai default-nya adalah 0755, yang sesuai dengan akses baca dan eksekusi untuk semua orang, serta akses tulis untuk pemilik.preserve
: Jikafalse
, direktori akan dibersihkan saat layanan dihentikan. Defaultnya adalahtrue
.
Menambahkan atau menghapus layanan ke file services.yaml
Anda dapat menambahkan atau menghapus layanan dari file services.yaml
dengan mengeditnya secara manual. Setiap kali menambahkan layanan baru, Anda harus mengisi kolom berikut:
name
type
start
Untuk informasi selengkapnya tentang kolom wajib dan opsional untuk layanan, lihat
definisi services.yaml
di atas.
Tambahkan layanan
Untuk menambahkan layanan ke file services.yaml
, ikuti langkah-langkah berikut:
Buka file
services.yaml
di editor teks untuk diubah.Di
services.yaml
, buka atributapplications
:version: v1beta1 env: - name: KEY1 ... applications:
Tambahkan layanan yang diinginkan pada baris di bawah atribut
applications
yang dimulai dengan kolomname
, diikuti dengan kolom wajib dan opsional lainnya yang sesuai dengan aplikasi Anda:version: v1beta1 env: - name: KEY1 ... applications: - name: type: start: - cmd: ...
Jika file
services.yaml
Anda sudah memiliki definisi layanan di bagian atributapplications
, Anda dapat menambahkan layanan baru yang dimulai dengan kolomname
pada baris di bawah entri terakhir layanan sebelumnya:version: v1beta1 env: - name: KEY1 ... applications: - name: type: start: - name: type: start: ...
Simpan file
services.yaml
Anda.
Menghapus layanan
Untuk menghapus layanan dari file services.yaml
, ikuti langkah-langkah berikut:
Buka file
services.yaml
di editor teks untuk diubah.Di
services.yaml
, buka atributapplications
:version: v1beta1 env: - name: KEY1 ... applications: ...
Hapus layanan yang diinginkan mulai dari kolom
name
, diikuti dengan kolom wajib dan opsional lainnya yang sesuai dengan aplikasi Anda. Contoh:Sebelum layanan dihapus:
version: v1beta1 env: - name: KEY1 ... applications: - name: type: start: - cmd: - name: ...
Setelah layanan dihapus:
version: v1beta1 env: - name: KEY1 ... applications: - name: ...
Simpan file
services.yaml
Anda.