腳本管理 - 雲端移轉工廠 AWS

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

腳本管理

雲遷移工廠 AWS 解決方案允許用戶在用戶界面中完全管理自動化腳本或軟件包的庫。您可以使用指令碼管理介面上傳新的自訂指令碼以及新版本的指令碼。當有多個版本可用時,管理員可以在這些版本之間切換,以便在將更新設為預設之前測試更新。指令碼管理介面也可讓系統管理員下載指令碼套件,以更新或檢閱內容。

支援的指令碼套件是壓縮的 zip 歸檔,其中包含根目錄中的下列必要檔案:

  • 封裝結構 .yML — 用來定義指令碼的引數和其他中繼資料,例如說明和預設名稱。如需詳細資訊,請參閱撰寫新的指令碼套件

  • [自定義 python 腳本] .py-這是提交作業時將運行的初始腳本。此腳本可以調用其他腳本和模塊,如果是的話,這些應該包含在歸檔中。此指令碼的名稱必須與中的MasterFileName索引鍵中指定的值相符Package-Structure.yml

上傳新的腳本包

注意

指令碼套件必須符合支援的格式。如需詳細資訊,請參閱撰寫新的指令碼套件

  1. 自動化指令碼」表中選擇「新增」

  2. 選取您要上傳的套件歸檔檔案。

  3. 輸入指令集的唯一名稱。使用者將依此名稱參考指令碼,以啟動工作。

下載指令碼套件

您可以從主控台下載指令碼套件,以啟動更新和內容驗證。

  1. 依序選取自動化指令碼

  2. 從表格中選取您要下載的指令碼,然後選取「動作」,然後選擇「下載預設版本」或「下載最新版本」。

您可以下載指令碼的特定版本。若要這樣做,請選取指令碼,然後選取動作,然後選擇變更預設版本。指令碼預設版本清單中,選擇 [下載選取的版本]。

新增指令碼套件的新版本

您可以依照下列步驟,在「自動化 > 指令碼」區段中上傳 AWS 雲端移轉工廠指令碼套件的更新:

  1. 依序選取自動化、指令碼。

  2. 選取現有的指令碼以新增新版本,然後選取「動作」並選擇「新增版本」。

  3. 選取您要上傳的更新套件封存檔案,然後選擇 [下一步]。新的指令碼版本預設會保留現有的名稱。輸入唯一的指令碼名稱。任何名稱變更只會套用至此版本的指令碼。

  4. 您可以選取 [設為預設版本],將新版本的指令碼設為預設版本

  5. 選擇上傳

刪除指令碼套件和版本

您無法刪除指令碼或指令碼版本以供稽核之用。這允許查看在某個時間點針對系統運行的確切腳本。每個腳本版本在上傳時都有一個唯一的簽名和 ID,這些簽名和 ID 會根據使用腳本和版本的工作歷史記錄進行記錄。

撰寫新的指令碼套件

指 AWS 令碼套件上的雲端移轉工廠支援 Python 作為主要指令碼語言。您可以根據需要從 Python 主程序或包裝器中啟動其他 shell 腳本語言。若要快速建立新的指令碼套件,我們建議您下載其中一個預先封裝指令碼的複本,並加以更新以執行必要的工作。您必須首先創建一個主 Python 腳本來執行腳本的核心功能。然後,建立Package-Structure.yml檔案來定義指令碼所需的引數和其他中繼資料。如需詳細資訊,請參閱Package-Structure.yml選項。

主 Python 腳本

這是工作起始時執行的初始主要命令檔。指令碼執行完成後,工作就會完成,最後的傳回碼會決定工作的狀態。從遠端執行時,會擷取此指令碼的所有輸出,並傳送至工作的輸出稽核記錄中以供參考。這個日誌也存儲在 Amazon CloudWatch。

根 AWS 據資料和APIs指令碼存取雲端移轉工廠

要提供對雲遷移工廠的訪問 AWS APIs和數據,您可以使用隨附的 python 幫助程序模塊。該模塊提供以下主要功能是一些開始使用的關鍵功能:

factory_login

返回可用於調用雲遷移工廠的訪問令牌 AWS APIs。此功能將嘗試CMF使用多次認證嘗試登錄:

  1. 通過嘗試訪問包含服務帳戶 userid 和密碼的默認密鑰(如果存在並允許訪問)。這個秘密名字 MFServiceAccount-[userpool id] 將被檢查。

  2. 如果步驟 1 不成功,且使用者正在從命令列執行指令碼,則系統會提示使用者提供 AWS 雲端遷移工廠使用者 ID 和密碼。如果從遠端自動化工作執行,工作將會失敗。

get_server_credentials

透過身分證明管理員或使用者輸入,傳回儲存在 AWS Cloud Migration Factory 中之伺服器的登入認證。該函數將檢查一些不同的源來確定特定服務器的憑據,源的順序是:

  1. 如果本地用戶名和本地 _ 密碼被設置和有效,那麼這些將被返回。

  2. 如果 secret_overide 被設置,那麼這將被用於檢索秘密管理器指定的秘密,否則,檢查服務器記錄包含 AWS 密鑰 secret_name,這不是空的,那麼這個秘密名稱將被使用。

  3. 如果找不到或訪問指定的密碼,則函數將退回到提示用戶輸入憑據,但只有在 no_user_ prompt 設置為 False 時,才會返回失敗。

參數

本地 _ 用戶名-如果通過,那麼將被返回。

本地密碼-如果通過,那麼將被返回。

服務器-CMF 服務器字典,由 get_factory_服務器返回。在雲遷移工廠。 AWS

Secret_overide-通過這將設置秘密名稱從 Secrets Manager 器為此服務器檢索。

no_user_提示— 告訴函數不要提示用戶輸入用戶 ID 和密碼(如果未存儲),對於任何遠程自動化腳本來說,這應該是 True。

get_credentials

從 Secrets Manager 取得使用 AWS 雲端移轉工廠認證管理員儲存的認證。

參數

秘密名稱-要檢索的密碼的名稱。

獲取工廠服務器

根據提供的波形,從 AWS 雲端移轉工廠資料存放區傳回伺服器陣列。

參數

waveid-將返回的服務器的波形記錄 ID。

權杖 — 從 FactoryLogin Lambda 函數取得的驗證權杖。

app_ids — 要包含的波形內的可選應用程式識別碼清單。

server_ids — 波形中的伺服器 ID 和要包含的應用程式的選擇性清單。

os_split — 如果設置為true,則將返回兩個列表,一個用於 Linux 和一個 Windows 服務器,如果為 False,則返回一個組合列表。

rtype-可選字符串,僅針對服務器的特定遷移策略進行過濾,即傳遞值「重新主機」將僅返回具有 Rehost 的服務器。

最終消息摘要

建議提供指令碼結果的摘要訊息,作為螢幕或 sysout 的最終輸出。這會顯示在主控台的 [最後一個訊息] 屬性中,該屬性可提供指令碼結果的快速狀態,而使用者不需要讀取完整的輸出記錄檔。

返回代碼

如果腳本的函數不完全成功,則主 python 腳本應該在退出時返回非零返回代碼。收到非零傳回碼時,作業狀態會在作業記錄中顯示為「失敗」,指示使用者應檢閱輸出記錄檔,以瞭解失敗的詳細資訊。

YAML封裝結構 .YML 選項

範例 YAML 檔案

Name: "0-Check MGN Prerequisites" Description: "This script will verify the source servers meet the basic requirements for AWS MGN agent installation." MasterFileName: "0-Prerequisites-checks.py" UpdateUrl: "" Arguments: - name: "ReplicationServerIP" description: "Replication Server IP." long_desc: "IP Address of an AWS MGN Replication EC2 Instance." type: "standard" required: true - name: "SecretWindows" long_desc: "Windows Secret to use for credentials." description: "Windows Secret" type: "relationship" rel_display_attribute: "Name" rel_entity: "secret" rel_key: "Name" - name: "SecretLinux" long_desc: "Linux Secret to use for credentials." description: "Linux Secret" type: "relationship" rel_display_attribute: "Name" rel_entity: "secret" rel_key: "Name" - name: "Waveid" description: "Wave Name" type: "relationship" rel_display_attribute: "wave_name" rel_entity: "wave" rel_key: "wave_id" validation_regex: "^(?!\\s*$).+" validation_regex_msg: "Wave must be provided." required: true SchemaExtensions: - schema: "server" name: "server_pre_reqs_output" description: "Pre-Req Output" type: "string"

YAML關鍵描述

必要

名稱 — 指令碼將在匯入時使用的預設名稱。

說明 — 指令碼使用方式的描述。

MasterFileName— 這是腳本運行的起點,它必須是包含在腳本包存檔中的 python 文件名。

引數 — MasterFileName Python 指令碼接受的引數清單。每個需要指定的引數均 AWS 採用雲端移轉工廠屬性定義格式。每個引數的必要屬性都是「名稱」和「類型」,其他所有屬性都是可選的。

選用

UpdateUrl— 提供指令碼套件原始碼可用於提供更新的URL位置。目前此資料僅供參考。

SchemaExtensions— Python 指令碼需要位於結構描述中的屬性清單,以儲存輸出或擷取其他資料。每個屬性都必須以AWSCMF屬性定義格式指定。每個屬性的必要特性包括要、名稱、描述類型。所有其他屬性是選用的。當指令碼初始載入時,任何新屬性都會自動新增至結構描述,而且不 SchemaExtensions 會針對新版本的指令碼處理為的變更。如果要新增新指令碼需要此動作,則必須手動更新結構描述。