From 08ba8562886e74bb35bac92bde760cfcf78e5a99 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Tue, 25 Oct 2022 19:20:49 +0000 Subject: [PATCH] Standardize names and lock config --- bootstrap-daemon/pvcbootstrapd.yaml.sample | 5 ++++- bootstrap-daemon/pvcbootstrapd/Daemon.py | 2 +- bootstrap-daemon/pvcbootstrapd/lib/ansible.py | 2 +- bootstrap-daemon/pvcbootstrapd/lib/git.py | 18 ++++++------------ bootstrap-daemon/pvcbootstrapd/lib/hooks.py | 2 +- bootstrap-daemon/pvcbootstrapd/lib/tftp.py | 2 +- 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/bootstrap-daemon/pvcbootstrapd.yaml.sample b/bootstrap-daemon/pvcbootstrapd.yaml.sample index 2be8767..b8e52ed 100644 --- a/bootstrap-daemon/pvcbootstrapd.yaml.sample +++ b/bootstrap-daemon/pvcbootstrapd.yaml.sample @@ -66,7 +66,7 @@ pvc: path: "/var/home/joshua/pvc" # Path to the deploy key (if applicable) used to clone and pull the repository - keyfile: "/var/home/joshua/id_ed25519.joshua.key" + key_file: "/var/home/joshua/id_ed25519.joshua.key" # Git remote URI for the repository remote: "ssh://git@git.bonifacelabs.ca:2222/bonifacelabs/pvc.git" @@ -77,6 +77,9 @@ pvc: # Clusters configuration file clusters_file: "clusters.yml" + # Lock file to use for Git interaction + lock_file: "/run/pvcbootstrapd.lock" + # Filenames of the various group_vars components of a cluster # Generally with pvc-ansible this will contain 2 files: "base.yml", and "pvc.yml"; refer to the # pvc-ansible documentation and examples for details on these files. diff --git a/bootstrap-daemon/pvcbootstrapd/Daemon.py b/bootstrap-daemon/pvcbootstrapd/Daemon.py index 2acb2fa..16924a1 100755 --- a/bootstrap-daemon/pvcbootstrapd/Daemon.py +++ b/bootstrap-daemon/pvcbootstrapd/Daemon.py @@ -179,7 +179,7 @@ def read_config(): ) # Get the Ansible configuration - for key in ["path", "keyfile", "remote", "branch", "clusters_file"]: + for key in ["path", "key_file", "remote", "branch", "clusters_file", "lock_file"]: try: config[f"ansible_{key}"] = o_ansible[key] except Exception: diff --git a/bootstrap-daemon/pvcbootstrapd/lib/ansible.py b/bootstrap-daemon/pvcbootstrapd/lib/ansible.py index 0d0488b..aae2d36 100755 --- a/bootstrap-daemon/pvcbootstrapd/lib/ansible.py +++ b/bootstrap-daemon/pvcbootstrapd/lib/ansible.py @@ -66,7 +66,7 @@ def run_bootstrap(config, cspec, cluster, nodes): limit=f"{cluster.name}", playbook=f"{config['ansible_path']}/pvc.yml", extravars={ - "ansible_ssh_private_key_file": config["ansible_keyfile"], + "ansible_ssh_private_key_file": config["ansible_key_file"], "bootstrap": "yes", }, forks=len(nodes), diff --git a/bootstrap-daemon/pvcbootstrapd/lib/git.py b/bootstrap-daemon/pvcbootstrapd/lib/git.py index b51a60c..eece9a3 100755 --- a/bootstrap-daemon/pvcbootstrapd/lib/git.py +++ b/bootstrap-daemon/pvcbootstrapd/lib/git.py @@ -37,7 +37,7 @@ def init_repository(config): Clone the Ansible git repository """ try: - git_ssh_cmd = f"ssh -i {config['ansible_keyfile']} -o StrictHostKeyChecking=no" + git_ssh_cmd = f"ssh -i {config['ansible_key_file']} -o StrictHostKeyChecking=no" if not os.path.exists(config["ansible_path"]): print( f"First run: cloning repository {config['ansible_remote']} branch {config['ansible_branch']} to {config['ansible_path']}" @@ -61,12 +61,10 @@ def pull_repository(config): """ Pull (with rebase) the Ansible git repository """ - lockfile = "/tmp/pvcbootstrapd-git.lock" - lock = FileLock(lockfile) - with lock: + with FileLock(config['ansible_lock_file']): logger.info(f"Updating local configuration repository {config['ansible_path']}") try: - git_ssh_cmd = f"ssh -i {config['ansible_keyfile']} -o StrictHostKeyChecking=no" + git_ssh_cmd = f"ssh -i {config['ansible_key_file']} -o StrictHostKeyChecking=no" g = git.cmd.Git(f"{config['ansible_path']}") logger.debug("Performing git pull") g.pull(rebase=True, env=dict(GIT_SSH_COMMAND=git_ssh_cmd)) @@ -82,9 +80,7 @@ def commit_repository(config): """ Commit uncommitted changes to the Ansible git repository """ - lockfile = "/tmp/pvcbootstrapd-git.lock" - lock = FileLock(lockfile) - with lock: + with FileLock(config['ansible_lock_file']): logger.info( f"Committing changes to local configuration repository {config['ansible_path']}" ) @@ -111,14 +107,12 @@ def push_repository(config): """ Push changes to the default remote """ - lockfile = "/tmp/pvcbootstrapd-git.lock" - lock = FileLock(lockfile) - with lock: + with FileLock(config['ansible_lock_file']): logger.info( f"Pushing changes from local configuration repository {config['ansible_path']}" ) try: - git_ssh_cmd = f"ssh -i {config['ansible_keyfile']} -o StrictHostKeyChecking=no" + git_ssh_cmd = f"ssh -i {config['ansible_key_file']} -o StrictHostKeyChecking=no" g = git.Repo(f"{config['ansible_path']}") origin = g.remote(name="origin") origin.push(env=dict(GIT_SSH_COMMAND=git_ssh_cmd)) diff --git a/bootstrap-daemon/pvcbootstrapd/lib/hooks.py b/bootstrap-daemon/pvcbootstrapd/lib/hooks.py index f1591bb..8a0f255 100755 --- a/bootstrap-daemon/pvcbootstrapd/lib/hooks.py +++ b/bootstrap-daemon/pvcbootstrapd/lib/hooks.py @@ -43,7 +43,7 @@ def run_paramiko(config, node_address): ssh_client.connect( hostname=node_address, username=config["deploy_username"], - key_filename=config["ansible_keyfile"], + key_filename=config["ansible_key_file"], ) yield ssh_client ssh_client.close() diff --git a/bootstrap-daemon/pvcbootstrapd/lib/tftp.py b/bootstrap-daemon/pvcbootstrapd/lib/tftp.py index 0a4eb54..c947bd3 100755 --- a/bootstrap-daemon/pvcbootstrapd/lib/tftp.py +++ b/bootstrap-daemon/pvcbootstrapd/lib/tftp.py @@ -43,7 +43,7 @@ def init_tftp(config): os.makedirs(config["tftp_root_path"]) os.makedirs(config["tftp_host_path"]) shutil.copyfile( - f"{config['ansible_keyfile']}.pub", f"{config['tftp_root_path']}/keys.txt" + f"{config['ansible_key_file']}.pub", f"{config['tftp_root_path']}/keys.txt" ) build_tftp_repository(config)