Fitur Image Builder menyesuaikan konten gambar menggunakan template gambar. Anda dapat menentukan komponen gambar atau langsung menentukan perintah untuk membuat template gambar. Komponen gambar terdiri dari satu atau lebih perintah, yang merupakan unit terkecil dalam sebuah template gambar. Topik ini menjelaskan sintaksis dan memberikan contoh perintah umum yang didukung oleh Image Builder.
Sintaksis Perintah
Image Builder mendukung perintah dalam format YAML Ain't Markup Language (YAML) untuk sistem operasi Linux dan Windows serta perintah dalam format DockerFile hanya untuk sistem operasi Linux.
Perintah dalam format DockerFile kurang fleksibel dan memiliki batasan pada sistem operasi. Kami merekomendasikan penggunaan format YAML.
Berikut adalah persyaratan sintaksis untuk perintah dalam format YAML dan DockerFile:
YAML: Anda harus mendefinisikan bidang
ParametersdanTasks. Sintaksis:Parameters: # (Opsional) Tentukan parameter kustom. param1: # (Wajib) Tentukan nama parameter. Type: String # (Wajib) Tentukan tipe parameter. Nilai valid: String, Number, dan Boolean. DefaultValue: nilaiDefault # (Opsional) Konfigurasikan nilai default dari parameter. Jika parameter tidak memiliki nilai default, Anda harus secara eksplisit memasukkan parameter ke dalam template gambar yang berisi komponen gambar di mana parameter tersebut disertakan. Tasks: # Tentukan daftar tugas dari komponen gambar, yang berisi setidaknya satu tugas. Tugas dalam daftar tugas dieksekusi secara berurutan. - Name: namaTugas1 # (Wajib) Tentukan nama tugas. Action: RunShellCommand # (Wajib) Tentukan aksi tugas. Untuk informasi lebih lanjut, lihat perintah komponen dalam format YAML. Properties: # Tentukan properti aksi. Properti bervariasi berdasarkan aksi. commandContent: echo {{ param1 }} # Referensikan parameter kustom. - Name: namaTugas2 Action: aksi2 Properties: aksi2Properti1: {{ stdout.namaTugas1 }} # Referensikan keluaran dari tugas namaTugas1.CatatanAnda dapat mereferensikan parameter sebelumnya sebagai properti di bidang Tasks. Contoh kode berikut menunjukkan sintaksis referensi:
{{taskName1.stdout}}DockerFile
Setiap baris hanya boleh berisi satu perintah atau bagian dari satu perintah.
Satu perintah dapat dibagi menjadi beberapa baris. Tambahkan karakter escape (\) di akhir setiap baris kecuali baris terakhir.
Perintah yang Didukung oleh Image Builder
Berikut ini menjelaskan sintaksis perintah yang didukung oleh komponen gambar saat menggunakan Image Builder untuk membuat komponen gambar di konsol Elastic Compute Service (ECS) dan melalui pemanggilan API.
Perintah komponen yang didukung oleh konsol ECS dan operasi API
(Direkomendasikan) Format YAML
Perintah | Sintaksis atau contoh | Deskripsi | Keluaran |
RunShellCommand | |
| |
RunPowerShellCommand | |
| |
InvokeCommand | | Perintah ini digunakan untuk menjalankan perintah umum. | |
OSSDownload | |
| Tidak ada. |
OSSUpload | |
| |
WebDownload | | Perintah ini digunakan untuk mengunduh file dari jaringan. | |
Reboot | | Perintah ini digunakan untuk me-restart instance ECS. |
Format DockerFile
Perintah | Sintaksis atau contoh | Deskripsi |
RESTART |
|
|
RUN | |
|
ENV |
|
Catatan Tanda kutip ganda (") diperlukan sebelum dan sesudah nilai setiap variabel sistem dalam perintah. Contoh: |
WORKDIR |
| Perintah ini digunakan untuk menentukan direktori kerja. |
COPY |
| Perintah ini digunakan untuk menyalin file. Catatan File jaringan harus diunduh menggunakan utilitas |
USER |
| Perintah ini digunakan untuk menentukan nama pengguna akun yang digunakan untuk menjalankan perintah. Catatan Ganti variabel |
LABEL | |
|
CMD |
| Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem. |
ENTRYPOINT |
| Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem. Catatan Perintah |
Perintah Template dalam format DockerFile (hanya didukung oleh operasi API)
Perintah | Sintaksis atau contoh | Deskripsi |
COMPONENT |
| Perintah ini digunakan untuk menentukan komponen gambar. Anda dapat menentukan komponen sistem atau komponen kustom.
|
RESTART |
|
|
RUN | |
|
ENV |
|
Catatan Tanda kutip ganda (") diperlukan sebelum dan sesudah nilai setiap variabel sistem dalam perintah. Contoh: |
WORKDIR |
|
|
COPY |
|
Catatan File jaringan harus diunduh menggunakan utilitas |
USER |
|
Catatan Ganti variabel |
LABEL | |
|
CMD |
|
|
ENTRYPOINT |
|
Catatan Perintah |
Contoh Perintah
Berikut ini memberikan contoh perintah komponen dan template berdasarkan skenario.
Perintah Komponen
Contoh 1: Gunakan parameter input kustom dalam komponen gambar
Pada contoh ini, fungsi (3x+2y+z)+(3x+2y+z) ditambahkan ke dalam komponen gambar. Setiap kali komponen digunakan untuk membuat template gambar, nilai x, y, dan z berbeda. Contoh kode berikut menunjukkan perintah komponen. Untuk informasi tentang contoh template yang sesuai, lihat bagian Contoh 1: Asosiasikan template gambar dengan komponen gambar yang berisi parameter input kustom dan tetapkan nilai untuk parameter input dari topik ini.
Parameters:
x:
Type: String
y:
Type: String
z:
Type: String
Tasks:
- Name: hitung
Action: RunShellCommand
Properties:
commandContent: echo $((3 * {{x}} + 2 * {{y}} + {{z}}))
- Name: hasil
Action: RunShellCommand
Properties:
commandContent: echo $(({{stdout.hitung}}+{{stdout.hitung}}))Contoh 2: Tentukan file skrip yang disimpan dalam bucket OSS dalam komponen gambar
Tentukan file skrip Linux yang disimpan dalam bucket Object Storage Service (OSS) dalam komponen gambar untuk pembuatan gambar. Ini memudahkan pembuatan beberapa instance ECS dengan konfigurasi yang sama dari gambar yang sama di perusahaan. Komponen gambar mencakup tindakan OSSDownload dan OSSUpload. Anda tidak perlu menentukan pasangan AccessKey dalam teks biasa di dalam kode komponen.
Tasks:
- Name: ossdownload
Action: OSSDownload
Properties:
bucketName: <Nama bucket OSS>
destinationDir: /home
objectName: <File skrip yang disimpan dalam bucket OSS>
- Name: setpermissions
Action: RunShellCommand
Properties:
commandContent: sudo chmod +x /home/<File skrip yang disimpan dalam bucket OSS>
- Name: createfile
Action: RunShellCommand
Properties:
commandContent: sudo touch /home/output.txt
- Name: setfilepermissions
Action: RunShellCommand
Properties:
commandContent: sudo chmod 666 /home/output.txt
- Name: hasil
Action: RunShellCommand
Properties:
commandContent: sudo bash /home/<File skrip yang disimpan dalam bucket OSS> &> /home/output.txt
- Name: ossupload
Action: OSSUpload
Properties:
bucketName: <Nama bucket OSS>
fileToUpload: /home/output.txt
objectName: output.txtPerintah Template
Contoh 1: Asosiasikan template gambar dengan komponen gambar yang berisi parameter input kustom dan tetapkan nilai untuk parameter input
Tetapkan nilai untuk x, y, dan z dalam komponen gambar yang dibuat di Contoh 1: Gunakan parameter input kustom dalam komponen gambar. Setiap kali Anda menjalankan perintah template, Anda dapat menetapkan nilai berbeda untuk x, y, dan z.
COMPONENT i-xxxxxxxxx --x 1 --y 2 --z 3Contoh 2: Secara otomatis asosiasikan template gambar dengan versi terbaru dari komponen gambar
Jika komponen gambar memiliki beberapa versi, seperti 1.0.1, 1.0.2, dan 1.0.3, Anda dapat menentukan versi fuzzy 1.0.* dalam perintah template untuk secara otomatis mengasosiasikan template dengan versi komponen terbaru, yaitu 1.0.3.
COMPONENT acs:ecs:ap-southeast-1:<ID akun Alibaba Cloud>:imagecomponent/<Nama komponen gambar yang berisi parameter input kustom>/1.0.*