Как избежать foo=bar в ansible?

#ansible

Вопрос:

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

 - name: install virtualenv                                                          
        pip:                                                                              
            state: present                                                                
            name: mypackage                                                          
            virtualenv_python: /usr/bin/python3.6                                         
            virtualenv: "{{ perfdash_tools_venv_path }}"                                  
            extra_args: "--extra-index-url=https://myrepo"
 

Ансибл думает, что я пытаюсь сделать стиль k=v:

 ERROR! conflicting action statements: template, trigger

The error appears to be in 'tasks/main.yml': line 10, column 43, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

            extra_args: "--extra-index-url=https://myrepo"
                                          ^ here

There appears to be both 'k=v' shorthand syntax and YAML in this task. Only one syntax may be used.
 

!unsafe похоже, в данном случае это неприменимо.

(Да, сейчас я могу использовать пробелы, но это не всегда возможно.)

Комментарии:

1. Я не могу воспроизвести это. Попробуйте немного перенять пример (отбросить perfdash_tools_venv_path и преобразовать в полноценную игру).

Ответ №1:

Вы можете экранировать символы, используя {{ }} вокруг него.

В вашем случае {{'='}} избежит знака равенства.

Вот как должен выглядеть ваш сборник пьес:

 - name: install virtualenv                                                          
  pip:                                                                              
    state: present
    name: mypackage
    virtualenv_python: /usr/bin/python3.6
    virtualenv: "{{ perfdash_tools_venv_path }}"
    extra_args: "--extra-index-url{{'='}}https://myrepo"