src= parameters for template and copy operations can be relative to the playbook (for /usr/bin/ansible-playbook) or current directory (for /usr/bin/ansible)

This commit is contained in:
Michael DeHaan 2012-03-06 21:13:50 -05:00
parent 7eedc3fb1a
commit 8e20ed3714
3 changed files with 13 additions and 6 deletions

View file

@ -6,8 +6,8 @@
max_clients: 200
tasks:
- include: base.yml favcolor=blue
- name: write the apache config file using vars set above
action: template src=/srv/httpd.j2 dest=/etc/httpd.conf
- name: write the foo config file using vars set above
action: template src=foo.j2 dest=/etc/some_random_foo.conf
notify:
- restart apache
- name: ensure apache is running

View file

@ -81,6 +81,7 @@ class PlayBook(object):
# playbook file can be passed in as a path or
# as file contents (to support API usage)
self.basedir = os.path.dirname(playbook)
self.playbook = self._parse_playbook(playbook)
def _include_tasks(self, play, task, dirname, new_tasks):
@ -178,7 +179,8 @@ class PlayBook(object):
module_path=self.module_path,
timeout=self.timeout,
remote_user=remote_user,
setup_cache=SETUP_CACHE
setup_cache=SETUP_CACHE,
basedir=self.basedir
).run()
def _run_task(self, pattern=None, task=None, host_list=None,

View file

@ -32,7 +32,8 @@ import Queue
import random
import paramiko
import jinja2
from ansible.utils import *
################################################
def noop(*args, **kwargs):
@ -63,6 +64,7 @@ class Runner(object):
remote_user=C.DEFAULT_REMOTE_USER,
remote_pass=C.DEFAULT_REMOTE_PASS,
background=0,
basedir=None,
setup_cache={},
verbose=False):
@ -94,6 +96,9 @@ class Runner(object):
self.remote_pass = remote_pass
self.background = background
if basedir is None:
basedir = os.getcwd()
self.basedir = basedir
# hosts in each group name in the inventory file
self._tmp_paths = {}
@ -287,7 +292,7 @@ class Runner(object):
# transfer the file to a remote tmp location
tmp_path = tmp
tmp_src = tmp_path + source.split('/')[-1]
self._transfer_file(conn, source, tmp_src)
self._transfer_file(conn, path_dwim(self.basedir, source), tmp_src)
# install the copy module
self.module_name = 'copy'
@ -318,7 +323,7 @@ class Runner(object):
tpath = tmp
tempname = os.path.split(source)[-1]
temppath = tpath + tempname
self._transfer_file(conn, source, temppath)
self._transfer_file(conn, path_dwim(self.basedir, source), temppath)
# install the template module
template_module = self._transfer_module(conn, tmp, 'template')