Akaun Perusahaan Awan Microsoft Azure: Gunakan Bicep / Terraform selama 10 minit untuk menggunakan persekitaran rangkaian standard di Azure dengan satu klik
Dalam operasi dan penyelenggaraan pengkomputeran awan moden, terdapat pemandangan rollover "merekrut syarikat" yang sangat klasik:
Arkitek syarikat telah bekerja keras untuk merancang satu set rancangan segmen rangkaian yang mematuhi peraturan keselamatan, yang akan dilaksanakan oleh operasi dan penyelenggaraan. Akibatnya, operasi dan penyelenggaraan log masuk ke konsol portal Azure, menghadap borang yang padat, periksa dengan mata kasar dan klik tetikus. Selepas setengah jam, secara tidak sengaja meletakkan segmen rangkaian utama
/16
Salah memukul
/24
, Atau membalikkan susunan peraturan kemasukan Kumpulan Keselamatan Rangkaian (NSG). Hasilnya ialah:
Mesin maya yang digunakan kemudian sama ada terputus sepenuhnya, atau secara langsung mendedahkan pangkalan data teras ke rangkaian awam, dan memerlukan lebih dari setengah hari untuk menyelesaikan penyebabnya.
Kaedah operasi dan penyelenggaraan ini, yang hanya bergantung pada daging manusia untuk "menunjukkan negara" di laman web, disebut "jentolak manual" dalam industri. Bukan sahaja tidak cekap, yang paling mematikan adalah
Tidak dapat menyalin sama sekali
。 Sekiranya anda perlu mengklon satu salinan persekitaran yang sama dalam ujian, pra-produksi, dan persekitaran pengeluaran, sukar bagi anda untuk menjamin bahawa anda mengklik tetikus beratus kali tetapi tidak ada yang salah.
Untuk mengakhiri operasi dan penyelenggaraan bengkel yang tidak cekap dan berisiko tinggi ini, infrastruktur sebagai kod (IaC,Infrastructure as Code) muncul. Dalam ekosistem Microsoft Cloud (Azure), terdapat dua senjata pengaturcaraan IaC yang dominan:
Salah satunya ialah Bicep (bahasa DSL deklaratif moden), anak lelaki Microsoft, dan yang lain adalah Terraform, standard industri lama.
Logik asas mereka sangat tegar:
Gunakan kod untuk "melukis" topologi rangkaian anda.
Anda hanya perlu menulis fail teks kecil yang menentukan apa yang anda perlukan. Kemudian satu baris perintah didorong ke awan, dan otak pengaturan automatik Azure akan membina bangunan tinggi untuk anda pada tahap piksel dalam 1 minit, dan dengan serta-merta menghasilkan persekitaran rangkaian asas yang memenuhi standard pengeluar utama.
Hari ini kita menolak konsep yang membosankan dan terus memasuki konfrontasi pertempuran tegar. Kami akan menggunakan
Bicep
Dan
Terraform
Dalam dua genre ini, tangan akan membawa anda dengan satu set kod standard, dan satu set standard perusahaan yang mengandungi "1 VNet (rangkaian maya) 2 subnet bebas dan 1 kumpulan keselamatan rangkaian pertahanan tinggi" akan dikimpal di awan dalam 10 minit. Rangkaian asas.
Tahap pertama: pembongkaran mendalam, "model tiga dimensi" rangkaian standard
Sebelum menulis kod, anda mesti menjelaskan secara menyeluruh topologi fizikal rangkaian asas yang ingin kami gunakan. Satu set asas rangkaian Azure peringkat perusahaan yang berkelayakan tidak semestinya hanya membuka VNet, ia mesti memenuhi seni bina pengasingan yang paling asas:
Virtual Network (VNet): Ini adalah kerajaan bebas eksklusif anda di Azure, yang secara fizikal diasingkan dari rangkaian awam luar. Kami merancang segmen rangkaian sebagai segmen rangkaian dalaman kilang besar standard: 10.0.0.0/16.
Subnet bebas depan dan belakang (Subnet): Dua kedudukan mesti dipotong secara mendatar di dalam casis besar, masing-masing menjalankan tugasnya, pengasingan fizikal: Kami
B Subnet-Frontend (Subnet-Frontend): Segmen rangkaian terbahagi kepada 10.0.1.0/24, yang akan digunakan khas untuk memasang aplikasi web awam atau pengimbang beban pada masa akan datang. Subnet-Backend DB (Subnet-Backend): Segmen rangkaian terbahagi kepada 10.0.2.0/24. Pada masa akan datang, ia akan menyimpan pangkalan data teras atau perkhidmatan back-end yang sensitif, memotong akses langsung dari rangkaian luaran.
Pengawal pertahanan tinggi: Kumpulan Keselamatan Rangkaian (NSG): Ini adalah firewall yang diedarkan yang tersekat di pintu masuk subnet. Kita harus menulis peraturan cap keselamatan: hanya lalu lintas 443(HTTPS) dan 80(HTTP) rangkaian awam yang dibenarkan memasuki subnet front-end, dan semua yang lain dipintas secara fizikal secara langsung di tempat.
Tahap kedua: Genre One-Microsoft Bicep Blitz
Sekiranya anda adalah pasukan keluarga Microsoft yang murni, anda tidak perlu memasang alat konfigurasi pihak ketiga. Azure Order Tools (Azure CLI) pada asalnya memahami Bicep 100%. Ia tidak mempunyai fail status yang rumit (Fail Negara) untuk penyelenggaraan, dan sintaksnya bersih seperti air jernih.
Di komputer tempatan, buat yang baru bernama
Utama. bicep
Fail, hantarkan templat pengeluaran definisi tinggi berikut secara langsung:
// 1. Tentukan parameter statik global untuk memudahkan penamaan semula satu klik pada masa akan datang
Param location string = resourceGroup().location
Param vnetName string = 'vnet-core-prod'
Param nsgName string = 'nsg-web-firewal'
// 2. Naik dari tanah: sediakan penjaga pintu (kumpulan keselamatan rangkaian)
Sumber nsg 'Microsoft.Network/networkSecurityGroups @ 2023-11-01 '= {
Name: nsgName
Location: location
Sifat: {
SecurityRules: [
{
Name: 'Allow-HTTPS-Inbound'
Sifat: {
Priority: 10
0 // Keutamaan tertinggi
Protocol: 'Tcp'
Akses: 'Allow'
Arahan: 'Inbound'
SourceAddressPrefix: '*' // dari mana-mana sahaja di dunia
SourcePortRange: '*'
DestinationAddressPrefix: '*'
DestinationPortRange: '443' // Pelepasan tepat 443 port pertahanan tinggi
}
}
]
}
}
// 3. Pergerakan Besar Alam Semesta: Buat rangkaian maya casis besar, potong dua subnet, dan ikat paman ke rangkaian terminal depan pada masa yang sama
Sumber vnet 'Microsoft.Network/virtualNetworks @ 2023-11-01 '= {
Name: vnetName
lokasi: lokasi
harta benda: {
AdressSpace: {
AdressPrefixes: [
'10.0.0.0/16 '// segmen rangkaian teras besar
]
}
Subnet: [
{
Name: 'Subnet-Frontend'
harta benda: {
AdressPrefix: '10.0.1.0/24 '// kedudukan depan
NetworkSecurityGroup: {
Id: nsg.id // Ambil gambar firewall NSG secara langsung di subnet ini
}
}
}
{
Nama: 'Subnet-Backmend'
harta benda: {
AdressPrefix: '10.0.2.0/24 '// Kedudukan rahsia pangkalan data belakang
}
}
]
}
}
Arahan angkat satu kekunci 30 saat (Bicep)
Buka terminal tempatan anda, log masuk ke akaun Azure anda, dan tentukan kumpulan sumber yang anda bina (mis.
Rg-infra-prod
), Ketik arahan ringkas yang luar biasa ini:
Bash
Az deployment group create-regource-group rg-infra-prod-template file main.bicep
Setelah mengetuk Enter, tinggalkan papan kekunci dengan kedua tangan. Anda akan melihat bar kemajuan berkelip di terminal. Selepas kira-kira 20 saat, konsol akan mengembalikan serangkaian laporan kejayaan JSON yang padat.
Pada masa ini, jika anda log masuk ke latar belakang laman web Azure untuk memuat semula, anda akan mendapati bahawa VNet telah terbaring di sana dengan rapi, kedua-dua subnet dan NSG terikat dengan titisan, dan format dan piksel yang dirancang dalam kod sama persis.
Tahap ketiga: genre dua-industri ini tidak lama, gelung tertutup kelas industri Terraform
Sekiranya syarikat anda mempunyai seni bina yang mendung, kecuali Azure
Juga mengenai AWS atau Alibaba Cloud, maka standard platinum kelas industri yang diiktiraf oleh industri masih merupakan keluarga HashiCorp
Terraform
。
Di komputer tempatan, buat direktori kosong baru dan buat direktori bernama
main.tf
Fail tersebut. Terraform menggunakan sintaks HCL klasik dengan logik yang sedikit lebih tebal, tetapi kerana mekanisme kunci keadaan yang kuat, ia stabil seperti gunung dalam kolaborasi pasukan besar: #1. Nyatakan kod penyambung: Kami ingin memanggil pemacu rasmi Microsoft Azure (Provider)
terraform {
pembekal_wajib {
Azurerm = {
Sumber = "hashicorp/azurerm"
versi = "~>" 3.0"
}
}
}
Provider "azurerm" {
Features {} # mesti menyatakan secara eksplisit ciri pembukaan
}
#2. Kandang: Nyatakan bahawa kita ingin menanam rangkaian dalam kumpulan sumber yang ada
Data "azurerm_resource_group" "core_rg" {
Nama = "rg-infra-prod"
}
#3. Perisai pemutus: mewujudkan Kumpulan Keselamatan Rangkaian Pertahanan Tinggi (NSG)
Sumber "azurerm_network_security_group" "web_nsg" {
Nama = "nsg-web-firewall"
Lokasi = data.azurerm_resource_group.core_rg.location
Resource_group_name = data.azurerm_resource_group.core_rg.name
Security_rule {
Name & nbs
P; = "Allow-HTTPS-Inbound"
Priority = 100
Arahan = "Inbound"
Akses = "Allow"
Protocol = "Tcp"
Source_port_range = "*"
Destination_port_range = "443"
Source_adress_prefix = "*"
Destination_adress_prefix = "*"
}
}
#4. Membuka casis besar: mewujudkan rangkaian maya (VNet)
Sumber "azurerm_virtual_network" "core_vnet" {
Nama = "vnet-core-prod"
lokasi = data.azurerm_resource_group.core_rg.lokasi
Resource_group_name = da
Ta. azurerm_resource_group.core_rg.name
Adress_space = ["10.0.0.0/16"]
}
#5. Pemecatan tepat: potong subnet hujung depan secara manual dan ikat dengan NSG
Sumber "azurerm_subnet" "sub_frontend" {
Nama = "Subnet-Frontend"
nama_kumpulan_sumber = data.azurerm_resource_group.core_rg.name
Virtual_network_name = azurerm_virtual_network.core_vnet.name
Adress_prefixes = ["10.0.1.0/24"]
}
Sumber "azurerm_subnet_network_security_group_association" "bind_nsg" {
Subnet_id = azurerm_subnet.sub_frontend.id
Network_security_group_id = azurerm_network_security_group.web_nsg.id
}
#6. Pemecatan tepat: memotong subnet hujung belakang intranet tulen secara manual
Sumber "azurerm_subnet" "sub_backend" {
Nama = "Subnet-Backend"
nama_kumpulan_sumber = data.azurerm_resource_group.core_rg.name
Virtual_network_name = azu
Rerm_virtual_network.core_vnet.name
Adress_prefixes = ["10.0.2.0/24"]
}
Arahan pendaratan satu klik tiga paksi (Terraform)
Buka terminal dan beralih ke
main.tf
Di direktori tempat anda berada, ketik "Terra Boom Three Axes" klasik satu persatu:
Bash
# Kapak pertama: inisialisasi, muat turun pakej pemacu komponen rangkaian rasmi Microsoft terkini
terraform init
# Kapak kedua: Latihan latihan, biarkan Terraform mengira dengan mata kasar apa yang akan dibina kemudian tanpa mengeluarkan wang
terraform plan
# The Third Ax: Serangan umum bermula, dan caj infrastruktur benar-benar dilancarkan ke awan (ditambah-auto-prove menghilangkan pengesahan ketukan daging manusia)
Terraform apply-auto-approve
Tidak sampai 30 saat, terminal akan menunjukkan hijau
Permohonan telah lengkap! Resources: 4 added
。 Seluruh rangkaian persekitaran rangkaian pengasingan peringkat kilang standard telah berjaya menembusi dunia fizikal awan Azure.
Tahap keempat: sejarah infrastruktur kelas industri, iaitu kod
Dengan menggunakan dua set kod ini, anda pada dasarnya dapat mengabaikan semua pentadbir rangkaian tradisional tradisional yang masih berjuang untuk menandakan tetikus di laman web. Tetapi untuk bertahan dalam barisan pemasangan DevOps serentak tinggi komersial yang benar-benar ketat, sebagai ketua arkitek, anda mesti segera mengimpal dua garis bawah untuk mengelakkan spesifikasi pasukan:
1. Maut "Terraform Status Fail Hilang" Tragedi (State Lock)
Sekiranya anda menggunakan Terraform, apabila anda selesai
Aplikasi terraform
Kemudian, direktori tempatan secara senyap-senyap akan melahirkan nama
terraform.tfstate
Fail teks.
Bahaya bencana: Fail ini adalah "satu-satunya otak memori" Terraform untuk mengingati apa yang kelihatan seperti rangkaian awan semasa. Sekiranya pembangun lain juga menjalankan kod ini di komputer mereka sendiri, kerana mereka tidak mempunyai fail tfstate anda di dalam negara, Terraform akan menjadi buta, secara keliru menganggap bahawa tidak ada apa-apa di awan, jadi pada saat aplikasi dijalankan, anda akan berada di Rangkaian pengeluaran yang dibina di awan, mesin maya di dalamnya, semua dicabut dengan kejam dan dipadamkan secara fizikal!
Konfigurasi pingat emas pengecualian standard Dachang: dilarang sama sekali menyimpan tfstate di komputer tempatan! Strategi "azurerm" pakej mesti dikonfigurasikan dalam blok interraform {... }. Memaksa fail memori status ini secara paksa dikunci dalam Storage Acc rasmi Azure
Dalam fail (akaun simpanan Blob), dan buka kunci status (Locking State). Dengan cara ini, sesiapa sahaja di dunia yang menjalankan kod di mana-mana sudut akan pergi ke otak pusat yang sama untuk menyelaraskan data dan menyolder sepenuhnya tragedi "penutup dan penghapusan yang salah".
2. Berhati-hati dengan kelumpuhan antara wilayah yang disebabkan oleh "Hardcode" di Bicep
Semasa menulis kod Bicep, banyak pemula akan menulis secara langsung dalam kod tersebut untuk menyelamatkan masalah
Lokasi: 'eastasia'
(Hong Kong).
Pembongkaran alasan: Sekiranya suatu hari, perniagaan syarikat tiba-tiba pergi ke Amerika Syarikat, anda perlu mengklon satu set rangkaian pengasingan yang sama di eastus (Bilik Komputer Timur AS). Sebaik sahaja anda melaksanakan baris kod ini, sistem akan melaporkan kesalahan dengan kejam, kerana kumpulan sumber anda jelas dibina di Amerika Syarikat, tetapi kod tersebut secara paksa memerintahkan Microsoft untuk menarik rangkaian di Hong Kong.
Panduan pengelakan tegar: Sentiasa gunakan parameter untuk menangkap geografi secara dinamik. Seperti yang kita tulis templat demonstrasi Bicep di atas: struktur lokasi = kumpulan sumber ().location. Biarkan kod itu sendiri dengan bijak bertanya "kumpulan sumber mana yang sedang ditanam", di mana kumpulan sumber, ia secara automatik akan mengikuti pokok anggur di mana ia mendarat, mewujudkan satu set templat dalam erti kata sebenarnya dan pengklonan lancar global.
Ringkasan
Dengan menggunakan Bicep / Terraform untuk melaksanakan penyebaran infrastruktur moden sebagai kod (IaC), inti inti industri sebenarnya dipermudah menjadi enam belas kata:
Kod penurunan topologi, kawalan versi, penyimpanan pusat, geografi dinamik.
Anda mengucapkan selamat tinggal kepada keadaan operasi dan penyelenggaraan asal memeriksa parameter setiap hari pada masa lalu, takut bahawa segmen rangkaian tidak sesuai, dan daging manusia mengklik tetikus beratus-ratus kali di konsol pada larut malam. Semua asas aset digital teras disatukan sepenuhnya ke dalam kod teks yang boleh dihantar ke GitHub. Duduk di depan komputer, ubah nombor dengan elegan, tekan Enter, dan baki tugas pertahanan dan pengembangan yang tinggi, selamat diserahkan kepada era awan yang berkelip dengan kelajuan cahaya.
