LINUX.ORG.RU
решено ФорумAdmin

Запуск одиночной команды в Ansible AWX

 ,


0

1

Добрый день, начал осваивать ansible, и решил посмотреть awx. Установил, и сейчас возник вопрос, хочу выполнить одиночную команду на хосте с иcпользованием переменной, вот на скрине

http://prntscr.com/m5lywr

Вот после выполнения получаю

http://prntscr.com/m5lze2

А вот аналогичный playbook создал и в шаблон добавил

---
- name: Hello World!
hosts: all

tasks:

- name: Hello World!
shell: echo «{{ test }}» > /tmp/1

соответственно переменную тоже добавил в шаблоне, и все отрабатывает как и надо. Можете подсказать почему одиночная не работает, не совсем понимаю почему ошибка вылазит

В модуле command надо всю строку брать в кавычки, ЕМНИП. Ну или используй модуль shell, как в playbook'e.

Deleted
()
Ответ на: комментарий от Deleted

Спасибо, попробую, в shell та же ситуация была

Ien_Shepard ★★★
() автор топика
Ответ на: комментарий от Deleted

таже ситуация таже ошибка

Traceback (most recent call last): File «/usr/lib/python2.7/site-packages/awx/main/tasks.py», line 958, in run args = self.build_args(instance, **kwargs) File «/usr/lib/python2.7/site-packages/awx/main/tasks.py», line 2316, in build_args module_args = sanitize_jinja(module_args) File «/usr/lib/python2.7/site-packages/awx/main/utils/safe_yaml.py», line 82, in sanitize_jinja raise ValueError('Inline Jinja variables are not allowed.') ValueError: Inline Jinja variables are not allowed.

Ien_Shepard ★★★
() автор топика
Последнее исправление: Ien_Shepard (всего исправлений: 1)

Судя по ошибке он не дает использовать синтаксис jinja2 в строке аргумента

Вот кусок из файла, на который он ссылается

def sanitize_jinja(arg):
    """
    For some string, prevent usage of Jinja-like flags
    """
    if isinstance(arg, six.string_types):
        # If the argument looks like it contains Jinja expressions
        # {{ x }} ...
        if re.search('\{\{[^}]+}}', arg) is not None:
            raise ValueError('Inline Jinja variables are not allowed.')
        # If the argument looks like it contains Jinja statements/control flow...
        # {% if x.foo() %} ...
        if re.search('\{%[^%]+%}', arg) is not None:
            raise ValueError('Inline Jinja variables are not allowed.')
    return arg

При этом сам ансибл нормально хавает:

$ ansible localhost -m shell -a "echo {{ test }} > /tmp/1" -e "test=123123"

localhost | CHANGED | rc=0 >>

$ cat /tmp/1
123123

CaHbl4
()
Ответ на: комментарий от CaHbl4

Спасибо, но вот как бы его заставить хавать переменную)) не зря же там для выполнения команды можно задать EXTRA VARIABLES

Ien_Shepard ★★★
() автор топика
Ответ на: комментарий от Ien_Shepard

гугл говорит о параметре ALLOW_JINJA_IN_EXTRA_VARS, но он упоминается только в Release Notes и в багтрекере на Tower один раз

в интерфейсе AWX его не нашел, может для Tower его туда вынесли

поменять можно тут

[root@awx awx]# grep ALLOW_JINJA_IN_EXTRA_VARS /usr/lib/python2.7/site-packages/awx/settings/defaults.py
ALLOW_JINJA_IN_EXTRA_VARS = 'always'
по-умолчанию значение tempate (может быть never, always, template)

после перезапуска применится, можно проверить командой

[root@awx awx]# awx-manage print_settings | grep ^ALLOW_JINJA_IN_EXTRA_VARS
ALLOW_JINJA_IN_EXTRA_VARS                = 'always'

ЗЫ у меня установка в докере и есть 2 контейнера (awx_task, awx_web). В каком из них эта настройка используется хз, я поменял в обоих

ЗЗЫ а какой вообще юзкейс в использовании подстановки переменных в ad-hoc командах в awx? Оно же про плейбуки, а отдельные команды удобнее выполнять в консоли

CaHbl4
()
Ответ на: комментарий от CaHbl4

Да, согласен что удобнее. Юзкейса как такового нет, изучал эту веб-панель, и наткнулся на эту возможность. Вот и зацепило, почему оно не работает, ведь по идеи должно, раз дает мне переменные указать. В шаблонах все в порядке, а вот тут нет. Спасибо за помощь, в целом видимо придется забить на это.

Ien_Shepard ★★★
() автор топика
Ответ на: комментарий от CaHbl4

Все получилось, спасибо, внес изменения которые вы мне подсказали

Ien_Shepard ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.