ALIYUN::ECS::Instance digunakan untuk membuat instance Elastic Compute Service (ECS).
Jenis sumber daya ini tidak lagi diiterasi atau diperbarui. Kami merekomendasikan Anda menggunakan ALIYUN::ECS::InstanceGroup.
Sintaksis
{
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"DedicatedHostId": String,
"Period": Number,
"AutoRenew": String,
"RamRoleName": String,
"IoOptimized": String,
"InternetChargeType": String,
"PrivateIpAddress": String,
"KeyPairName": String,
"SystemDiskDiskName": String,
"PeriodUnit": String,
"Description": String,
"Tags": List,
"HostName": String,
"AutoRenewPeriod": Number,
"ImageId": String,
"ResourceGroupId": String,
"InstanceChargeType": String,
"VSwitchId": String,
"Password": String,
"PasswordInherit": Boolean,
"InstanceType": String,
"SystemDiskCategory": String,
"SubscriptionDeletionForce": Boolean,
"UserData": String,
"SystemDiskSize": Number,
"ZoneId": String,
"InternetMaxBandwidthOut": Integer,
"VpcId": String,
"SpotStrategy": String,
"InstanceName": String,
"DeletionProtection": Boolean,
"DeploymentSetId": String,
"SecurityGroupIds": List,
"SecurityGroupId": String,
"SecurityEnhancementStrategy": String,
"SpotPriceLimit": String,
"HpcClusterId": String,
"AllocatePublicIP": Boolean,
"SystemDiskDescription": String,
"SystemDiskPerformanceLevel": String,
"DiskMappings": List,
"SpotInterruptionBehavior": String,
"ZoneIds": List,
"SpotDuration": Integer,
"CreditSpecification": String,
"PrivatePoolOptions": Map,
"StorageSetId": String,
"HttpTokens": String,
"HttpEndpoint": String,
"Tenancy": String,
"StorageSetPartitionNumber": Integer,
"DeploymentSetGroupNo": Integer,
"Affinity": String,
"UseAdditionalService": Boolean,
"ImageFamily": String
}
}Properti
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
ResourceGroupId | String | Tidak | Ya | ID grup sumber daya. | Tidak ada. |
SpotInterruptionBehavior | String | Tidak | Tidak | Mode interupsi dari instance preemptible. | Atur nilainya ke Terminate. Nilai Terminate menentukan bahwa sistem langsung melepaskan instance preemptible. Nilai default: Terminate. |
ZoneIds | List | Tidak | Tidak | Zona. | Tidak ada. |
SpotDuration | Integer | Tidak | Tidak | Periode perlindungan dari instance preemptible. | Nilai valid: 0 hingga 6. Satuan: jam.
|
SecurityGroupIds | List | Tidak | Tidak | ID grup keamanan. | Anda harus menentukan SecurityGroupId atau SecurityGroupIds. |
ImageId | String | Tidak | Ya | ID gambar. Anda dapat menggunakan gambar publik, gambar kustom, atau gambar dari Alibaba Cloud Marketplace. | Untuk menentukan gambar publik, Anda dapat memasukkan ID gambar sebagian alih-alih ID gambar lengkap. Gambar publik mendukung pencarian fuzzy. Contoh:
|
InstanceType | String | Ya | Ya | Tipe instance ECS. | Untuk informasi lebih lanjut tentang tipe instance ECS, lihat Ikhtisar keluarga instance. |
SecurityGroupId | String | Tidak | Tidak | ID grup keamanan. | Anda harus menentukan SecurityGroupId atau SecurityGroupIds. |
SecurityEnhancementStrategy | String | Tidak | Tidak | Menentukan apakah akan mengaktifkan penguatan keamanan. | Nilai valid:
|
Description | String | Tidak | Ya | Deskripsi. | Deskripsi harus memiliki panjang 2 hingga 256 karakter. |
InstanceName | String | Tidak | Ya | Nama instance ECS. | Nama harus memiliki panjang 2 hingga 128 karakter. Harus dimulai dengan huruf dan tidak boleh dimulai dengan Jika Anda meninggalkan properti ini kosong, ID instance digunakan secara default. |
Password | String | Tidak | Ya | Kata sandi logon instance ECS. | Kata sandi harus memiliki panjang 8 hingga 30 karakter. Harus mengandung setidaknya tiga dari jenis karakter berikut: huruf besar, huruf kecil, angka, dan karakter khusus. Karakter khusus yang didukung adalah: |
PasswordInherit | Boolean | Tidak | Tidak | Menentukan apakah akan menggunakan kata sandi preset dari gambar. | Nilai valid:
Catatan Jika Anda mengatur properti ini ke true, Anda harus meninggalkan Password kosong dan memastikan bahwa gambar yang dipilih memiliki kata sandi preset. |
HostName | String | Tidak | Ya | Nama host instance ECS. | Nama host harus minimal dua karakter panjangnya. Tidak boleh dimulai atau diakhiri dengan titik (.) atau tanda hubung (-). Tidak boleh mengandung titik (.) atau tanda hubung (-) berturut-turut.
|
AllocatePublicIP | Boolean | Tidak | Tidak | Menentukan apakah akan menetapkan alamat IP publik. | Nilai valid:
Catatan Jika Anda mengatur InternetMaxBandwidthOut ke nilai yang lebih besar dari 0, sistem akan menetapkan alamat IP publik. |
PrivateIpAddress | String | Tidak | Tidak | Alamat IP privat instance ECS dalam virtual private cloud (VPC). | Alamat IP yang ditentukan tidak boleh digunakan oleh instance lain dalam VPC. |
InternetChargeType | String | Tidak | Ya | Metode penagihan untuk penggunaan internet. | Nilai valid:
|
InternetMaxBandwidthOut | Integer | Tidak | Ya | Lebar pita keluar publik maksimum. | Nilai valid: 0 hingga 100. Nilai default: 0. Satuan: Mbit/s. |
IoOptimized | String | Tidak | Tidak | Menentukan apakah akan membuat instance yang dioptimalkan I/O. | Nilai valid:
|
DiskMappings | List | Tidak | Ya | Disk data yang ingin Anda lampirkan ke instance ECS. | Anda bisa melampirkan hingga 16 disk data. Untuk informasi lebih lanjut, lihat Sintaksis DiskMappings dan Properti DiskMappings. |
SystemDiskCategory | String | Tidak | Ya | Kategori disk sistem. | Nilai valid:
Untuk instance non-I/O optimized dari tipe instance yang sudah pensiun, nilai defaultnya adalah cloud. Untuk instance dari tipe lain, nilai defaultnya adalah cloud_efficiency. |
SystemDiskDescription | String | Tidak | Tidak | Deskripsi disk sistem. | Tidak ada. |
SystemDiskDiskName | String | Tidak | Tidak | Nama disk sistem. | Nama harus memiliki panjang 2 hingga 128 karakter. Harus dimulai dengan huruf dan tidak boleh dimulai dengan |
SystemDiskSize | Number | Tidak | Ya | Ukuran disk sistem. | Nilai valid: 20 hingga 500. Satuan: GB. Jika Anda menggunakan gambar kustom untuk membuat disk sistem, pastikan ukuran disk sistem lebih besar daripada ukuran gambar kustom. |
Tags | List | Tidak | Ya | Tag kustom yang ingin Anda tambahkan ke instance ECS. | Anda bisa menentukan hingga 20 tag dalam format berikut: Untuk informasi lebih lanjut, lihat Sintaksis Tags dan Properti Tags. |
UserData | String | Tidak | Ya | Data pengguna yang ingin Anda tentukan saat membuat Instance ECS. | Data pengguna bisa maksimal 16 KB ukurannya. Anda tidak perlu mengonversi data menjadi string berkode Base64. Jika data pengguna mengandung karakter khusus, Anda harus menambahkan karakter escape (\) sebelum setiap karakter khusus. |
ZoneId | String | Tidak | Tidak | ID zona. | Tidak ada. |
HpcClusterId | String | Tidak | Tidak | ID kluster Elastic High Performance Computing (E-HPC) tempat instance ECS milik. | Tidak ada. |
VpcId | String | Tidak | Tidak | ID VPC. | Tidak ada. |
VSwitchId | String | Tidak | Tidak | ID vSwitch. | Tidak ada. |
InstanceChargeType | String | Tidak | Tidak | Metode penagihan instance ECS. | Nilai valid:
|
Period | Number | Tidak | Tidak | Siklus penagihan. | Period diperlukan jika InstanceChargeType diatur ke PrePaid. Period opsional jika InstanceChargeType diatur ke PostPaid. |
KeyPairName | String | Tidak | Ya | Nama pasangan kunci yang digunakan untuk logon ke instance ECS. | Untuk instance ECS Windows, Anda bisa mengabaikan KeyPairName. Untuk instance ECS Linux, logon berbasis kata sandi dinonaktifkan selama inisialisasi. Untuk meningkatkan keamanan instance Anda, kami sarankan Anda menggunakan pasangan kunci untuk logon. |
RamRoleName | String | Tidak | Tidak | Nama peran Resource Access Management (RAM) untuk instance ECS. | Untuk informasi lebih lanjut, lihat CreateRole dan ListRoles. |
SpotPriceLimit | String | Tidak | Tidak | Harga maksimum per jam dari instance ECS. | Nilai properti ini bisa mengandung hingga tiga tempat desimal. Properti ini berlaku ketika SpotStrategy diatur ke SpotWithPriceLimit. |
SpotStrategy | String | Tidak | Tidak | Kebijakan penawaran untuk instance bayar sesuai pemakaian. | Anda harus menentukan properti ini ketika InstanceChargeType diatur ke PostPaid. Nilai valid:
|
DedicatedHostId | String | Tidak | Tidak | ID host khusus tempat Anda ingin membuat instance ECS. | Anda dapat memanggil operasi DescribeDedicatedHosts untuk menanyakan ID host khusus. Anda tidak dapat membuat instance preemptible pada host khusus. Jika Anda menentukan properti ini, sistem mengabaikan nilai SpotStrategy dan SpotPriceLimit dalam permintaan. |
PeriodUnit | String | Tidak | Tidak | Unit siklus penagihan instance ECS. | Nilai valid:
|
AutoRenewPeriod | Number | Tidak | Tidak | Periode perpanjangan otomatis. | Anda harus menentukan properti ini ketika AutoRenew diatur ke True.
|
AutoRenew | String | Tidak | Tidak | Menentukan apakah akan mengaktifkan perpanjangan otomatis. | Nilai valid:
Anda harus menentukan properti ini ketika InstanceChargeType diatur ke PrePaid. |
DeletionProtection | Boolean | Tidak | Ya | Menentukan apakah akan mengaktifkan perlindungan penghapusan untuk instance ECS. Anda dapat menggunakan properti ini untuk menentukan apakah Anda dapat menghapus instance dengan menggunakan konsol ECS atau operasi DeleteInstance. | Nilai valid:
Catatan Properti ini hanya berlaku untuk instance bayar sesuai pemakaian. Properti ini dapat melindungi instance dari penghapusan manual tetapi tidak dapat melindungi instance dari penghapusan otomatis. |
DeploymentSetId | String | Tidak | Tidak | ID set penyebaran. | Tidak ada. |
SystemDiskPerformanceLevel | String | Tidak | Ya | Tingkat performa (PL) ESSD yang ingin Anda gunakan sebagai disk sistem. | Nilai valid:
Untuk informasi lebih lanjut tentang cara memilih PL ESSD, lihat ESSDs. |
CreditSpecification
| String | Tidak | Ya | Mode performa dari instance burstable. | Nilai valid: |
PrivatePoolOptions | Peta | Tidak | Tidak | Opsi kolam pribadi yang digunakan untuk memulai Instance ECS. | Untuk informasi lebih lanjut, lihat properti PrivatePoolOptions. |
StorageSetId | String | Tidak | Tidak | ID dari set penyimpanan. | Tidak ada. |
HttpTokens | String | Tidak | Ya | Menentukan apakah akan secara paksa menggunakan mode penguatan keamanan (IMDSv2) untuk mengakses metadata instans. | Nilai yang valid:
Catatan Untuk informasi lebih lanjut tentang mode akses metadata instans, lihat Instance metadata. |
SubscriptionDeletionForce | Boolean | Tidak | Tidak | Properti ini hanya berlaku untuk instance berlangganan. Jika Anda mengatur properti ini ke true untuk instance berlangganan, instance tersebut akan diubah menjadi bayar sesuai pemakaian sebelum instance dihapus secara paksa. Jika Anda mengatur properti ini ke false untuk instance berlangganan, instance tidak akan dihapus secara paksa. Properti ini melibatkan biaya tambahan. Berhati-hatilah saat menentukan properti ini. | Tidak ada. |
HttpEndpoint | String | Tidak | Ya | Menentukan apakah akan mengaktifkan saluran akses untuk metadata instans. | Nilai yang valid:
Catatan Untuk informasi lebih lanjut tentang metadata instans, lihat Instance metadata. |
Tenancy | String | Tidak | Tidak | Menentukan apakah akan membuat Instance ECS pada host khusus. | Nilai yang valid:
|
StorageSetPartitionNumber | Bilangan Bulat | Tidak | Tidak | Jumlah maksimum partisi dalam kumpulan penyimpanan. | Nilai yang valid: bilangan bulat lebih besar dari atau sama dengan 2. |
DeploymentSetGroupNo | Bilangan Bulat | Tidak | Tidak | Nomor kelompok dari kelompok set penyebaran tempat Anda ingin menerapkan instance. Jika set penyebaran yang ditentukan oleh DeploymentSetId menggunakan strategi kelompok ketersediaan tinggi (AvailabilityGroup), Anda dapat menggunakan DeploymentSetGroupNo untuk menentukan kelompok set penyebaran dalam set penyebaran tersebut. | Nilai valid: 1 hingga 7. |
Afinitas | String | Tidak | Tidak | Menentukan apakah akan mengaitkan Instance ECS pada host khusus dengan host khusus tersebut. | Nilai yang valid:
|
GunakanLayananTambahan | Boolean | Tidak | Tidak | Menentukan apakah akan menggunakan konfigurasi sistem untuk mesin virtual. Alibaba Cloud menyediakan konfigurasi sistem Network Time Protocol (NTP) dan Key Management Service (KMS) untuk Windows serta konfigurasi sistem NTP dan Yellowdog Updater, Modified (YUM) untuk Linux. | Nilai yang valid:
|
ImageFamily | String | Tidak | Tidak | Nama dari keluarga gambar. | Anda dapat menentukan properti ini untuk menanyakan gambar paling baru yang tersedia yang termasuk dalam keluarga gambar tertentu dan menggunakan gambar tersebut untuk membuat instance.
Catatan Untuk informasi lebih lanjut tentang keluarga gambar yang terkait dengan gambar resmi Alibaba Cloud, lihat Ikhtisar. |
Sintaksis DiskMappings
"DiskMappings": [
{
"Category": String,
"DiskName": String,
"Description": String,
"Device": String,
"SnapshotId": String,
"PerformanceLevel": String,
"Size": String
}
]Properti DiskMappings
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Size | String | Ya | Tidak | Ukuran disk data. | Nilai valid: 20 hingga 500. Satuan: GB. |
Category | String | Tidak | Tidak | Kategori disk data. | Nilai valid:
Untuk instance dioptimalkan I/O, nilai defaultnya adalah cloud_efficiency. Untuk instance non-I/O optimized, nilai defaultnya adalah cloud. Jika gambar kustom berisi disk data, Anda dapat mengubah kategori disk dengan mengatur Kategori ke kategori disk data yang diinginkan dalam template ROS saat Anda membuat instance ECS. Contoh template: |
DiskName | String | Tidak | Tidak | Nama disk data. | Nama harus memiliki panjang 2 hingga 128 karakter. Harus dimulai dengan huruf dan tidak boleh dimulai dengan |
Description | String | Tidak | Tidak | Deskripsi. | Deskripsi harus memiliki panjang 2 hingga 256 karakter, dan tidak boleh dimulai dengan |
Device | String | Tidak | Tidak | Target mount. | Tidak ada. |
PerformanceLevel | String | Tidak | Tidak | PL dari ESSD yang ingin Anda gunakan sebagai disk data. | Nilai valid:
Untuk informasi lebih lanjut tentang cara memilih PL ESSD, lihat ESSDs. |
SnapshotId | String | Tidak | Tidak | ID snapshot yang ingin Anda gunakan untuk disk data. | Tidak ada. |
Sintaksis Tags
"Tags": [
{
"Value": String,
"Key": String
}
]Properti Tags
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Key | String | Ya | Tidak | Kunci tag. | Kunci harus memiliki panjang 1 hingga 128 karakter, dan tidak boleh mengandung |
Value | String | Tidak | Tidak | Nilai tag. | Nilai bisa maksimal 128 karakter panjangnya, dan tidak boleh mengandung |
Sintaksis PrivatePoolOptions
"PrivatePoolOptions": [
{
"Id": String,
"MatchCriteria": String
}
]Properti PrivatePoolOptions
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Id | String | Tidak | Tidak | ID kolam pribadi. ID kolam pribadi sama dengan ID jaminan elastisitas atau reservasi kapasitas tempat kolam pribadi dibuat. | Tidak ada. |
MatchCriteria | String | Tidak | Tidak | Jenis kolam pribadi yang digunakan untuk memulai instance ECS. Kolam pribadi dibuat setelah jaminan elastisitas atau reservasi kapasitas berlaku. | Nilai valid:
PrivatePoolOptions.MatchCriteria harus diatur ke
|
Nilai Pengembalian
Fn::GetAtt
InstanceId: ID instance ECS. ID instance adalah GUID yang dihasilkan oleh sistem untuk instance.
PrivateIp: Alamat IP privat instance ECS dalam VPC.
InnerIp: Alamat IP privat instance ECS dalam jaringan klasik.
PublicIp: Alamat IP publik instance ECS dalam jaringan klasik.
ZoneId: ID zona.
HostName: Nama host instance ECS.
PrimaryNetworkInterfaceId: ID antarmuka jaringan elastis utama (ENI).
SecurityGroupIds: ID grup keamanan tempat instance ECS milik.
Contoh
Kode sampel berikut menunjukkan cara membuat instance ECS OpsEcsInstance dan ProdEcsInstance serta mengonfigurasi logon tanpa kata sandi untuk instance OpsEcsInstance pada instance ProdEcsInstance.
Untuk menerima sinyal hasil eksekusi skrip user-data dari instance ECS, Anda dapat mengonfigurasi ALIYUN::ROS::WaitCondition dan ALIYUN::ROS::WaitConditionHandle. Untuk informasi lebih lanjut, lihat ALIYUN::ROS::WaitConditionHandle dan ALIYUN::ROS::WaitCondition.
ROSTemplateFormatVersion: '2015-09-01'
Description: Membuat instance ECS VPC
Metadata: {}
Parameters:
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
en: Silakan cari ID yang dimulai dengan (vpc-xxx) dari konsol-Virtual Private Cloud
Label:
en: ID VPC
VSwitchZoneId:
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Type: String
Description:
en: ID Zona.<b>Catatan:<font color='blue'>Sebelum Anda menentukan ID zona, periksa apakah spesifikasi instance ECS tersedia di zona tersebut. Kami sarankan Anda memilih zona tempat vSwitch yang ditentukan tidak berada.</font>
Label:
en: Zona Ketersediaan VSwitch
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${VSwitchZoneId}
Type: String
Description:
en: ID instance saklar jaringan bisnis yang ada, konsol-Virtual Private Cloud-Switches V bawah query
Label:
en: ID VSwitch
SecurityGroupId:
Type: String
AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
AssociationPropertyMetadata:
VpcId: ${VpcId}
Description:
en: Silakan cari ID grup keamanan bisnis yang dimulai dengan(sg-xxx)dari konsol-ECS-Jaringan & Keamanan
Label:
en: ID Grup Keamanan Bisnis
InstanceType:
Type: String
Description:
en: Isi spesifikasi yang tersedia di bawah zona ketersediaan VSwitch.
Label:
en: Tipe Instance
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
SystemDiskCategory:
Type: String
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
InstanceType: ${InstanceType}
Label:
en: Jenis Disk Sistem
Description:
en: '<font color=''blue''></font><br>[cloud_efficiency: <font color=''green''>Disk Cloud Efisien</font>]<br>[cloud_ssd: <font color=''green''>Disk SSD Cloud</font>]<br>[cloud_essd: <font color=''green''>Disk ESSD Cloud</font>]<br>[cloud: <font color=''green''>Disk Cloud</font>]<br>[ephemeral_ssd: <font color=''green''>Disk SSD Lokal Cloud</font>]'
SystemDiskSize:
Default: 40
Type: Number
Description:
en: Ukuran disk sistem, rentang nilai: 40-500, satuan: GB.
Label:
en: Ruang Disk Sistem
Resources:
OpsEcsInstance:
Type: ALIYUN::ECS::Instance
Properties:
HostName: OpsEcsInstance
UserData:
Fn::Sub:
- |
#!/bin/bash
RootPassword=${RootPassword}
ProdIP=${ProdIP}
SSHConfig() {
echo '[ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa &>/dev/null' >> /tmp/auto_ssh.sh
echo 'while read line;do' >> /tmp/auto_ssh.sh
echo ' ip=`echo $line | cut -d " " -f1`' >> /tmp/auto_ssh.sh
echo ' user_name=`echo $line | cut -d " " -f2`' >> /tmp/auto_ssh.sh
echo ' pass_word=`echo $line | cut -d " " -f3`' >> /tmp/auto_ssh.sh
echo 'expect <<EOF' >> /tmp/auto_ssh.sh
echo ' spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user_name@$ip' >> /tmp/auto_ssh.sh
echo ' expect {' >> /tmp/auto_ssh.sh
echo ' "yes/no" { send "yes\n";exp_continue}' >> /tmp/auto_ssh.sh
echo ' "password" { send "$pass_word\n"}' >> /tmp/auto_ssh.sh
echo ' }' >> /tmp/auto_ssh.sh
echo ' expect eof' >> /tmp/auto_ssh.sh
echo 'EOF' >> /tmp/auto_ssh.sh
echo 'done < /tmp/host_ip.txt' >> /tmp/auto_ssh.sh
}
SetHostsConfig() {
echo "`ifconfig eth0 | awk '/inet /{print $2}'` root ${RootPassword}" >> /tmp/host_ip.txt
echo "${ProdIP} root ${RootPassword}" >> /tmp/host_ip.txt
sh /tmp/auto_ssh.sh
}
main() {
yum install -y expect
SSHConfig
SetHostsConfig
rm -rf /tmp/host_ip.txt
}
main
- ProdIP:
Fn::GetAtt:
- ProdEcsInstance
- PrivateIp
RootPassword: Admin@123!
VpcId:
Ref: VpcId
SecurityGroupId:
Ref: SecurityGroupId
VSwitchId:
Ref: VSwitchId
ImageId: centos_7
AllocatePublicIP: false
InstanceType:
Ref: InstanceType
SystemDiskSize: 40,
SystemDiskCategory:
Ref: SystemDiskCategory
Password: Admin@123!
ProdEcsInstance:
Type: ALIYUN::ECS::Instance
Properties:
HostName: ProdEcsInstance
SystemDiskCategory:
Ref: SystemDiskCategory
VpcId:
Ref: VpcId
SecurityGroupId:
Ref: SecurityGroupId
SystemDiskSize: 40
ImageId: centos_7
VSwitchId:
Ref: VSwitchId
Password: Admin@123!
InstanceType:
Ref: InstanceType
AllocatePublicIP: false
Outputs: {}
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Membuat instance ECS VPC",
"Metadata": {},
"Parameters": {
"VpcId": {
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
"Type": "String",
"Description": {
"en": "Silakan cari ID yang dimulai dengan (vpc-xxx) dari konsol-Virtual Private Cloud",
},
"Label": {
"en": "VPC ID",
}
},
"VSwitchZoneId": {
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Type": "String",
"Description": {
"en": "ID Zona.<b>Catatan:<font color='blue'>Sebelum Anda menentukan ID zona, periksa apakah spesifikasi instance ECS tersedia di zona tersebut. Kami sarankan Anda memilih zona di mana vSwitch yang ditentukan tidak berada.</font>"
},
"Label": {
"en": "Zona Ketersediaan VSwitch"
}
},
"VSwitchId": {
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}",
"ZoneId": "${VSwitchZoneId}"
},
"Type": "String",
"Description": {
"en": "ID instance dari switch jaringan bisnis yang ada, konsol-Virtual Private Cloud-VSwitches di bawah pencarian",
},
"Label": {
"en": "VSwitch ID",
}
},
"SecurityGroupId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}"
},
"Description": {
"en": "Silakan cari ID grup keamanan bisnis yang dimulai dengan(sg-xxx)dari konsol-ECS-Jaringan & Keamanan",
},
"Label": {
"en": "ID Grup Keamanan Bisnis",
}
},
"InstanceType": {
"Type": "String",
"Description": {
"en": "Isi spesifikasi yang dapat digunakan di bawah zona ketersediaan VSwitch."
},
"Label": {
"en": "Tipe Instance"
},
"AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
"AssociationPropertyMetadata": {
"ZoneId": "${VSwitchZoneId}"
}
},
"SystemDiskCategory": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory",
"AssociationPropertyMetadata": {
"ZoneId": "${VSwitchZoneId}",
"InstanceType": "${InstanceType}"
},
"Label": {
"en": "Tipe Disk Sistem",
},
"Description": {
"en": "<font color='blue'></font><br>[cloud_efficiency: <font color='green'>Efficient Cloud Disk</font>]<br>[cloud_ssd: <font color='green'>SSD Cloud Disk</font>]<br>[cloud_essd: <font color='green'>ESSD Cloud Disk</font>]<br>[cloud: <font color='green'>Cloud Disk</font>]<br>[ephemeral_ssd: <font color='green'>Local SSD Cloud Disk</font>]",
}
},
"SystemDiskSize": {
"Default": 40,
"Type": "Number",
"Description": {
"en": "Ukuran disk sistem, rentang nilai: 40-500, satuan: GB."
},
"Label": {
"en": "Ruang Disk Sistem"
}
}
},
"Resources": {
"OpsEcsInstance": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"HostName": "OpsEcsInstance",
"UserData": {
"Fn::Sub": [
"#!/bin/bash\nRootPassword=${RootPassword}\nProdIP=${ProdIP}\nSSHConfig() {\necho '[ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa &>/dev/null' >> /tmp/auto_ssh.sh\necho 'while read line;do' >> /tmp/auto_ssh.sh\necho ' ip=`echo $line | cut -d \" \" -f1`' >> /tmp/auto_ssh.sh\necho ' user_name=`echo $line | cut -d \" \" -f2`' >> /tmp/auto_ssh.sh\necho ' pass_word=`echo $line | cut -d \" \" -f3`' >> /tmp/auto_ssh.sh\necho 'expect <<EOF' >> /tmp/auto_ssh.sh\necho ' spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user_name@$ip' >> /tmp/auto_ssh.sh\necho ' expect {' >> /tmp/auto_ssh.sh\necho ' \"yes/no\" { send \"yes\\n\";exp_continue}' >> /tmp/auto_ssh.sh\necho ' \"password\" { send \"$pass_word\\n\"}' >> /tmp/auto_ssh.sh\necho ' }' >> /tmp/auto_ssh.sh\necho ' expect eof' >> /tmp/auto_ssh.sh\necho 'EOF' >> /tmp/auto_ssh.sh\necho 'done < /tmp/host_ip.txt' >> /tmp/auto_ssh.sh\n}\nSetHostsConfig() {\necho \"`ifconfig eth0 | awk '/inet /{print $2}'` root ${RootPassword}\" >> /tmp/host_ip.txt\necho \"${ProdIP} root ${RootPassword}\" >> /tmp/host_ip.txt\nsh /tmp/auto_ssh.sh\n}\nmain() {\nyum install -y expect\nSSHConfig\nSetHostsConfig\nrm -rf /tmp/host_ip.txt\n}\nmain\n",
{
"ProdIP": {
"Fn::GetAtt": [
"ProdEcsInstance",
"PrivateIp"
]
},
"RootPassword": "Admin@123!"
}
]
},
"VpcId": {
"Ref": "VpcId"
},
"SecurityGroupId": {
"Ref": "SecurityGroupId"
},
"VSwitchId": {
"Ref": "VSwitchId"
},
"ImageId": "centos_7",
"AllocatePublicIP": false,
"InstanceType": {
"Ref": "InstanceType"
},
"SystemDiskSize": 40,
"SystemDiskCategory": {
"Ref": "SystemDiskCategory"
},
"Password": "Admin@123!"
}
},
"ProdEcsInstance": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"HostName": "ProdEcsInstance",
"SystemDiskCategory": {
"Ref": "SystemDiskCategory"
},
"VpcId": {
"Ref": "VpcId"
},
"SecurityGroupId": {
"Ref": "SecurityGroupId"
},
"SystemDiskSize": 40,
"ImageId": "centos_7",
"VSwitchId": {
"Ref": "VSwitchId"
},
"Password": "Admin@123!",
"InstanceType": {
"Ref": "InstanceType"
},
"AllocatePublicIP": false
}
}
},
"Outputs": {}
}