2016-08-24 3 views
0

В Ansible мне нужно автоматически взять родительский каталог или текущий путь к файлу, в некоторых из шеф-повара у нас есть chef :: config, он автоматически возьмет путь к файлу.Извлечение текущего пути файла с использованием Ansible

e.g: 
    /tasks/main.yml: 

    name: execute cmd 
    command: python file.py 

Если у меня есть «file.py» в папке задач, я должен выполнить свой сборник пьес с этого пути только как:/Главная/PlayBook/роли/образца/задачи, то только он принимает сценарий файл и запуск. Предположим, что, когда я запускаю из корневого пути, я имею в виду/home/playbook/path, он показывает «Нет такого файла или каталога»

Я пробовал поиск (env, HOME), Он просто берет/домой один, но не относящихся к этому файловому пути.

Так что взять текущий путь к файлу, как дать в незатронутом ???

Благодаря

+0

Я подозреваю, что вы пытаетесь сделать что-то неправильно. Чего вы хотите достичь? Ожидается, что Ansible будет запускать задачи на удаленных хостах. Если вам нужно выполнить свой сценарий там, вы должны скопировать его заранее или использовать модуль 'script'. –

+0

Итак, скриптовый модуль автоматически берет путь к моему файлу скрипта python и запускает его ???? – Doefi

+1

Модуль 'script' сначала скопирует файл, а затем запустит его. если вы используете роли, вы должны поместить скрипты в папку 'role/my_role/files'. –

ответ

2

Ответ от комментариев

script модуль будет копировать файл, а затем запустить его. если вы используете роли, вы должны поместить скрипты в папку roles/my_role/files.

+0

модуль скрипта обрабатывает только скрипты оболочки, этот вопрос касается скрипта python. – smiller171

+0

@ smiller171 вы можете выполнять произвольные скрипты, пока вы укажете правильный shebang. Просто добавьте '#!/Usr/bin/env python' в начало своего py-скрипта и он будет успешно выполнен. –

Смежные вопросы