我正在编写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
?
答案 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}}在下一个任务中设置路径的名称。