with open(inventory_path, 'w') as f:
f.write('[{}]\n'.format(hosts))
h1 = '{0} ansible_connection=ssh ansible_ssh_user={1} ansible_ssh_pass={2} ' \
+ 'ansible_ssh_private_key_file=~/.ssh/id_juju_sshproxy ' \
'ansible_python_interpreter=/usr/bin/python3\n'.format(cfg['ssh-hostname'], cfg['ssh-username'],
cfg['ssh-password'])
f.write(h1)
with open(ansible_config_path, 'w') as f:
f.write('[defaults]\n')
f.write('host_key_checking = False\n')
+ # logs playbook execution attempts to the specified path
+ f.write('log_path = /var/log/ansible.log\n')
+
+ f.write('[ssh_connection]\n')
+ f.write('control_path=%(directory)s/%%h-%%r\n')
+ f.write('control_path_dir=~/.ansible/cp\n')
# Function to find the playbook path
return result
-def execute_playbook(playbook_file, vars=None):
+def execute_playbook(playbook_file, vars_dict=None):
playbook_path = find(playbook_file, '/var/lib/juju/agents/')
cfg = config()
create_ansible_cfg()
create_hosts(cfg, hosts)
- call = ['ansible-playbook', playbook_path]
- result = subprocess.check_output(call)
+ call = 'ansible-playbook %s ' % playbook_path
+
+ if vars_dict and isinstance(vars_dict, dict) and len(vars_dict) > 0:
+ call += '--extra-vars '
+
+ string_var = ''
+ for v in vars_dict.items():
+ string_var += '%s=%s ' % v
+
+ string_var = string_var.strip()
+ call += '"%s"' % string_var
+
+ call = call.strip()
+ result = subprocess.check_output(call, shell=True)
return result