Ansible playbook-解压缩到特定目录(重命名目录

Ansible playbook-解压缩到特定目录(重命名目录,ansible,Ansible,我有一本可以提取焦油档案的剧本 - name: Unarchive Installation become: yes unarchive: src: "/opt/dist-{{ version }}.tar" dest: /opt/ remote_src: yes when: inventory_hostname == ip_address oap_版本不同,所以提取的文件夹名称也不同,提取的文件夹的格式总是oa-{{versi

我有一本可以提取焦油档案的剧本

- name: Unarchive Installation
    become: yes
    unarchive:
       src: "/opt/dist-{{ version }}.tar"
       dest: /opt/
       remote_src: yes
    when: inventory_hostname == ip_address
oap_版本不同,所以提取的文件夹名称也不同,提取的文件夹的格式总是
oa-{{version}-some_number

根据oap版本的不同,
-
后面的数字是不同的,所以它会打断下一个块,进入提取的目录并安装包

- name: Run Installation
    become: yes
    command: 'python install.py --modules="Platform" --username admin --password pass --repo-base-url="http://download.com/oa/{{ version }}/repo"'
    args:
       chdir: /opt/oa-{{ version }}-1234/
有没有办法指定自定义目标文件夹名称,或者ansible可以在
oap版本
之后找到编号并将其存储到变量中,或者注册目标并将其传递给变量

问:“找出oap版本后的编号,并将其存储到变量中。”

A:考虑到柏油球

$ tar tvf test.tar.gz 
drwxrwxr-x vlado/vlado       0 2019-10-30 12:29 oa-version.0.99-3256/
-rw-rw-r-- vlado/vlado       0 2019-10-30 12:29 oa-version.0.99-3256/02
-rw-rw-r-- vlado/vlado       0 2019-10-30 12:29 oa-version.0.99-3256/01
-rw-rw-r-- vlado/vlado       0 2019-10-30 12:29 oa-version.0.99-3256/03
下面的任务

- set_fact:
    my_version: "{{ lookup('pipe', 'tar tvf test.tar.gz').splitlines().0.split(' ')[-1].split('-')[-1][:-1] }}"
- debug:
    var: my_version
给予

找到了答案

要进入该目录:

- name: Run Installation
    become: yes
    command: 'python install.py --modules="Platform" --username admin --password password --repo-base-url="http://download.com/oa/{{ version }}/repo"'
    args:
       chdir: "/opt/{{ archive_contents.files[0] }}"
    when: inventory_hostname == ip_address

谢谢弗拉基米尔,我找到了另一种方法。
- name: Unarchive Installation
    become: yes
    unarchive:
       src: "/opt/dist-{{ version }}.tar"
       dest: /opt/
      remote_src: yes
       list_files: yes
    when: inventory_hostname == ip_address
    register: archive_contents
- name: Run Installation
    become: yes
    command: 'python install.py --modules="Platform" --username admin --password password --repo-base-url="http://download.com/oa/{{ version }}/repo"'
    args:
       chdir: "/opt/{{ archive_contents.files[0] }}"
    when: inventory_hostname == ip_address