在 Azure 中使用基礎結構自動化工具搭配虛擬機器
適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集
若要以一致的方式大規模建立並管理 Azure 虛擬機器 (VM),通常需要某種形式的自動化。 有許多工具和解決方案可讓您將完整的 Azure 基礎結構部署及管理生命週期自動化。 本文介紹的一些基礎結構自動化工具可供您在 Azure 中使用。 這些工具通常符合下列其中一種方法:
自動設定 VM
- 工具包括 Ansible、Chef、Puppet、Bicep 和 Azure Resource Manager 範本。
- VM 自訂的特定工具包括 cloud-init (適用於 Linux VM)、PowerShell 預期狀態設定 (DSC),和 Azure 自訂指令碼擴充功能 (適用於所有 Azure VM)。
自動基礎結構管理
將應用程式部署和傳遞自動化
- 範例包括 Azure DevOps Services 和 Jenkins。
Terraform
Terraform 是自動化工具,可讓您使用單一範本格式語言 - HashiCorp 設定語言 (HCL) 來定義和建立完整的 Azure 基礎結構。 您可以使用 Terraform 來定義範本,將建立網路、儲存和指定應用程式解決方案的 VM 資源程序自動化。 您可以使用其他平台的現有 Terraform 範本搭配 Azure,來確保一致性並簡化基礎結構部署,而不需要轉換成 Azure Resource Manager 範本。
了解如何:
Azure Automation
Azure 自動化會使用 Runbook,在您的目標 VM 上處理一組工作。 Azure 自動化是用來管理現有的 VM,而非建立基礎結構。 Azure 自動化可以在 Linux 和 Windows VM 上執行,以及在具有混合式 Runbook 背景工作角色的內部部署虛擬或實體機器上執行。 Runbook 可以儲存在原始檔控制存放庫 (例如 GitHub) 中。 接著,這些 Runbook 就可以手動方式或依定義的排程執行。
Azure 自動化也會提供預期狀態設定 (DSC) 服務,可讓您建立一組指定 VM 之設定方式的定義。 然後,DSC 會確保已套用所需的設定,且 VM 保持一致。 Azure 自動化 DSC 會在 Windows 和 Linux 電腦上執行。
了解如何:
Azure DevOps Services
Azure DevOps Services 是一套工具,能協助您共用和追蹤程式碼、使用自動化的組建,並建立完整的持續整合及開發 (CI/CD) 管線。 Azure DevOps Services 會與 Visual Studio 和其他編輯器整合,以簡化使用方式。 Azure DevOps Services 還可以建立及設定 Azure VM,然後再將程式碼部署到這些 VM。
深入了解:
- Azure DevOps Services \(英文\)。
Azure Resource Manager 範本
Azure Resource Manager 是 Azure 的部署與管理服務。 其提供管理層,可讓您建立、更新和刪除您 Azure 訂用帳戶中的資源。 您可使用存取控制、鎖定與標籤等管理功能,在部署之後保護及組織資源。
了解如何:
- 使用 Resource Manager 範本部署現成 VM。
- 從 Resource Manager 範本建立 Windows 虛擬機器。
- 下載 VM 的範本。
- 建立 Azure Image Builder 範本。
Bicep
Bicep 是使用宣告式語法來部署 Azure 資源的特定領域語言 (DSL)。 在 Bicep 檔案中,您會定義要部署至 Azure 的基礎結構,然後在整個開發生命週期中使用該檔案,以重複部署您的基礎結構。 您的資源會以一致的方式進行部署。
開始使用快速入門。
Cloud-init
Cloud-init (英文) 是在 Linux VM 初次開機時,廣泛用來自訂它們的方法。 您可以使用 cloud-init 來安裝封裝和寫入檔案,或者設定使用者和安全性。 由於在初始開機程序期間會呼叫 Cloud-init,因此無需使用額外步驟或必要的代理程式,即可套用您的設定。 如需如何正確地設定 #cloud-config
檔案格式的詳細資訊,請參閱 cloud-init 文件網站 \(英文\)。 #cloud-config
檔案是以 base64 編碼的文字檔。
Cloud-init 也適用於散發套件。 例如,您不使用 apt-get install 或 yum install 來安裝套件。 您可以改為定義要安裝的套件清單。 Cloud-init 會針對您選取的散發套件自動使用原生的套件管理工具。
我們一直積極地與背書的 Linux 發行版本合作夥伴合作,以便在 Azure Marketplace 中提供可支援 Cloud-init 的映像。 這些映像會讓您的 Cloud-init 部署和設定順暢地與 VM 和虛擬機器擴展集運作。 在 Azure 上深入了解 Cloud-init 的詳細資料:
PowerShell DSC
PowerShell 預期狀態設定 (DSC) 是一個管理平台,可定義目標電腦的設定。 也可透過 Open Management Infrastructure (OMI) 伺服器在 Linux 上使用 DSC。
DSC 設定會定義要在電腦上安裝的項目,以及設定主機的方式。 本機設定管理員 (LCM) 引擎會在每個目標節點上執行,這些節點會以推送組態作為基礎來處理要求的動作。 提取伺服器是一項在中央主機上執行的 web 服務,可儲存 DSC 設定和相關聯的資源。 提取伺服器會與每個目標主機上的 LCM 引擎通訊,以提供必要的合規性相關設定和報告。
了解如何:
Azure 自訂指令碼擴充功能
適用於 Linux 或 Windows 的 Azure 自訂指令碼擴充功能會在 Azure VM 上下載並執行指令碼。 您可在建立或正在使用 VM 時運用延伸模組。
您可以從 Azure 儲存體或 GitHub 存放庫等任何公用位置下載指令碼。 您可以透過自訂指令碼擴充功能,以來源 VM 上執行的任何語言撰寫指令碼。 這些指令碼可用來安裝應用程式,或視需要設定 VM。 若要保護認證,可將密碼等機密資訊儲存在受保護的設定中。 這些認證只會在 VM 內進行解密。
了解如何:
Ansible
Ansible 是設定管理、建立 VM 或應用程式部署的自動化引擎。 Ansible 會使用無代理程式的模型,通常是使用 SSH 金鑰來驗證及管理目標電腦。 設定工作會定義在劇本中,並有幾個可用來執行特定工作的 Ansible 模組。 如需詳細資訊,請參閱 Ansible 的運作方式。
了解如何:
Chef
Chef 是自動化平台,可協助定義您基礎結構的設定、部署和管理方式。 某些元件包含了適用於應用程式生命週期自動化而非基礎結構的 Chef Habitat,以及可協助自動遵循安全性和原則需求的 Chef InSpec。 Chef 用戶端是安裝在目標電腦上,包含一或多個中央 Chef 伺服器,可儲存和管理設定。 如需詳細資訊,請參閱 Chef 概觀。
了解如何:
Puppet
Puppet 是符合企業需求的自動化平台,可處理應用程式傳遞和部署程序。 代理程式會安裝在目標電腦上,從而允許 Puppet Master 執行資訊清單,以定義 Azure 基礎結構和 VM 所需的設定。 Puppet 能夠與諸如 Jenkins 和 GitHub 等其他解決方案整合,以獲得提升的 DevOps 工作流程。 如需詳細資訊,請參閱 Puppet 的運作方式。
了解如何:
Packer
當您在 Azure 中建立自訂的 VM 映像時,Packer 會將建置程序自動化。 您可以使用 Packer 來定義作業系統,並執行後置設定指令碼,針對您的特定需求來自訂 VM。 一旦設定之後,就會擷取 VM 作為受控磁碟映像。 Packer 會將程序自動化,以建立來源 VM、網路和儲存體資源、執行設定指令碼,然後建立 VM 映像。
了解如何:
Jenkins
Jenkins 是持續整合伺服器,能協助部署及測試應用程式,並建立自動管線以供程式碼傳遞。 有數百個外掛程式可擴充核心 Jenkins 平台,您也可以透過 Webhook 與許多其他產品和解決方案進行整合。 您可以手動方式在 Azure VM 上安裝 Jenkins、從 Docker 容器內執行 Jenkins,或使用預先建置的 Azure Marketplace 映像。
了解如何:
下一步
有許多不同的選項可供您在 Azure 中使用基礎結構自動化工具。 您可以自由使用最適合您需求和環境的解決方案。 若要開始使用並嘗試一些內建於 Azure 的工具,請參閱如何將自訂 Linux 或 Windows VM 自動化。