ansible - 是否可以在 Ansible 剧本中对 JAR 文件名使用通配符?

标签 ansible

我有一个 ansible 文件,用于将 JAR 文件从一台主机移动到另一台主机。

看起来像这样:

- hosts: all
  tasks:

    - name:
        "move jar"
      synchronize:
        src: ../target/my-project-1.0.3-SNAPSHOT.jar
        dest: ~/

问题是快照版本(当前为 1.0.3)将不断增加。我想知道是否有办法使用通配符?我尝试放入 my-project-*-SNAPSHOT.jar 但它不起作用?可能吗?

最佳答案

这可以使用 fileglob查找。

- name: Move jar
  synchronize:
    src: "{{ item }}"
    dest: "~"
  with_fileglob: 
    - "../target/my-project-*-SNAPSHOT.jar"

给定剧本

- hosts: localhost
  gather_facts: no

  tasks:
    - name: Move jar
      synchronize:
        src: "{{ item }}"
        dest: "~"
      with_fileglob: 
        - "../target/my-project-*-SNAPSHOT.jar"

结果是

/usr/local/ansible/play # ansible-playbook play.yml --inventory ../inventory.yml 

PLAY [localhost] **********************************************************************************

TASK [Move jar] ***********************************************************************************
changed: [localhost] => (item=/usr/local/ansible/play/../target/my-project-1.1.0-SNAPSHOT.jar)

PLAY RECAP ****************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

/usr/local/ansible/play # ls ~
my-project-1.1.0-SNAPSHOT.jar

关于ansible - 是否可以在 Ansible 剧本中对 JAR 文件名使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61962868/

相关文章:

Ansible local_action 示例它是如何工作的

git - Jenkins构建无法正确执行 `docker tag`命令

parsing - 如何使用 ansible 解析来自显示版本(cisco ios)的元数据

ansible - 检查值是否是列表的一部分,列表的名称位于变量中

ansible - 清除Ansible-Playbook中的错误输出

ansible - Ansible处理程序-独占重启或重新加载

ssh - ansible ssh提示known_hosts问题

ansible - 无法在 Ansible shell 模块中设置超时

ansible - 为什么使用 OpenStack-Ansible 安装时管理容器不接收 IP?

ansible - 在 with_items 循环中迭代数组