1

マスターNexusからアーティファクトをダウンロードするには、私はcontinuous-integrationプラットフォームを構築しようとしているとAnsibleplaybookに私はmaven-dependency-plugin:getを使う

コンテキスト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

これは正規表現ではなく、グロブです。 – 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 

しかし、何を、複数のファイルがある場合には?
shellコマンドのstdoutを登録し、可能であればそこからファイル名を取得することをお勧めします。

+0

うまく動作します!ありがとうございました。私のプレイブックに複数のファイルがある場合、戦争をダウンロードする前にディレクトリの内容を削除します。 –