2016-02-05 2 views
-1

[анзибль версию == 2.1.0]Запуск сценария с аргументами через анзибль

Для того, чтобы запустить скрипт, который присутствует локально на целевом сервере, мы можем использовать модуль анзибля в «команде». Следующее можно сделать легко:

- name: Executing getpkgs.sh to download packages. 
    command: sh "/path/to /dir/scriptName.sh" arg1 arg2 arg3 arg4 

У меня есть имена скриптов и аргументы, хранящиеся в переменных переменных. Например, следующая переменная содержит все имена скриптов и аргументы, которые должны быть переданы эти сценарии:

scripts_to_execute: 
    - { filename: "/path/to/file/file1.sh", args: "arg11 arg12 arg13"} 
    - { filename: "/path/to/file/file2.sh", args: "arg21 arg22"} 
    - { filename: "/path/to/file/file3.sh", args: "arg31 arg32 arg33 arg34"} 

И я хочу, чтобы все эти файлы, которые уже присутствуют на целевом сервере, который будет выполняться с использованием with_items. Пытаясь достичь что-то вроде следующего:

- name: Executing all files. 
    command: sh "{{item.filename}}" "{{item.args}}" 
    with_items: scripts_to_execute 

Я пытаюсь передать имя сценария, за которой следует строка, содержащая все аргументы, которые должны быть переданы в сценарий. Но он рассматривает эту цепочку аргументов как один аргумент.

+2

Вы можете написать точное сообщение об ошибке? – udondan

+0

@udondan, Синтаксическая ошибка возникла из-за какой-то другой проблемы, я исправил ее. Отредактировал вопрос. Я пытаюсь передать несколько аргументов, но он рассматривает эту строку как единственный аргумент. Пожалуйста помоги; – Shasha99

ответ

4

Но он рассматривает эту цепочку аргументов как один аргумент.

Я думаю, что это имеет смысл, поскольку вы передаете аргументы в кавычки. Вы пробовали без кавычек?

- name: Executing all files. 
    command: sh "{{item.filename}}" {{item.args}} 
    with_items: scripts_to_execute 
Смежные вопросы