mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-30 07:18:09 +02:00
Refactored main.yml
This commit is contained in:
57
cli/fix-tabs.py
Normal file
57
cli/fix-tabs.py
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
FILES_FIXED = []
|
||||
|
||||
def fix_tabs_in_file(file_path):
|
||||
"""Replaces tab characters with two spaces in the specified file."""
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
if any('\t' in line for line in lines):
|
||||
fixed_lines = [line.replace('\t', ' ') for line in lines]
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.writelines(fixed_lines)
|
||||
FILES_FIXED.append(str(file_path))
|
||||
|
||||
def find_yml_files(path):
|
||||
"""Yield all .yml files under a given path recursively."""
|
||||
for file in path.rglob("*.yml"):
|
||||
if file.is_file():
|
||||
yield file
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Fix tab characters in all .yml files under a given path (recursively)."
|
||||
)
|
||||
parser.add_argument(
|
||||
"path",
|
||||
nargs="?",
|
||||
default="roles",
|
||||
help="Base path to search for .yml files (default: ./roles)"
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
base_path = Path(args.path).resolve()
|
||||
|
||||
if not base_path.exists():
|
||||
print(f"❌ Path does not exist: {base_path}")
|
||||
exit(1)
|
||||
|
||||
print(f"🔍 Searching for .yml files under: {base_path}\n")
|
||||
|
||||
for yml_file in find_yml_files(base_path):
|
||||
fix_tabs_in_file(yml_file)
|
||||
|
||||
if FILES_FIXED:
|
||||
print("✅ Fixed tab characters in the following files:")
|
||||
for f in FILES_FIXED:
|
||||
print(f" - {f}")
|
||||
else:
|
||||
print("✅ No tabs found in any .yml files.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@@ -1,36 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
ROLES_DIR = Path("roles") # Adjust this if needed
|
||||
FILES_FIXED = []
|
||||
|
||||
def fix_tabs_in_file(file_path):
|
||||
with open(file_path, "r") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
if any('\t' in line for line in lines):
|
||||
fixed_lines = [line.replace('\t', ' ') for line in lines]
|
||||
with open(file_path, "w") as f:
|
||||
f.writelines(fixed_lines)
|
||||
FILES_FIXED.append(str(file_path))
|
||||
|
||||
def main():
|
||||
for role_dir in sorted(ROLES_DIR.iterdir()):
|
||||
if not role_dir.is_dir():
|
||||
continue
|
||||
|
||||
vars_main = role_dir / "vars" / "main.yml"
|
||||
if vars_main.exists():
|
||||
fix_tabs_in_file(vars_main)
|
||||
|
||||
if FILES_FIXED:
|
||||
print("✅ Fixed tab characters in the following files:")
|
||||
for f in FILES_FIXED:
|
||||
print(f" - {f}")
|
||||
else:
|
||||
print("✅ No tabs found in any vars/main.yml files.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
83
cli/playbook.py
Normal file
83
cli/playbook.py
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import subprocess
|
||||
import os
|
||||
import datetime
|
||||
|
||||
def run_ansible_playbook(inventory, playbook, modes, limit=None, password_file=None, verbose=0, skip_tests=False):
|
||||
start_time = datetime.datetime.now().isoformat()
|
||||
print(f"\n▶️ Script started at: {start_time}\n")
|
||||
print("\n🛠️ Building project (make build)...\n")
|
||||
subprocess.run(["make", "build"], check=True)
|
||||
|
||||
if not skip_tests:
|
||||
print("\n🧪 Running tests (make test)...\n")
|
||||
subprocess.run(["make", "test"], check=True)
|
||||
|
||||
cmd = ["ansible-playbook", "-i", inventory, playbook]
|
||||
|
||||
if limit:
|
||||
cmd.extend(["--limit", limit])
|
||||
|
||||
for key, value in modes.items():
|
||||
val = str(value).lower() if isinstance(value, bool) else str(value)
|
||||
cmd.extend(["-e", f"{key}={val}"])
|
||||
|
||||
if password_file:
|
||||
cmd.extend(["--vault-password-file", password_file])
|
||||
else:
|
||||
cmd.extend(["--ask-vault-pass"])
|
||||
|
||||
if verbose:
|
||||
cmd.append("-" + "v" * verbose)
|
||||
|
||||
print("\n🚀 Launching Ansible Playbook...\n")
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
end_time = datetime.datetime.now().isoformat()
|
||||
print(f"\n✅ Script ended at: {end_time}\n")
|
||||
|
||||
def main():
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
parser = argparse.ArgumentParser(description="Run Ansible Playbooks")
|
||||
|
||||
parser.add_argument("inventory", help="Path to the inventory file")
|
||||
parser.add_argument("--limit", help="Limit execution to a specific server")
|
||||
parser.add_argument("--host-type", choices=["server", "personal-computer"], default="server")
|
||||
parser.add_argument("--reset", action="store_true")
|
||||
parser.add_argument("--test", action="store_true")
|
||||
parser.add_argument("--update", action="store_true")
|
||||
parser.add_argument("--backup", action="store_true")
|
||||
parser.add_argument("--cleanup", action="store_true")
|
||||
parser.add_argument("--debug", action="store_true")
|
||||
parser.add_argument("--password-file")
|
||||
parser.add_argument("--skip-tests", action="store_true")
|
||||
parser.add_argument("-v", "--verbose", action="count", default=0)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
modes = {
|
||||
"mode_reset": args.reset,
|
||||
"mode_test": args.test,
|
||||
"mode_update": args.update,
|
||||
"mode_backup": args.backup,
|
||||
"mode_cleanup": args.cleanup,
|
||||
"enable_debug": args.debug,
|
||||
"host_type": args.host_type
|
||||
}
|
||||
|
||||
playbook_file = os.path.join(os.path.dirname(script_dir), "playbook.yml")
|
||||
|
||||
run_ansible_playbook(
|
||||
inventory=args.inventory,
|
||||
playbook=playbook_file,
|
||||
modes=modes,
|
||||
limit=args.limit,
|
||||
password_file=args.password_file,
|
||||
verbose=args.verbose,
|
||||
skip_tests=args.skip_tests
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
20
cli/vault.py
Normal file
20
cli/vault.py
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import subprocess
|
||||
|
||||
def run_ansible_vault(action, filename, password_file):
|
||||
cmd = ["ansible-vault", action, filename, "--vault-password-file", password_file]
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Manage Ansible Vault")
|
||||
parser.add_argument("action", choices=["edit", "decrypt", "encrypt"], help="Vault action")
|
||||
parser.add_argument("filename", help="File to process")
|
||||
parser.add_argument("--password-file", required=True, help="Path to the Vault password file")
|
||||
args = parser.parse_args()
|
||||
|
||||
run_ansible_vault(args.action, args.filename, args.password_file)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user