Setup Script
Overview
This Python script automates the initial setup for Snykey. It creates the required directory structure and copies configuration files for OpenBao and Redis into the appropriate locations under .container_volumes
. This prepares your environment for running the stack with Docker Compose.
Features
- Creates all necessary directories for logs, data, configs, and certificates.
- Copies OpenBao and Redis configuration files from the
configs
directory to their respective locations. - Sets secure permissions on all created directories and files.
- Provides clear output for each step, making it easy to verify setup progress.
Source
import os
import shutil
from pathlib import Path
def main():
"""
Main function to set up the directory structure and configuration files.
"""
# Get script and volume paths
dir_path: Path = Path(__file__).resolve().parent
vol: Path = dir_path.parent / ".container_volumes"
print(">>> Initializing required directories...")
# Create necessary directories
dirs: list[str] = [
"certs",
"app/logs",
"openbao/logs",
"openbao/data",
"openbao/config",
"openbao/certs",
"openbao/file",
"redis/config",
]
for d in dirs:
(vol / d).mkdir(parents=True, exist_ok=True)
# Copy configuration files for OpenBao
print("Transferring OpenBao config...")
config_src: Path = dir_path.parent / "configs" / "bao_config.hcl"
config_dst: Path = vol / "openbao" / "config" / "config.hcl"
if config_src.exists():
shutil.copy(config_src, config_dst)
print("OpenBao config copied")
else:
print(f"OpenBao config not found at {config_src}")
print("Transferring Redis config...")
redis_src: Path = dir_path.parent / "configs" / "redis_config.conf"
redis_dst: Path = vol / "redis" / "config" / "redis.conf"
if redis_src.exists():
shutil.copy(redis_src, redis_dst)
print("Redis config copied")
else:
print(f"Redis config not found at {redis_src}")
# Set permissions safely
for root, dirs, files in os.walk(vol):
for momo in dirs:
os.chmod(os.path.join(root, momo), 0o755)
for momo in files:
os.chmod(os.path.join(root, momo), 0o644)
if redis_dst.exists():
os.chmod(redis_dst, 0o644)
print("All setup steps completed.")
print("You should now run the generate_certs.py script to create the necessary certificates.")
if __name__ == "__main__":
main()