2013-10-09 4 views
1

поэтому у меня этот кусок yaml в моем ansible проекта.Как я могу передать параметр как «целое» в недоступном?

- name: common | register vim as a type of editor for update-alternatives 
    command: update-alternatives --install "/usr/bin/editor" "editor" $(which vim) 100 
    sudo: yes 

То, что я хочу сделать, это зарегистрироваться в качестве своего рода editor, установите priority до 100.

, как я могу выполнить эту строку в терминале, однако, я не могу писать в ansible, и вот ошибка:

stderr: update-alternatives: priority must be an integer

Есть ли в любом случае для меня перенос «100» на целое, а не на строку?

+0

Что отличная команда, я не слышал об этом! Вот более подробная информация о том, как он управляет символическими ссылками. http://askubuntu.com/questions/233190/what-exactly-does-update-alternatives-do – AnneTheAgile

ответ

2

источник из ansible:

If you want to run a command through the shell (say you are using <, >, |, etc), you actually want the shell module instead. The command module is much more secure as it's not affected by the user's environment.

В этой ситуации, используйте вместо shell модуль.

Если вы по-прежнему хотите получить более безопасный command.

Обозначает любая команда оболочки на полный путь (поскольку среда не загружена).

1

не может пройти $(which vim) здесь.

если я изменить линию:

command: update-alternatives --install "/usr/bin/editor" "editor" "/usr/bin/vim" 100

проблема решена.