在 中建立套件 Distributor - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 中建立套件 Distributor

若要建立套件,請準備安裝型軟體或資產,每個作業系統平台一個檔案。至少需要一個檔案才能建立套件。

不同平台可能有時會使用相同的檔案,但連接到您套件的所有檔案必須列在資訊清單中的 Files 區段。如果您透過在主控台中使用簡便工作流程來建立套件,系統會為您產生資訊清單。您可以連接到單一文件的檔案數量上限為 20。每個檔案大小的上限為 1 GB。如需支援的平台的詳細資訊,請參閱支援的套件平台和架構

當您建立套件時,系統會建立新的SSM文件 。此文件允許您將套件部署到受管節點。

僅供示範使用,範例套件 ExamplePackage.zip 可從我們的網站下載。範例套件包含完整的JSON清單和三個 .zip 檔案,其中包含 v7.0 PowerShell .0 的安裝程式。安裝和解除安裝指令碼不包含有效的命令。雖然您必須將每個軟體安裝型檔案和指令碼壓縮為 .zip 檔,來在 Advanced (進階) 工作流程中建立套件,您不會在 Simple (簡易) 工作流程壓縮安裝型資產。

使用簡易工作流程建立套件

本節說明如何在 中建立套件 Distributor 選擇 中的簡單套件建立工作流程 Distributor 主控台。Distributor 是 的功能 AWS Systems Manager。若要建立套件,請準備安裝型資產,每個作業系統平台一個檔案。至少需要一個檔案才能建立套件。簡單套件建立程序會為您產生安裝和解除安裝指令碼、檔案雜湊和 JSON格式化清單。簡單工作流程會處理上傳和壓縮可安裝檔案,以及建立新的套件和相關文件的程序SSM。如需支援的平台的詳細資訊,請參閱支援的套件平台和架構

當您使用簡易方法來建立套件時,Distributor 會為您建立 installuninstall指令碼。不過,建立就地更新的套件時,您必須在 Update script (更新指令碼) 索引標籤上提供您自己的 update 指令碼內容。當您新增update指令碼的輸入命令時,Distributor 在為您建立的 .zip 套件中包含此指令碼,以及 installuninstall指令碼。

注意

使用 In-place 更新選項將新的或更新的檔案新增至現有的套件安裝,而不需讓關聯的應用程式離線。

使用簡易工作流程建立套件
  1. 在 開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Distributor.

  3. 在 上 Distributor 首頁,選擇建立套件 ,然後選擇簡單

  4. Create package (建立套件) 頁面,輸入套件名稱。套件名稱可包含字母、數字、句點、破折號和底線。名稱應該一般到足以適用於所有版本的套件附件,但也特別到足以識別套件目的。

  5. (選用) 對於 Version name (版本名稱),輸入版本名稱。版本名稱最多可包含 512 個字元,而且不得包含特殊字元。

  6. 對於位置 ,使用儲存貯體名稱和字首或使用儲存貯體 來選擇儲存貯體URL。

  7. 對於 Upload software (上傳軟體),請選擇 Add software (新增軟體),然後瀏覽具有 .rpm.msi.deb 副檔名的安裝型軟體檔案。如果檔案名稱包含空格,則上傳會失敗。您可以在單一動作中上傳多個軟體檔案。

  8. 對於 Target platform (目標平台),確認為每個安裝型檔案顯示的目標作業系統平台是否正確。如果顯示的作業系統不正確,請從下拉式清單中選擇正確的作業系統。

    對於簡單的套件建立工作流程,因為您只上傳每個可安裝檔案一次,因此需要額外的步驟來指示 Distributor 以多個作業系統的單一檔案為目標。例如,如果您上傳名為 Logtool_v1.1.1.rpm 的安裝型軟體檔案,您必須在 Simple (簡單) 工作流程中變更一些預設值,來同時以 Amazon Linux 和 Ubuntu 作業系統的相同軟體為目標。當鎖定多個平台時,請執行下列其中一個動作。

    • 在開始前,改用 Advanced (進階) 工作流程來將每個安裝型檔案壓縮為 .zip 檔案,以及手動編寫資訊清單,讓系統能夠以多個作業系統平台或版本的安裝型檔案為目標。如需詳細資訊,請參閱使用進階工作流程建立套件

    • Simple (簡單) 工作流程中手動編輯資訊清單檔案,讓系統以多個作業系統平台或版本的 .zip 檔案為目標。如需如何進行此動作的詳細資訊,請參閱 步驟 2:建立JSON套件資訊清單中的步驟 4 結尾。

  9. 對於 Platform version (平台版本),請確認顯示的作業系統平台版本是 _any (後接萬用字元的主要發行版本 (7.*)),或正是您希望軟體套用的確切作業系統發行版本。如需指定作業系統平台版本的詳細資訊,請參閱 步驟 2:建立JSON套件資訊清單中的步驟 4。

  10. 對於 Architecture (架構),從下拉式清單中為每個安裝型檔案選擇正確的處理器架構。如需支援處理器架構的詳細資訊,請參閱 支援的套件平台和架構

  11. (選用) 展開指令碼 ,並檢閱 Distributor 會針對可安裝的軟體產生 。

  12. (選用) 若要提供更新指令碼以與就地更新搭配使用,請展開 Scripts (指令碼),選擇 Update script (更新指令碼) 索引標籤,然後輸入您的更新指令碼命令。

    Systems Manager 不會代表您產生更新指令碼。

  13. 若要新增更多安裝型軟體檔案,選擇 Add software (新增軟體)。否則,請進行下一個步驟。

  14. (選用) 展開清單清單 ,並檢閱JSON套件清單 Distributor 會針對可安裝的軟體產生 。如果在您開始此程序後變更了與您軟體相關的任何資訊,例如平台版本或目標平台,請選擇 Generate manifest (產生資訊清單) 以顯示更新的套件資訊清單。

    如果您想要以多個作業系統的軟體安裝型檔案為目標,您可以手動編輯資訊清單,如步驟 8 所述。如需編輯資訊清單的相關資訊,請參閱 步驟 2:建立JSON套件資訊清單

  15. 選擇 Create package (建立套件)

等待 Distributor 完成上傳您的軟體並建立套件。Distributor 顯示每個可安裝檔案的上傳狀態。根據您新增的包裹數量和大小,這可能需要幾分鐘的時間。Distributor 會自動將您重新導向至新套件的套件詳細資訊頁面,但您可以選擇在軟體上傳後自行開啟此頁面。在 之前,套件詳細資訊頁面不會顯示您套件的所有資訊 Distributor 會完成套件建立程序。若要停止上傳和套件建立程序,請選擇 Cancel (取消)

If Distributor 無法上傳任何軟體可安裝檔案,它會顯示上傳失敗訊息。若要重試上傳,請選擇 Retry upload (重試上傳)。如需如何對套件建立失敗進行疑難排解的更多資訊,請參閱 AWS Systems Manager疑難排解 Distributor

使用進階工作流程建立套件

在本節中,了解進階使用者可以如何在 中建立套件 Distributor 將包含安裝和解除安裝指令碼的可安裝資產以及JSON資訊清單檔案上傳至 Amazon S3 儲存貯體之後。

若要建立套件,請準備安裝型資產的 .zip 檔案,每個作業系統平台一個 .zip 檔案。至少需要一個 .zip 檔案才能建立套件。接下來,建立JSON資訊清單。資訊清單包括您套件程式碼檔案的指標。將所需的程式碼檔案新增至資料夾或目錄,而且資訊清單中已填入正確的值之後,請將套件上傳到 S3 儲存貯體。

範例套件 ExamplePackage.zip 可從我們的網站下載。範例套件包含完整的JSON清單和三個 .zip 檔案。

步驟 1:建立ZIP檔案

您的套件基礎至少要有一個軟體或安裝型資產的 .zip 檔案。套件包含每個您想支援的作業系統一個 .zip 檔案,除非 .zip 檔案可以安裝在多個作業系統。例如 Red Hat Enterprise Linux 和 Amazon Linux 執行個體通常可以執行相同的 .RPM 可執行檔,因此您只需將一個 .zip 檔案連接至套件,即可支援這兩個作業系統。

必要檔案

下列是每個 .zip 檔案的必要項目:

  • installuninstall 指令碼。Windows Server型受管節點需要 PowerShell 指令碼 (名為 install.ps1和 的指令碼uninstall.ps1)。Linux 型受管節點需要 Shell 指令碼 (名為 install.sh和 的指令碼uninstall.sh)。SSM Agent 會執行 installuninstall指令碼中的說明。

    例如,您的安裝指令碼可能會執行安裝程式 (例如 .rpm 或 .msi)、可能會複製檔案或設定組態。

  • 可執行檔案、安裝程式套件 (.rpm、.deb、.msi 等)、其他指令碼或組態檔案等。

選用檔案

下列項目是每個 .zip 檔案中的選用項目:

  • update 指令碼。提供更新指令碼可讓您使用 In-place update 選項來安裝套件。當您想要將新的或更新的檔案新增至現有的套件安裝時,In-place update此選項不會在執行更新時讓套件應用程式離線。Windows Server型受管節點需要 PowerShell 指令碼 (名為 的指令碼update.ps1)。Linux 型受管節點需要 Shell 指令碼 (名為 的指令碼update.sh)。SSM Agent 會在update指令碼中執行指示。

如需安裝或更新套件的詳細資訊,請參閱安裝或更新 Distributor packages

如需 .zip 檔案的範例,包括範例installuninstall指令碼,請下載範例套件 ExamplePackage.zip

步驟 2:建立JSON套件資訊清單

在您準備並壓縮可安裝檔案之後,請建立JSON資訊清單。下列為範本。資訊清單範本的部分將在此程序的此區段所述。您可以使用JSON編輯器在個別檔案中建立此清單。或者,您可以在建立套件時,在 AWS Systems Manager 主控台中撰寫資訊清單。

{ "schemaVersion": "2.0", "version": "your-version", "publisher": "optional-publisher-name", "packages": { "platform": { "platform-version": { "architecture": { "file": ".zip-file-name-1.zip" } } }, "another-platform": { "platform-version": { "architecture": { "file": ".zip-file-name-2.zip" } } }, "another-platform": { "platform-version": { "architecture": { "file": ".zip-file-name-3.zip" } } } }, "files": { ".zip-file-name-1.zip": { "checksums": { "sha256": "checksum" } }, ".zip-file-name-2.zip": { "checksums": { "sha256": "checksum" } } } }
若要建立JSON套件資訊清單
  1. 新增結構描述版本到您的資訊清單。在此版本中,結構描述版本一律為 2.0

    { "schemaVersion": "2.0",
  2. 新增使用者定義的套件版本到您的資訊清單。這也是您在將套件新增至 時指定的版本名稱值 Distributor。 它成為文件的一部分 AWS Systems Manager ,Distributor 當您新增套件時, 會建立 。您也提供這個值做為 AWS-ConfigureAWSPackage 文件中的輸入,以安裝最新版本以外的套件版本。version 值可以包含字母、數字、底線、連字號和句點,長度上限為 128 字元。我們建議您使用便於讀取的套件版本,讓您和其他管理員部署時能輕鬆指定的確切套件版本。以下是範例。

    "version": "1.0.1",
  3. (選用) 新增發佈者名稱。以下是範例。

    "publisher": "MyOrganization",
  4. 新增套件。"packages" 區段敘述您套件中 .zip 檔案支援的平台、發行版本和架構。如需詳細資訊,請參閱支援的套件平台和架構

    所以此 platform-version 可以是萬用字元值 _any。使用它表示 .zip 檔案支援平台所有版本。您也可以指定後接萬用字元的主要發行版本,以便支援所有次要版本,例如 7.*。如果您選擇指定 platform-version 特定作業系統版本的值,請確定其與作業系統的確切版本相符 AMI 您要鎖定的目標。以下是取得作業系統正確值的建議資源。

    • 在 上 Windows Server受管節點以 為基礎,發行版本可作為 Windows Management Instrumentation (WMI) 資料使用。您可以執行以下來自「命令提示字元」的命令,以取得版本資訊,然後剖析 version 的結果。

      wmic OS get /format:list
    • 在以 Linux 為基礎的受管節點上,先透過掃描作業系統發行版本 (下列命令) 來取得版本。尋找 VERSION_ID 的數值。

      cat /etc/os-release

      如果這未傳回所需的結果,請執行下列命令,從 /etc/lsb-release 檔案取得LSB版本資訊,並尋找 的值DISTRIB_RELEASE

      lsb_release -a

      若這些方法失敗,您可以根據分發找到版本。例如,在 上 Debian Server,您可以掃描 /etc/debian_version 檔案,或在 上掃描 Red Hat Enterprise Linux,/etc/redhat-release檔案。

      hostnamectl
    "packages": { "platform": { "platform-version": { "architecture": { "file": ".zip-file-name-1.zip" } } }, "another-platform": { "platform-version": { "architecture": { "file": ".zip-file-name-2.zip" } } }, "another-platform": { "platform-version": { "architecture": { "file": ".zip-file-name-3.zip" } } } }

    以下是範例。在這個範例中,作業系統平台是 amazon,支援的更新版本 2016.09,架構是 x86_64,支援此平台的 .zip 檔案則是 test.zip

    { "amazon": { "2016.09": { "x86_64": { "file": "test.zip" } } } },

    您可以新增萬用字元值 _any,表示套件支援所有版本的父元素。例如,若要表示所有 Amazon Linux 更新版本都支援此套件,您的套件陳述式應該與下列相似。您可以在版本或架構層級使用 _any 萬用字元,支援平台所有版本,或版本的所有架構,或平台所有架構的所有版本。

    { "amazon": { "_any": { "x86_64": { "file": "test.zip" } } } },

    以下範例新增 _any 以顯示第一個套件,Amazon Linux 2016.09 的所有架構都支援 data1.zip。Amazon Linux 的所有版本都支援第二個套件 data2.zip,但只支援有 x86_64 架構的受管節點。2016.09_any 都是 amazon 下的項目。有一個平台 (Amazon Linux),但有不同的支援版本、架構和相關 .zip 檔案。

    { "amazon": { "2016.09": { "_any": { "file": "data1.zip" } }, "_any": { "x86_64": { "file": "data2.zip" } } } }

    若 .zip 檔案支援多個平台,您可以參閱資訊清單 "packages" 區段的 .zip 檔案一次以上。例如,如果您的 .zip 檔案同時支援 Red Hat Enterprise Linux 7.x 版本和 Amazon Linux,您在 "packages"區段中有兩個項目指向相同的 .zip 檔案,如下列範例所示。

    { "amazon": { "2018.03": { "x86_64": { "file": "test.zip" } } }, "redhat": { "7.*": { "x86_64": { "file": "test.zip" } } } },
  5. 新增步驟 4 中,做為此套件的部分的 .zip 檔案清單。每個檔案項目需要檔案名稱和 sha256 雜湊值的檢查總和。資訊清單中的檢查總和值必須符合壓縮資產中的 sha256 雜湊值,避免套件的安裝失敗。

    若要從您可安裝型取得確切檢查總和,您可以執行以下命令。在 Linux 上執行 shasum -a 256 file-name.zipopenssl dgst -sha256 file-name.zip。在 Windows 上執行 Get-FileHash -Path path-to-.zip-file cmdletPowerShell

    資訊清單的 "files" 區段包含您套件中每個 .zip 檔案的參考。

    "files": { "test-agent-x86.deb.zip": { "checksums": { "sha256": "EXAMPLE2706223c7616ca9fb28863a233b38e5a23a8c326bb4ae241dcEXAMPLE" } }, "test-agent-x86_64.deb.zip": { "checksums": { "sha256": "EXAMPLE572a745844618c491045f25ee6aae8a66307ea9bff0e9d1052EXAMPLE" } }, "test-agent-x86_64.nano.zip": { "checksums": { "sha256": "EXAMPLE63ccb86e830b63dfef46995af6b32b3c52ce72241b5e80c995EXAMPLE" } }, "test-agent-rhel5-x86.nano.zip": { "checksums": { "sha256": "EXAMPLE13df60aa3219bf117638167e5bae0a55467e947a363fff0a51EXAMPLE" } }, "test-agent-x86.msi.zip": { "checksums": { "sha256": "EXAMPLE12a4abb10315aa6b8a7384cc9b5ca8ad8e9ced8ef1bf0e5478EXAMPLE" } }, "test-agent-x86_64.msi.zip": { "checksums": { "sha256": "EXAMPLE63ccb86e830b63dfef46995af6b32b3c52ce72241b5e80c995EXAMPLE" } }, "test-agent-rhel5-x86.rpm.zip": { "checksums": { "sha256": "EXAMPLE13df60aa3219bf117638167e5bae0a55467e947a363fff0a51EXAMPLE" } }, "test-agent-rhel5-x86_64.rpm.zip": { "checksums": { "sha256": "EXAMPLE7ce8a2c471a23b5c90761a180fd157ec0469e12ed38a7094d1EXAMPLE" } } }
  6. 在您新增套件資訊後,儲存並關閉資訊清單檔案。

以下是已完成的資訊清單範例:在這個範例中,您有一個 .zip 檔案 NewPackage_LINUX.zip,支援多個平台,但曾在 "files" 區段中參考一次。

{ "schemaVersion": "2.0", "version": "1.7.1", "publisher": "Amazon Web Services", "packages": { "windows": { "_any": { "x86_64": { "file": "NewPackage_WINDOWS.zip" } } }, "amazon": { "_any": { "x86_64": { "file": "NewPackage_LINUX.zip" } } }, "ubuntu": { "_any": { "x86_64": { "file": "NewPackage_LINUX.zip" } } } }, "files": { "NewPackage_WINDOWS.zip": { "checksums": { "sha256": "EXAMPLEc2c706013cf8c68163459678f7f6daa9489cd3f91d52799331EXAMPLE" } }, "NewPackage_LINUX.zip": { "checksums": { "sha256": "EXAMPLE2b8b9ed71e86f39f5946e837df0d38aacdd38955b4b18ffa6fEXAMPLE" } } } }

套件範例

範例套件 ExamplePackage.zip 可從我們的網站下載。範例套件包含完整的JSON清單和三個 .zip 檔案。

步驟 3:將套件和資訊清單上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體

將所有 .zip 檔案複製或移動到資料夾或目錄,以準備您的套件。有效套件需要您在 步驟 2:建立JSON套件資訊清單 建立的資訊清單,以及資訊清單檔案清單中找到的所有 .zip 檔案。

上傳套件和資訊清單至 Amazon Simple Storage Service (Amazon S3)
  1. 將資訊清單檔案中您指定的所有 .zip 封存檔案複製或移動到資料夾或目錄。請勿壓縮將 .zip 封存檔案和資訊清單檔案所移至的資料夾或目錄。

  2. 建立儲存貯體或選擇現有的儲存貯體。如需詳細資訊,請參閱《Amazon Simple Storage Service 入門指南》中的建立儲存貯體。如需如何執行 AWS CLI 命令以建立儲存貯體的詳細資訊,請參閱 命令參考 mb 中的 。 AWS CLI

  3. 將資料夾或目錄上傳至儲存貯體。如需詳細資訊,請參閱《Amazon Simple Storage Service 入門指南》中的將物件新增到儲存貯體。如果您打算將JSON資訊清單貼到 AWS Systems Manager 主控台,請勿上傳資訊清單。如需如何執行 AWS CLI 命令以將檔案上傳至儲存貯體的詳細資訊,請參閱 命令參考 mv 中的 。 AWS CLI

  4. 在儲存貯體的首頁,選擇您上傳的資料夾或目錄。如果您將檔案上傳到儲存貯體中的子資料夾,請務必記下子資料夾 (也稱為前綴)。您需要 字首,才能將套件新增至 Distributor.

步驟 4:將套件新增至 Distributor

您可以使用 AWS Systems Manager 主控台、 AWS 命令列工具 (AWS CLI 和 AWS Tools for PowerShell),或 AWS SDKs將新套件新增至 Distributor。 當您新增套件時,您正在新增SSM文件 。文件允許您將套件部署到受管節點。

使用主控台新增套件

您可以使用 AWS Systems Manager 主控台來建立套件。將您在 步驟 3:將套件和資訊清單上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體 中的套件上傳目標的儲存貯體名稱準備好。

若要將套件新增至 Distributor (主控台)
  1. 在 開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Distributor.

  3. 在 上 Distributor 首頁,選擇建立套件 ,然後選擇進階

  4. Create package (建立套件) 頁面,輸入套件名稱。套件名稱可包含字母、數字、句點、破折號和底線。名稱應該一般到足以適用於所有版本的套件附件,但也特別到足以識別套件目的。

  5. 對於 Version name (版本名稱),輸入您資訊清單檔案中 version 項目的確切值。

  6. 對於 S3 bucket name (S3 儲存貯體名稱),選擇您在 步驟 3:將套件和資訊清單上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體中將 .zip 檔案和資訊清單上傳至其中的儲存貯體名稱。

  7. 對於 S3 key prefix (S3 金鑰前綴),輸入 .zip 檔案和資訊清單存放所在的儲存貯體子資料夾。

  8. 對於 Manifest (資訊清單),選擇 Extract from package (從套件中擷取) 來使用您透過 .zip 檔案上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體的資訊清單。

    (選用) 如果您未將JSON資訊清單上傳至存放 .zip 檔案的 S3 儲存貯體,請選擇新資訊清單。您可以在JSON編輯器欄位中撰寫或貼上整個清單。如需如何建立JSON資訊清單的詳細資訊,請參閱 步驟 2:建立JSON套件資訊清單

  9. 當您完成資訊清單,請選擇 Create package (建立套件)。

  10. 等待 Distributor 從 .zip 檔案和資訊清單建立套件。根據您新增的包裹數量和大小,這可能需要幾分鐘的時間。Distributor 會自動將您重新導向至新套件的套件詳細資訊頁面,但您可以選擇在軟體上傳後自行開啟此頁面。在 之前,套件詳細資訊頁面不會顯示您套件的所有資訊 Distributor 會完成套件建立程序。若要停止上傳和套件建立程序,請選擇 Cancel (取消)

使用 新增套件 AWS CLI

您可以使用 AWS CLI 來建立套件。URL 準備好您在 中上傳套件的儲存貯體步驟 3:將套件和資訊清單上傳至 Amazon Simple Storage Service (Amazon S3) 儲存貯體

若要使用 將套件新增至 Amazon S3 AWS CLI
  1. 若要使用 AWS CLI 建立套件,請執行下列命令,取代 package-name 包含您套件的名稱,以及 path-to-manifest-file 具有資訊JSON清單檔案的檔案路徑。amzn-s3-demo-bucket 是存放整個套件URL的 Amazon S3 儲存貯體的 。當您在 中執行 create-document 命令時 Distributor,您可以指定 Package的值--document-type

    如果您沒有將資訊清單檔案新增至 Amazon S3 儲存貯體, --content 參數值就是資訊JSON清單檔案的檔案路徑。

    aws ssm create-document \ --name "package-name" \ --content file://path-to-manifest-file \ --attachments Key="SourceUrl",Values="amzn-s3-demo-bucket" \ --version-name version-value-from-manifest \ --document-type Package

    以下是範例。

    aws ssm create-document \ --name "ExamplePackage" \ --content file://path-to-manifest-file \ --attachments Key="SourceUrl",Values="https://s3.amazonaws.com/amzn-s3-demo-bucket/ExamplePackage" \ --version-name 1.0.1 \ --document-type Package
  2. 透過執行下列命令來驗證已新增套件,並顯示套件清單,取代 package-name 包含您套件的名稱。若要取得特定版本的文件 (而非與套件版本相同),您可以新增 --document-version 參數。

    aws ssm get-document \ --name "package-name"

如需可以與 create-document 命令搭配使用之其他選項的相關資訊,請參閱《AWS CLI 命令參考》中 AWS Systems Manager 章節的 create-document。如需可搭配 get-document 命令使用之其他選項的相關資訊,請參閱get-document