Ansible:如何获得未归档的路径?

时间:2016-04-08 10:39:26

标签: ansible ansible-playbook

我正在编写Ansible脚本来设置zookeeper集群。提取动物园管理员焦油球后:

unarchive: src={{tmp_dir}}/zookeeper.tar.gz dest=/opt/zookeeper copy=no

我得到一个包含版本号的zookeeper目录:

[root@sc-rdops-vm09-dhcp-2-154 conf]# ls /opt/zookeeper
zookeeper-3.4.8

要继续,我必须知道提取的子目录的名称。例如,我需要将configure复制到/opt/zookeeper/zookeeper-3.4.8/conf。

如何使用Ansible语句获取zookeeper-3.4.8

2 个答案:

答案 0 :(得分:1)

或者,在继续执行后续步骤之前,您可以重命名此目录

  - name: Rename directory
    shell: mv `ls -d -1 zookeeper*` zookeeper

上面的shell命令替换(内部反引号)应该可以工作。

答案 1 :(得分:1)

试试这个:

➜  ~ cat become.yml
---
- hosts: localhost
  user: vagrant
  tasks:
      - shell: ls /opt/zookeeper
        register: path

      - debug: var=path.stdout


➜  ~ ansible-playbook -i hosts-slaves  become.yml
 [WARNING]: provided hosts list is empty, only localhost is available


PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [command] *****************************************************************
changed: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "path.stdout": "zookeeper-3.4.8"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0

然后,您可以使用{{path.stdout}}在下一个任务中设置路径的名称。