bob-builds-labs

PPDM CLI Configuration Quick Start

Overview

Quick guide to set up and manage PPDM CLI configuration with multi-host support and security.

🚀 Quick Setup

Option 1: Add Your First Server

# Add production PPDM server
ppdm-cli config add production \
  --ppdm-server ppdm.mycorp.com \
  --port 8443 \
  --username admin \
  --password YourPassword123! \
  --insecure-skip-verify false \
  --timeout 30

# List configured hosts
ppdm-cli config list

Option 2: Use Environment Variables (Container/CI/CD)

# Set environment variables
export PPDM_HOST=ppdm.mycorp.com
export PPDM_USERNAME=admin
export PPDM_PASSWORD=YourPassword123!
export PPDM_PORT=8443

# Start using CLI immediately
ppdm-cli assets list

🔐 Security Setup

The CLI automatically detects plaintext passwords and prompts for encryption:

ppdm-cli config list
# 🔒 Security Required: Detected plaintext passwords
# Enter master password: ********
# Confirm master password: ********
# ✅ Security setup completed!

# Subsequent commands require master password
ppdm-cli assets list
# Enter master password: ********

Master Password Requirements:

📋 Multi-Host Management

Add Multiple Environments

# Production
ppdm-cli config add production \
  --ppdm-server ppdm-prod.mycorp.com \
  --username admin \
  --password ProdPassword123! \
  --timeout 30

# Staging
ppdm-cli config add staging \
  --ppdm-server ppdm-staging.mycorp.com \
  --username admin \
  --password StagingPassword123! \
  --insecure-skip-verify true \
  --timeout 30

# Development
ppdm-cli config add development \
  --ppdm-server ppdm-dev.mycorp.com \
  --username devadmin \
  --password DevPassword123! \
  --timeout 45

Switch Between Hosts

# List all hosts
ppdm-cli config list
# production (DEFAULT) - ppdm-prod.mycorp.com:8443 (admin)
# staging - ppdm-staging.mycorp.com:8443 (admin)
# development - ppdm-dev.mycorp.com:8443 (devadmin)

# Switch default host
ppdm-cli config default staging

# Verify change
ppdm-cli config list
# staging (DEFAULT) - ppdm-staging.mycorp.com:8443 (admin)

🔄 Update Configuration

Update Host Settings

# Change port and timeout
ppdm-cli config change production --port 9443 --timeout 60

# Update username and password
ppdm-cli config change staging \
  --username newadmin \
  --password NewPassword123!

# Toggle insecure setting
ppdm-cli config change development --insecure-skip-verify true

Show Host Details

ppdm-cli config show production
# Host: production
# Server: ppdm-prod.mycorp.com:9443
# Username: admin
# Insecure: false
# Timeout: 60s
# Created: 2026-03-19 20:36:22
# Updated: 2026-03-19 21:45:03

🗑️ Remove Hosts

# Remove a host
ppdm-cli config remove development

# Verify removal
ppdm-cli config list
# production (DEFAULT) - ppdm-prod.mycorp.com:8443 (admin)
# staging - ppdm-staging.mycorp.com:8443 (admin)

🐳 Container Deployment

Docker

docker run -e PPDM_HOST=ppdm.mycorp.com \
           -e PPDM_USERNAME=admin \
           -e PPDM_PASSWORD=YourPassword123! \
           -e PPDM_PORT=8443 \
           quay.io/delldps/ppdm-cli:latest assets list

Kubernetes

apiVersion: v1
kind: ConfigMap
data:
  PPDM_HOST: "ppdm.mycorp.com"
  PPDM_USERNAME: "admin"
  PPDM_PASSWORD: "YourPassword123!"
  PPDM_PORT: "8443"
---
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
      - name: ppdm-cli
        image: quay.io/delldps/ppdm-cli:latest
        envFrom:
        - configMapRef:
            name: ppdm-config

📁 Configuration File Location

🔄 Migration from Old Format

If you have an old configuration file, it will be automatically migrated:

# Old format (host field)
{
  "hosts": {
    "production": {
      "host": "ppdm-old.com",
      "password": "plaintext"
    }
  }
}

# format (ppdm-server field, encrypted password)
{
  "version": "2.0",
  "hosts": {
    "production": {
      "ppdm-server": "ppdm-old.com",
      "password": "encrypted-password"
    }
  },
  "encryption": {
    "method": "aes256-gcm",
    "master_password": true
  }
}

🔧 Environment Variables

Variable Description Example
PPDM_SERVER PPDM server address ppdm.mycorp.com
PPDM_USERNAME Username admin
PPDM_PASSWORD Password mypassword
PPDM_PORT Port 8443
PPDM_INSECURE_SKIP_VERIFY Skip TLS verification true
PPDM_CONFIG_FILE Custom config file path /app/config.json

🚨 Common Issues

Migration Problems

# Reset configuration if migration fails
rm ~/.ppdm/config.json
ppdm-cli config add production --ppdm-server ppdm.com --username admin --password newpass

Master Password Issues

# Reset security (loses encrypted passwords)
rm ~/.ppdm/config.json
# Re-add hosts with new master password

Permission Issues

# Fix config file permissions
chmod 600 ~/.ppdm/config.json
chown $USER:$USER ~/.ppdm/config.json