From a1eba15d90aedf5a07615331ccbf05ec8e4af402 Mon Sep 17 00:00:00 2001 From: Rafal Lewandowski Date: Tue, 5 Aug 2025 12:44:04 +0200 Subject: [PATCH 1/4] add function to run custom ansible playbook --- beokay.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/beokay.py b/beokay.py index 6669cbc..35e9269 100755 --- a/beokay.py +++ b/beokay.py @@ -73,6 +73,7 @@ def parse_args(): "use") run_parser.add_argument("--vault-password-file", help="Path to an Ansible " "Vault password file used to encrypt secrets") + run_parser.add_argument("--run-ansible-playbook", default=None, help="Run specified ansible playbook from path") parsed_args = parser.parse_args() if parsed_args.action == None: @@ -173,6 +174,8 @@ def control_host_bootstrap(parsed_args): cmd = ["kayobe", "control", "host", "bootstrap"] run_kayobe(parsed_args, cmd) +def run_ansible_playbook(parsed_args): + cmd = ["ansible-playbook", parsed_args.run_ansible_playbook] def create_env_vars_script(parsed_args): """Creates an env-vars script for the kayobe environment.""" @@ -221,6 +224,8 @@ def destroy(parsed_args): def run(parsed_args): set_vault_password(parsed_args) run_kayobe(parsed_args, parsed_args.command) + if parsed_args.run_ansible_playbook: + run_ansible_playbook(parsed_args) def main(): From 6f2cbd4c40083043404710f81418788787ffe2d2 Mon Sep 17 00:00:00 2001 From: Rafal Lewandowski Date: Wed, 6 Aug 2025 10:55:11 +0200 Subject: [PATCH 2/4] move ansible playbook run to create function --- beokay.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/beokay.py b/beokay.py index 35e9269..7a23ae2 100755 --- a/beokay.py +++ b/beokay.py @@ -56,6 +56,8 @@ def parse_args(): create_parser.add_argument("--vault-password-file", help="Path to an " "Ansible Vault password file used to encrypt " "secrets") + run_parser.add_argument("--run-ansible-playbook", default=None, help="Run " + "specified ansible playbook from path") destroy_parser = subparsers.add_parser("destroy", help="Destroy a Kayobe environment") destroy_parser.add_argument("--base-path", default=os.getcwd(), @@ -73,7 +75,6 @@ def parse_args(): "use") run_parser.add_argument("--vault-password-file", help="Path to an Ansible " "Vault password file used to encrypt secrets") - run_parser.add_argument("--run-ansible-playbook", default=None, help="Run specified ansible playbook from path") parsed_args = parser.parse_args() if parsed_args.action == None: @@ -175,7 +176,9 @@ def control_host_bootstrap(parsed_args): run_kayobe(parsed_args, cmd) def run_ansible_playbook(parsed_args): + get_path(parsed_args) cmd = ["ansible-playbook", parsed_args.run_ansible_playbook] + run_kayobe(parsed_args, cmd) def create_env_vars_script(parsed_args): """Creates an env-vars script for the kayobe environment.""" @@ -213,6 +216,8 @@ def create(parsed_args): create_env_vars_script(parsed_args) if not parsed_args.no_bootstrap: control_host_bootstrap(parsed_args) + if parsed_args.run_ansible_playbook: + run_ansible_playbook(parsed_args) def destroy(parsed_args): @@ -224,8 +229,6 @@ def destroy(parsed_args): def run(parsed_args): set_vault_password(parsed_args) run_kayobe(parsed_args, parsed_args.command) - if parsed_args.run_ansible_playbook: - run_ansible_playbook(parsed_args) def main(): From ca246c6ed46b9cfb285ca41cbad11e111ad24900 Mon Sep 17 00:00:00 2001 From: Rafal Lewandowski Date: Fri, 12 Dec 2025 13:53:40 +0100 Subject: [PATCH 3/4] finish the function --- beokay.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/beokay.py b/beokay.py index 7a23ae2..7b7fd51 100755 --- a/beokay.py +++ b/beokay.py @@ -56,7 +56,7 @@ def parse_args(): create_parser.add_argument("--vault-password-file", help="Path to an " "Ansible Vault password file used to encrypt " "secrets") - run_parser.add_argument("--run-ansible-playbook", default=None, help="Run " + create_parser.add_argument("--run-ansible-playbook", default=None, help="Run " "specified ansible playbook from path") destroy_parser = subparsers.add_parser("destroy", help="Destroy a Kayobe environment") @@ -75,6 +75,8 @@ def parse_args(): "use") run_parser.add_argument("--vault-password-file", help="Path to an Ansible " "Vault password file used to encrypt secrets") + run_parser.add_argument("--run-ansible-playbook", default=None, help="Run " + "specified ansible playbook from path") parsed_args = parser.parse_args() if parsed_args.action == None: @@ -229,6 +231,8 @@ def destroy(parsed_args): def run(parsed_args): set_vault_password(parsed_args) run_kayobe(parsed_args, parsed_args.command) + if parsed_args.run_ansible_playbook: + run_ansible_playbook(parsed_args) def main(): From e5d5ba81e31169f70094aca31e0a9b6122239b5e Mon Sep 17 00:00:00 2001 From: Rafal Lewandowski Date: Wed, 27 May 2026 10:20:05 +0200 Subject: [PATCH 4/4] harden path --- beokay.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/beokay.py b/beokay.py index 0938564..168403d 100755 --- a/beokay.py +++ b/beokay.py @@ -196,8 +196,8 @@ def control_host_bootstrap(parsed_args): run_kayobe(parsed_args, cmd) def run_ansible_playbook(parsed_args): - get_path(parsed_args) - cmd = ["ansible-playbook", parsed_args.run_ansible_playbook] + playbook_path = get_path(parsed_args, parsed_args.run_ansible_playbook) + cmd = ["ansible-playbook", shlex.quote(playbook_path)] run_kayobe(parsed_args, cmd) def create_env_vars_script(parsed_args):