一千萬個為什麽

搜索


<�強>問題</強>

我有一個Ansible角色,涵蓋Windows,macOS和Ubuntu操作系統。我還為每個操作系統提供了一個Packer模板文件(由於模板文件中的細微差別和更改來處理配置),該文件用於處理站起來並將VM與Ansible一起供應到VSphere上。

所以要構建所有三個虛擬機,就像這樣:

  Windows build                Mac build                 Ubuntu build
---------------------     ---------------------      --------------------
| Packer -> Ansible | --> | Packer -> Ansible | ---> |Packer -> Ansible |
---------------------     ---------------------      --------------------

哪個效率不高,可能需要一段時間。

解決方案</強>

我想通過不同的方式來對其進行並行處理,因為Packer可能會讓所有三個虛擬機都處於獨立狀態,但是不會配置它 - 只需獲取虛擬機的IP地址,然後(通過某些操作)將IP地址放入Ansible清單文件中,然後這個完美的劇本就會反對。

就像是:

          --------------
Packer -> | Windows VM | <----
   |      --------------     |
   |      --------------     |
   -----> |  macOS VM  | <----
   |      --------------     |
   |      --------------     |
   -----> | Ubuntu VM  | <----
          --------------     |
                             |
                          Ansible parallel provisioning

這是一起使用Packer和Ansible的最佳方式嗎?還是有更好的方法來平行這些構建?

轉載註明原文: 與Ansible並行Packer

一共有 1 個回答:

使用CI工具怎麽樣?創建一個並行作業,作業將並行運行。例如,可以使用Jenkins:

https://jenkins.io/blog/2017/09/25/declarative -1/

  stage('run-parallel-branches'){
  腳步 {
    平行(
      一個: {
        回聲“這是一個分支”
      },
      b:{
        回聲“這是分支b”
      }
    )
  }
}
</代碼> 

但也有其他CI工具可以做到這一點。