範例:使用 Apache Ant 來自動執行作業

此範例顯示如何使用部署規劃工具透過 Apache Ant 來自動執行簡式作業。

開始之前

關於這項作業

安裝 Apache Tomcat Web 伺服器及 Web 應用程式是可以使用 Ant 和部署規劃工具來自動執行的簡式作業範例。Tomcat 隨附用於安裝及部署的特殊化 Ant 指令,而且使用這些指令,您不必撰寫專屬的 Ant 程式碼。您可以建立自動化簽章程式庫,來說明作業的每一個步驟以及參照這些指令。然後,您可以建立自動化工作流程,以將這些自動化簽章套用至拓蹼。

此範例使用一個由 Tomcat Web 伺服器、使用者與使用者群組以及 Web 應用程式所組成的簡式實務範例,如下列拓蹼中所示。此實務範例摘自使用 Ant 進行自動化的範例,該範例位在部署自動化拓蹼及工作流程範例

此簡式 Tomcat 系統具有兩個使用者、兩個應用程式、一個使用者群組及一個使用者登錄

設定自動作業

使用部署規劃工具來自動執行作業的第一步是建立可重複使用的自動化簽章。每一個自動化簽章及其相對應的自動化定義,均表示要在 IT 系統上執行的作業,例如安裝、解除安裝或配置軟體元件。 在此範例中,每一個自動化簽章皆對應於一個以上的 Ant 指令。這些指令可以是核心 Ant 指令或協力廠商 Ant 指令,例如 Tomcat 指令。

程序

在此範例中,第一個自動化簽章會在目標系統上安裝 Tomcat。此作業可能聽起來很複雜,但在此環境定義中,安裝 Tomcat 就像在目標系統上對壓縮檔進行解壓縮一樣簡單。如果要建立此安裝簽章,請遵循下列步驟:

  1. 建立自動化簽章拓蹼:
    1. 在「部署」視景中,按一下檔案 > 新建 > 拓蹼
    2. 在「新建拓蹼」視窗中,於種類下方,按一下基本部署,然後於範本下方,按一下空白自動化簽章拓蹼
    3. 給新的自動化簽章拓蹼提供名稱、名稱空間及來源資料夾。 例如,將此拓蹼稱為 AntInstallTomcatSignature。依照慣例,自動化簽章拓蹼放入 operations 來源資料夾及預設(空白)名稱空間。
    4. 按一下完成
  2. 在自動化簽章拓蹼中,給執行自動作業的 IT 系統建立模型。 在此範例中,作業系統單元表示 IT 系統。拓蹼尚不包含任何其他單元,因為自動化簽章拓蹼僅包含說明作業所必需的詳細資料。
  3. 將單元的安裝狀態設為已安裝 因為此拓蹼表示執行自動作業之前 IT 系統的狀態,所以作業系統單元已經安裝。
    單一作業系統單元
  4. 新增單元來表示作業所安裝、解除安裝或修改的單元。 在此範例中,新增表示 Tomcat 系統的單元,其中包括 Tomcat 安裝單元、Tomcat 伺服器單元、Tomcat 使用者登錄單元及 Tomcat 使用者群組單元。
  5. 根據適當情況,將這些新單元的安裝狀態設為待安裝待解除安裝 一般而言,使用下列規則來設定單元的安裝狀態:
    • 將不受作業影響的單元,或者假設在作業開始之前安裝的單元,設為已安裝
    • 將作業所安裝或修改的單元設為待安裝
    • 將作業所解除安裝或移除的單元設為待解除安裝
    在此範例中,新 Tomcat 單元的安裝狀態皆為待安裝。這些單元上有錯誤,因為自動化簽章尚未指定作業會對那些單元產生怎樣的影響。完成自動化簽章後,將會解決這些錯誤。
    這些 Tomcat 相關單元表示待安裝的軟體
  6. 將 Ant 作業單元新增至拓蹼。 可以在「選用區」的一般工具抽屜中,於作業範本群組內,取得此單元。此單元表示自動化定義,在此情況下,是一個以上的 Ant 指令。
  7. 按一下拓蹼中的空白區域,然後開啟「內容」視圖並移至簽章標籤。
  8. 簽章標籤的名稱欄位中,指定自動作業的名稱。 此名稱不能包含空格。在此範例中,可指定諸如 AntInstallTomcat 之類的名稱。
  9. 指令欄位中,給作業指定 Ant 程式碼,並將參數取代為錢幣符號及大括弧,例如 ${parameterName} 在此範例中,下列程式碼會解壓縮 Tomcat 保存檔並呼叫指令來啟動伺服器。它包含保存檔位置的參數及 Tomcat 安裝位置的參數。
    <unzip src="${tomcatInstallFile}" 
      dest="${tomcatInstallLocation}">
      <cutdirsmapper dirs="1"/>
    </unzip> 
    
    <java jar="${installationLocation}\bin\bootstrap.jar" 
      fork="true" spawn="true"> 
      <jvmarg 
        value="-Dcatalina.home=${tomcatInstallLocation}"/>
        <arg line="start"/>
    </java>

    如果此指令僅使用標準 Ant 指令(如此範例中所示),則您不需指定相關資訊,來說明在何處尋找 Ant 指令。如果是使用來自協力廠商 Ant 程式庫的指令,則必須指定在何處尋找 Ant 指令,方式是在簽章標籤上指定 classnameclasspathHomejavaArchive 參數。

  10. 簽章標籤的參數區段中,新增參數以符合 Ant 程式碼中的參數:
    1. 按一下新增參數
    2. 在「自動化簽章參數」視窗中,指定參數的名稱。
    3. 參數值下方,指定參數的值,方式是將參數連結至拓蹼中的屬性,或指定文字值。 您也可以將參數保留空白,這樣,在將此自動化簽章併入到工作流程時,您就可以給參數填入值。

      在此範例中,將 installationLocation 參數連結至 Tomcat 安裝功能上的 installedLocation 屬性。請不要在自動化簽章拓蹼中給此屬性指定值。建立工作流程時,該工作流程會使用表示特定部署實例之拓蹼中的值。

    4. 同樣地,建立名稱為 tomcatInstallFile 的參數,以符合 Ant 程式碼中的參數。 將此參數的值保留空白,因為不會在此拓蹼中給 Tomcat 安裝檔建立模型。
  11. 簽章標籤底端,將所有安裝狀態為待安裝待解除安裝的單元,新增至要發佈清單。 現在,自動化簽章會指定受作業影響的單元,而且單元上的錯誤已消失。此外,也會新增要發佈清單中的單元,作為 Ant 作業單元的成員。自動化簽章拓蹼看起來類似於下列拓蹼:
    這是一個完整的自動化簽章,包含 Ant 作業單元
  12. 儲存自動化簽章拓蹼。

結果

現在,您可以在工作流程中使用此自動化簽章。對於此範例,您需要另兩個自動化簽章:
  • 一個自動化簽章將使用者新增至 Tomcat 使用者群組及使用者登錄。相關的自動化簽章拓蹼包含安裝狀態為已安裝的 Tomcat 伺服器單元,及安裝狀態為待安裝的使用者單元。自動化簽章拓蹼看起來類似於下列拓蹼:
    此自動化簽章拓蹼將使用者新增至 Tomcat 使用者群組
    此自動化簽章的 Ant 程式碼可以停止伺服器,更新 Tomcat 使用者登錄以及重新啟動伺服器:
    <java jar="${tomcatInstallLocation}\bin\bootstrap.jar" 
      fork="true" spawn="true"> 
      <jvmarg value="-Dcatalina.home=${tomcatInstallLocation}"/>
        <arg line="stop"/>
    </java> 
    
    <replace file="${userRegistryLocation}" 
      token="</tomcat-users&gt;" 
      value="<user name=&quot;${username}&quot; 
        password=&quot;${password}&quot; 
        roles=&quot;${roles}&quot;/&gt;</tomcat-users&gt;" /> 
    
    <java jar="${tomcatInstallLocation}\bin\bootstrap.jar" 
      fork="true" spawn="true"> 
      <jvmarg value="-Dcatalina.home=${tomcatInstallLocation}"/>
      <arg line="start"/>
    </java>
    此程式碼中的參數會連結至拓蹼中的值,其中包括使用者的使用者名稱及密碼,以及 Tomcat 安裝位置。
  • 另一個自動化簽章在 Tomcat 伺服器上部署 Web 應用程式。相關的自動化簽章拓蹼包含 Web 應用程式及現有 Tomcat 安裝:
    此自動化簽章拓蹼在 Tomcat 上部署 Web 應用程式
    此自動化簽章的 Ant 程式碼使用 Tomcat Ant 程式庫中名稱為 deploy 的 Ant 指令:
    <deploy path="${path}" 
      url="http://${hostname}:${port}/manager" 
      war="${war}" username="${username}" 
      password="${password}" />
    在此情況下,自動化簽章必須指定 classnameclasspathHomejavaArchive,以及協力廠商 Ant 程式庫的資訊。

透過建立工作流程來將作業套用至拓蹼

在具有的自動化簽章涵蓋了安裝 Tomcat 及部署 Web 應用程式程序中的每一個步驟之後,您可以透過建立工作流程來將那些自動化簽章套用至拓蹼。

程序

  1. 建立拓蹼來表示要執行作業的 IT 系統現行狀態。

    在此範例中,拓蹼會顯示要安裝 Tomcat 的系統。在此拓蹼中,指定了所有重要屬性。例如,指定管理者使用者的使用者名稱及密碼,以及指定相關檔案及資料夾的位置。此外,所有單元的安裝狀態皆為已安裝

  2. 將單元新增至拓蹼來表示對系統所做的變更。 在此範例中,可以安裝 Tomcat,新增一個以上的使用者,然後部署一個以上的 Web 應用程式,方式是新增一些單元,它們與自動化簽章的要發佈清單中的單元最相符。這些單元的安裝狀態為待安裝待解除安裝
  3. 在新單元上指定相關屬性。 在此範例中,給新使用者指定使用者名稱及密碼,然後給使用者群組單元上的使用者指定角色。
  4. 如果要指定自動作業的執行順序,請在單元之間新增部署順序限制項鏈結。 在此情況下,部署順序限制項鏈結會將使用者單元連接至 Web 應用程式單元,因為必須至少建立一個使用者,才能部署 Web 應用程式。拓蹼看起來類似於下列拓蹼:
    這是一個完整的拓蹼,顯示特定系統及其變更
  5. 儲存拓蹼。
  6. 在「內容」視圖中,於建立工作流程標籤上,按一下分析拓蹼來找出可能相符的自動化簽章 此標籤顯示一個表格,包含拓蹼中的單元以及它們是否符合自動化簽章,如下圖所示。此作業會影響綠色的單元;在此情況下,受影響的單元是由作業所安裝的單元。其他單元是透過提供參數值等資訊來支援作業。
    「建立工作流程」標籤,顯示自動化簽章拓蹼與拓蹼之間的相符單元
  7. 使拓蹼與一個以上的自動化簽章相符之後,按一下建立自動化工作流程 工作流程表示一系列在 IT 系統上執行的作業,以將 IT 系統轉換為您已在拓蹼中建立的模型。
  8. 給工作流程中的每一個自動化簽章設定參數值。 在大多數情況下,自動化簽章使用拓蹼中的值,例如 Tomcat 安裝位置,以及使用者的使用者名稱及 ID。在其他情況下,可能需要在工作流程中指定值或者進行更正。在此範例中,指定 Tomcat 安裝檔位置及 Web 應用程式安裝檔位置。
  9. 儲存工作流程。
  10. 依照將工作流程發佈至 Apache Ant 中的說明發佈工作流程,然後執行產生的 Ant 建置檔。

下一步

因為自動化簽章可重複使用,所以您也可以建立更多拓蹼並將自動化簽章套用至那些拓蹼。

意見