2015-10-01 3 views
1

Ansible 1.9.2/новее.Ansible - Поддерживает ли оболочка оболочки * расширение

Playbook:

# Push Performance tests artifact zip file on remote jmeter machine 
- name: Push Performance tests artifact zip file on remote jmeter machine 
    copy: src="performance-tests-*.zip" dest={{ common_download_dir }} 

Она ошибки вне:

19:32:08 TASK: [perf_tests | Push Performance tests artifact zip file on remote jmeter machine] *** 
19:32:08 fatal: [jmeter01.server.in.vcloud] => input file not found at /home/service/workspace/run-project-performance-tests/build/artifacts/roles/perf_tests/files/performance-tests-*.zip or /home/service/workspace/run-project-performance-tests/build/artifacts/performance-tests-*.zip 
19:32:08 
19:32:08 FATAL: all hosts have already failed -- aborting 

Я проверил на исходной машине (где я бегу анзибль), рабочая область имеет действительный файл: производительность-тесты-0,0 .8-20151001.232123-11.zip

Невозможно расширить расширение оболочки, т.е. * в параметре src = (во всех файлах) во время операции копирования, например copy: src="somePath/*.zip" dest="somePathOnRemoteMachine"?

Все примеры на недоступном сайте: https://docs.ansible.com/ansible/copy_module.html показывает .. только один файл для src = ... параметр.

PS: Я не использую параметр проверки в модуле копирования.

ответ

2

Вы можете использовать http://docs.ansible.com/ansible/playbooks_loops.html#looping-over-fileglobs with_fileglob, чтобы сопоставить все файлы в одном каталоге, не рекурсивно, которые соответствуют шаблону. Его можно использовать следующим образом:

# copy each file over that matches the given pattern 
- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600 
    with_fileglob: 
    - /playbooks/files/fooapp/* 
+0

Звучит многообещающе, я попробую это и вернусь обратно. Благодарю. –

+0

Он работал (я использовал xxxx - *. Zip) для меня. Я видел блог, в котором говорилось, что это просто * тогда это может не сработать, но *. * Работал. –

+0

КАК Я буду делать то же самое (расширение оболочки), если я использую «unarchive» вместо «copy» module? –

1

Это не так.

Я думаю, что самым простым способом было бы использовать модуль shell и выдавать команду cp напрямую.

+0

Я ожидал этого. Странно, почему Ansible не может расширять оболочку (похоже, благодаря Jinja2?). Другое дело, что я заметил, что он не позволяет мне использовать переменную для ex: {{var _ {{giga}} _ value}} .. где giga может быть «новым» или «старым», а var_new_value «NEW», а var_old_value - OLD ", а затем с помощью {{var _ {{giga}} _ значение}} Я не могу оценить его для любой из двух переменных new_xxx_value в зависимости от того, что установлено в переменной giga. –

+0

@ArunSangal Это неспособность расширять оболочку не имеет ничего общего с jinja2. Это потому, что он не использует оболочку для оценки аргументов. – Dan

+0

@ArunSangal Кроме того, это немного круговое движение, но вы можете получить доступ к переменным «программно», чтобы выполнить то, что вы ищете в примере в своем комментарии: http://docs.ansible.com/ansible/faq.html#how- do-i-access-a-variable-name-programatically – Dan