1

我試圖建立一個continuous-integration平臺,並在Ansibleplaybook我用maven-dependency-plugin:get下載從Nexus的工件上上下文將使用Ansible模塊copy部署在遠程服務器上。Ansible:在模塊「複製」使用正則表達式

爲了使一個輕量級的和通用的劇本,我定義了一個名爲app_version,如果它的定義,我下載指定版本的變量,如果我不能下載從Nexus庫中最新版本。工件下載到指定的目錄(/tmp/delivery/)。下面我Ansible任務:

- hosts: local 
    tasks: 
    - name: "Downloading the war" 
     shell: > 
      mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:get -DgroupId=App-DartifactId=App-Dversion={{ app_version if app_version is defined else 'LATEST' }} -Dpackaging=war -DrepositoryId=my-nexus -Ddest=/tmp/delivery/ 


我的問題

爲了保證劇本泛型,我需要寫Ansible模塊copy在正則表達式來挑選具有圖案的神器app*.war但它看起來像模塊不提供這種能力。下面我的副本tastk:

- hosts: agir 
    tasks: 
    - name: "Copying the war" 
     copy: src=/tmp/delivery/app*.war dest=/folder/app.war owner=user group=group mode=0755 

我怎麼能模塊copy在使用正則表達式?


我使用Ansible 1.8

+1

請注意,這不是一個正則表達式,它是一個glob。 – tedder42

回答

2

您可以使用:

- name: "Copying the war" 
     copy: src={{item}} dest=/folder/app.war owner=user group=group mode=0755 
     with_fileglob: /tmp/delivery/app*.war 

但如果有多個文件?
如果可能,我建議先註冊stdout命令,並從那裏獲取文件名。

+0

工作正常!謝謝。關於如果有多個文件,在我的劇本中,我在下載戰爭之前刪除目錄內容。 –