Ansible:在模块中使用正则表达式" copy"

时间:2016-07-25 15:58:00

标签: continuous-integration ansible ansible-playbook ansible-1.x

上下文

我正在尝试构建continuous-integration平台并在Ansible playbook中使用maven-dependency-plugin:getNexus下载工件在上,将使用Ansible模块copy部署在远程服务器上。

为了制作轻量级和通用的剧本,我定义了一个名为app_version的变量,如果已定义,我会下载给定的版本,如果没有,我会下载最新Nexus存储库的em> version。工件将下载到给定目录(/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的工件但看起来模块不是&#39 ;提供这种能力。在我的副本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 个答案:

答案 0 :(得分:4)

您可以使用:

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

但如果有多个文件怎么办? 我建议注册先前stdout命令的shell并尽可能从那里获取文件名。