Skrip startup menjalankan tugas selama proses startup untuk virtual machine (VM). Halaman ini memberikan langkah-langkah yang harus diikuti untuk menggunakan skrip startup di instance VM.
Sebelum memulai
Untuk menggunakan perintah antarmuka command line (CLI) gdcloud, pastikan Anda telah mendownload, menginstal,
dan mengonfigurasi CLI gdcloud.
Semua perintah untuk Distributed Cloud menggunakan CLI gdcloud atau
kubectl, dan memerlukan lingkungan sistem operasi (OS).
Mendapatkan jalur file kubeconfig
Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:
Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.
Gunakan jalur ke file kubeconfig server Management API untuk menggantikan
MANAGEMENT_API_SERVERdalam petunjuk ini.
Meminta izin dan akses
Untuk melakukan tugas yang tercantum di halaman ini, Anda harus memiliki peran Project VirtualMachine Admin. Ikuti langkah-langkah untuk
memverifikasi
akses Anda atau minta Admin IAM Project
menetapkan
peran Project VirtualMachine Admin (project-vm-admin) kepada Anda di namespace
project tempat VM berada.
Meneruskan skrip startup
Anda dapat menggunakan skrip bash atau non-bash sebagai skrip startup. Untuk melakukannya, sertakan #!/bin/… di awal skrip untuk menunjukkan interpreter skrip.
Misalnya, untuk menggunakan skrip startup Python 3, tambahkan #! /usr/bin/python3 ke
awal skrip.
Google Distributed Cloud (GDC) dengan air gap menjalankan skrip startup sesuai urutan
yang muncul dalam array startupScripts.
Tabel berikut menunjukkan format skrip yang akan digunakan berdasarkan ukuran skrip Anda:
| Ukuran skrip | Format skrip |
|---|---|
| Skrip hingga 2048 byte | Hapus teks |
| Skrip yang lebih besar dari 2048 byte | Secret Kubernetes |
Menentukan skrip startup
Untuk menggunakan skrip startup, Anda harus menambahkan kolom startupScripts ke kolom spec
VM. Dalam kolom ini, Anda dapat menentukan beberapa skrip startup sebagai teks
yang jelas atau sebagai secret Kubernetes.
Contoh berikut menentukan skrip startup sebagai teks yang jelas dan secret Kubernetes:
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
name: "my-vm"
spec:
# …
startupScripts:
- name: hello-world
script: |
#!/bin/bash
echo hello
- name: add-user
scriptSecretRef:
name: add-user
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: add-user
data:
script:
IyEvYmluL2Jhc2gKYWRkdXNlciB1c2VyCg==
Tinjau pertimbangan berikut:
- Skrip startup berjalan pada setiap proses booting.
- Skrip startup memiliki hak istimewa root default.
- Dalam rahasia Kubernetes, nama
scriptSecretRefdispecVM harus cocok dengan kolommetadata.name. - Di secret Kubernetes, tentukan konten skrip startup dengan menambahkan kunci
scriptke kolomdata.
Membuat VM baru dengan skrip startup
Petunjuk ini berlaku terlepas dari apa yang Anda gunakan sebagai gambar untuk membuat VM. Selesaikan langkah-langkah berikut:
Untuk membuat skrip startup sebagai secret Kubernetes, jalankan:
cat <<EOF >>FILE_NAME STARTUP_SCRIPT_CONTENT EOFkubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ create secret generic SECRET_NAME \ --from-file=script=FILE_NAMErm FILE_NAMELihat langkah-langkah untuk membuat VM seperti yang dijelaskan di halaman membuat VM. Pada langkah pertama, tambahkan skrip startup ke kolom
specsebelum Anda menjalankan perintah untuk membuat VM.Contoh ini menentukan skrip startup dengan teks biasa dan secret Kubernetes:
apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME namespace: PROJECT spec: # … startupScripts: - name: CLEAR_TEXT_SCRIPT_NAME script: | #!/bin/bash CLEAR_TEXT_SCRIPT - name: SECRET_SCRIPT_NAME scriptSecretRef: name: SECRET_NAMEVariabel ini didefinisikan sebagai berikut:
Variabel Definisi MANAGEMENT_API_SERVERFile kubeconfig server Management API. PROJECTProject Distributed Cloud tempat Anda ingin membuat VM. VM_NAMENama VM. FILE_NAMENama file untuk menyimpan skrip startup. STARTUP_SCRIPT_CONTENTPerintah yang akan dijalankan sebagai bagian dari skrip startup CLEAR_TEXT_SCRIPT_NAMENama skrip startup teks biasa. CLEAR_TEXT_SCRIPTSkrip teks biasa yang Anda tentukan. SECRET_NAMENama secret Kubernetes. SECRET_SCRIPT_NAMENama skrip startup sebagai secret Kubernetes. Lanjutkan dengan langkah-langkah berikut untuk membuat VM.
Berikut adalah contoh cara membuat VM dengan skrip startup yang menambahkan pengguna baru menggunakan secret Kubernetes dan teks biasa.
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ apply -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: VM_BOOT_DISK_NAME spec: source: image: name: BOOT_DISK_IMAGE_NAME namespace: vm-system size: BOOT_DISK_SIZE --- apiVersion: v1 kind: Secret type: Opaque metadata: name: add-user data: script: IyEvYmluL2Jhc2gKYWRkdXNlciB1c2VyCg== --- apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME spec: compute: virtualMachineType: MACHINE_TYPE disks: - virtualMachineDiskRef: name: VM_BOOT_DISK_NAME boot: true autoDelete: BOOT_DISK_AUTO_DELETE startupScripts: - name: add-user scriptSecretRef: name: add-user - name: add-to-sudoers script: | #!/bin/bash usermod -aG sudo user EOFDalam contoh ini, variabel didefinisikan sebagai berikut.
Variabel Definisi MANAGEMENT_API_SERVERFile kubeconfig server Management API. PROJECTProject Distributed Cloud tempat Anda ingin membuat VM. VM_NAMENama VM baru. VM_BOOT_DISK_NAMENama boot disk VM baru. BOOT_DISK_IMAGE_NAMENama image yang akan digunakan untuk boot disk VM baru. BOOT_DISK_SIZEUkuran boot disk, seperti 20G.
Nilai ini harus selalu lebih besar dari atau sama denganminimumDiskSizeimage disk booting.BOOT_DISK_AUTO_DELETEtrueataufalse, yang menunjukkan apakah boot disk otomatis dihapus saat instance VM dihapus.MACHINE_TYPEJenis mesin yang telah ditetapkan untuk VM baru. Untuk memilih jenis mesin yang tersedia, jalankan perintah ini:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
Mengupdate VM yang ada dengan skrip startup
Anda juga dapat memperbarui VM yang ada dengan skrip startup. VM harus dimatikan sebelum Anda melakukan update.
Ikuti langkah-langkah untuk memperbarui properti VM
dan perbarui kolom spec dengan skrip startup yang ingin Anda jalankan.
Melihat output skrip startup
- Ikuti langkah-langkah untuk terhubung ke VM.
Jalankan perintah berikut di dalam VM tamu untuk mendapatkan log skrip startup yang Anda jalankan:
sudo journalctl -u cloud-finalLog skrip startup dimulai dengan:
Started to run the command: /var/lib/google/startup-scripts/<script-name> ...