Skip to content

Commit

Permalink
feature(decrypt): Adds the possibility to set password used to decryp…
Browse files Browse the repository at this point in the history
…t Ansible vault files
  • Loading branch information
TizianoPerrucci committed Jul 18, 2015
1 parent 1db5b4b commit c8e5b99
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 13 deletions.
3 changes: 2 additions & 1 deletion prudentia/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,6 @@ def provision(self, box, *tags):
remote_pass=remote_pwd,
transport=transport,
extra_vars=self.extra_vars,
only_tags=only_tags
only_tags=only_tags,
vault_password=self.vault_password
)
14 changes: 13 additions & 1 deletion prudentia/simple.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,13 @@ def do_list(self, line):
print b


def help_decrypt(self):
print "Provide the password that will be used to decrypt Ansible vault files. " \
"For more information visit http://docs.ansible.com/playbooks_vault.html."

def do_decrypt(self, line):
self.provider.set_vault_password(line)

def do_EOF(self, line):
print "\n"
return True
Expand All @@ -154,6 +161,7 @@ def __init__(self, name, general_type=None, box_extra_type=None):
self.env = Environment(name, general_type, box_extra_type)
self.extra_vars = {'prudentia_dir': prudentia_python_dir()}
self.tags = {}
self.vault_password = False
self.load_tags()
self.provisioned = False

Expand Down Expand Up @@ -181,6 +189,9 @@ def unset_var(self, var):
self.extra_vars.pop(var, None)
print "\nUnset \'{0}\'\n".format(var)

def set_vault_password(self, pwd):
self.vault_password = pwd

def add_box(self, box):
self.env.add(box)
self.load_tags(box)
Expand Down Expand Up @@ -259,5 +270,6 @@ def provision(self, box, *tags):
remote_pass=remote_pwd,
transport=transport,
extra_vars=self.extra_vars,
only_tags=only_tags
only_tags=only_tags,
vault_password=self.vault_password
)
5 changes: 3 additions & 2 deletions prudentia/utils/provisioning.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from prudentia.domain import Box


def run_playbook(playbook_file, inventory, remote_user=C.DEFAULT_REMOTE_USER,
def run_playbook(playbook_file, inventory, vault_password, remote_user=C.DEFAULT_REMOTE_USER,
remote_pass=C.DEFAULT_REMOTE_PASS, transport=C.DEFAULT_TRANSPORT, extra_vars=None, only_tags=None):
stats = callbacks.AggregateStats()
playbook_cb = callbacks.PlaybookCallbacks(verbose=True)
Expand All @@ -27,7 +27,8 @@ def run_playbook(playbook_file, inventory, remote_user=C.DEFAULT_REMOTE_USER,
only_tags=only_tags,
callbacks=playbook_cb,
runner_callbacks=runner_cb,
stats=stats
stats=stats,
vault_password=vault_password
)

provision_success = False
Expand Down
19 changes: 19 additions & 0 deletions tests/local_cli_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import unittest

from prudentia.local import LocalCli


class TestLocalCli(unittest.TestCase):
def setUp(self):
self.cli = LocalCli()

def test_set_var(self):
var_name = 'var_name'
var_value = 'var_value'
self.cli.do_set(var_name + ' ' + var_value)
self.assertEqual(self.cli.provider.extra_vars[var_name], var_value)

def test_decrypt(self):
pwd = "this is a pwd"
self.cli.do_decrypt(pwd)
self.assertEqual(self.cli.provider.vault_password, pwd)
9 changes: 0 additions & 9 deletions tests/local_test.py → tests/local_provider_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,3 @@ def test_should_not_list_tags_if_box_not_exists(self):
ne_box = Box('simple-box-2', 'xxx.yml', 'ssh-hostname', '0.0.0.0')
self.provider.load_tags(ne_box)
self.assertEqual(self.provider.tags.has_key(ne_box.name), False)

def test_set_var(self):
var_name = 'var_name'
var_value = 'var_value'
self.provider.set_var(var_name, var_value)
self.assertEqual(self.provider.extra_vars[var_name], var_value)
var_overwritten = "var_overwritten"
self.provider.set_var(var_name, var_overwritten)
self.assertEqual(self.provider.extra_vars[var_name], var_overwritten)

0 comments on commit c8e5b99

Please sign in to comment.