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

工作正常!谢谢。关于如果有多个文件,在我的剧本中,我在下载战争之前删除目录内容。 –