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 pada container yang di-deploy.
Misalnya, setelah Anda memigrasikan penampung, edit file services-config.yaml
untuk mengontrol inisialisasi aplikasi ke:
- Menghapus aplikasi dari file
- Tambahkan 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 lebih diutamakan.Untuk variabel lingkungan yang ditetapkan pada 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 formulir:# Comments allowed KEY=VALUE
Jika file teks berisi definisi variabel lingkungan yang menduplikasi definisi yang ditentukan oleh
env
, definisi yang ditentukan olehenv
akan lebih diutamakan.
applications
: Menentukan daftar aplikasi yang akan dimulai saat Anda men-deploy container dan menetapkan properti inisialisasi aplikasi.name
: Menentukan nama aplikasi.type
menentukan jenis aplikasi, sebagai salah satu dari berikut ini:forking
: Menjalankan file yang ditentukan olehstart
tanpa membuat fork. Layanan yang dapat dieksekusi diharapkan akan melakukan fork. Sebaiknya Anda juga menetapkanpidfile
.exec
: Fork untuk menjalankan layanan. Layanan dianggap dimulai setelahexec
dipanggil di file yang dapat dieksekusi.simple
- Sama sepertiexec
. Layanansimple
berperilaku 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 di 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, Migrate to Containers menjalankan perintah
prestart
(jika ada), lalu perintahstart
, dan terakhir perintahpoststart
(jika ada). Jika perintah gagal, dan Anda belum mengonfigurasi perintah tersebut 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
dijalankan setelah fork perintahstart
. Jika tidak, eksekusi akan langsung dijalankan setelah perintahstart
dijalankan.command: Menentukan perintah yang akan dijalankan untuk menjalankan operasi.
shell
(Opsional): Secara default, semua perintah dijalankan di shell/bin/sh
. Anda dapat menetapkanshell
ke/bin/bash
secara opsional.ignore_errors
(Opsional): Jikatrue
, kode keluar dari perintah yang biasanya dianggap gagal akan dicatat, tetapi perintah dianggap berhasil. Nilai defaultnya adalahfalse
.Secara default, Migrate to Containers menetapkan
ignore_errors
ketrue
untuk setiap filesystemd
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
untuk setiap filesystemd
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 dari 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 kapan Anda men-deploy container).duration
: Waktu yang ditentukan menggunakan format durasi. Contoh:
duration: 30m duration: 1sec
on_service_start
: Menentukan daftar durasi, relatif terhadap kapan status aplikasi Anda berubah menjadi aktif.duration
: Waktu yang ditentukan menggunakan format durasi.
on_service_stop
: Menentukan daftar durasi, relatif terhadap kapan 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. Defaultnya adalah 0755, yang berkaitan dengan akses baca dan eksekusi untuk semua orang, dan 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
Anda di editor teks untuk memodifikasi.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
sudah memiliki definisi layanan di 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
Anda di editor teks untuk memodifikasi.Di
services.yaml
, buka atributapplications
:version: v1beta1 env: - name: KEY1 ... applications: ...
Hapus layanan yang diinginkan yang dimulai dengan kolom
name
, diikuti dengan kolom wajib dan opsional lainnya yang sesuai untuk 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.