Deploy Ansible playbooks or Kubernetes manifests to their targets.
| Status | Color | Meaning |
|---|---|---|
| ok | Green | Succeeded, no change |
| changed | Yellow | Made changes |
| failed | Red | Task failed |
| skipped | Cyan | Skipped |
| unreachable | Red | Host unreachable |
| Status | Description |
|---|---|
| Queued | Waiting to start |
| Pending Approval | Awaiting approval |
| Running | Executing |
| Completed | Success |
| Failed | Errors occurred |
| Cancelled | Stopped by user |
When a policy attached to the project requires approval before deployment:
The deployment is queued but not executed. Approvers are notified via configured alert channels.
The approver sees the deployment in the project's deployment history with a Pending Approval badge and can review the planned changes.
| Decision | Result |
|---|---|
| Approve | Deployment proceeds immediately |
| Reject | Deployment is cancelled — a rejection reason is required and stored |
Rejection reason is stored on the deployment record and visible in deployment history. This creates an audit trail of why a deployment was stopped.
After a successful deployment, ops0 records the expected configuration state. Subsequent discovery scans compare live server/cluster state against this expected state. When a discrepancy is found:
Run the configuration deployment again to bring the server back to the expected state and resolve the drift.
become: yes to playbook or fix permissions.kubectl rollout undo deployment/name--limit to test on one hostProject: nginx-webserver-setup
Target: production-web (4 servers)
Options:
☑ Check Mode (dry run first)
☑ Diff Mode (show changes)
☐ Verbose
Limit: (none - all servers)
Tags: nginx,ssl
PLAY [Configure secure nginx web server] *****************************
TASK [Gathering Facts] ***********************************************
ok: [web-1.example.com]
ok: [web-2.example.com]
ok: [web-3.example.com]
ok: [web-4.example.com]
TASK [nginx : Install nginx] *****************************************
ok: [web-1.example.com]
ok: [web-2.example.com]
ok: [web-3.example.com]
ok: [web-4.example.com]
TASK [nginx : Copy nginx configuration] ******************************
changed: [web-1.example.com]
changed: [web-2.example.com]
changed: [web-3.example.com]
changed: [web-4.example.com]
--- /etc/nginx/nginx.conf
+++ /etc/nginx/nginx.conf.new
@@ -23,6 +23,8 @@
+ gzip on;
+ gzip_types text/plain text/css application/json;
TASK [certbot : Obtain SSL certificate] ******************************
changed: [web-1.example.com]
changed: [web-2.example.com]
changed: [web-3.example.com]
changed: [web-4.example.com]
PLAY RECAP ***********************************************************
web-1.example.com : ok=6 changed=3 unreachable=0 failed=0
web-2.example.com : ok=6 changed=3 unreachable=0 failed=0
web-3.example.com : ok=6 changed=3 unreachable=0 failed=0
web-4.example.com : ok=6 changed=3 unreachable=0 failed=0
Deployment #47 - nginx-webserver-setup
Started: 2024-01-15 10:30:00
Status: Completed
Duration: 2m 34s
Summary:
─────────────────────────────────────
Hosts: 4
OK: 24
Changed: 12
Failed: 0
Skipped: 0
─────────────────────────────────────
Project: api-gateway-deploy
Target: production-eks
Namespace: api-gateway
Options:
☑ Dry Run (server-side)
☐ Prune
namespace/api-gateway created (dry run)
deployment.apps/nodejs-app created (dry run)
service/nodejs-app created (dry run)
horizontalpodautoscaler.autoscaling/nodejs-app-hpa created (dry run)
Deployment #23 - api-gateway-deploy
Started: 2024-01-15 14:22:00
Status: Completed
Duration: 45s
Applied Resources:
─────────────────────────────────────
✓ namespace/api-gateway created
✓ deployment.apps/nodejs-app created
✓ service/nodejs-app created
✓ horizontalpodautoscaler/nodejs-app-hpa created
─────────────────────────────────────
Deployment Rollout:
Desired: 3
Updated: 3
Ready: 3
Available: 3
kubectl get pods -n api-gateway
NAME READY STATUS RESTARTS AGE
nodejs-app-7d9f8c6b4d-2xkjp 1/1 Running 0 45s
nodejs-app-7d9f8c6b4d-9vwrt 1/1 Running 0 45s
nodejs-app-7d9f8c6b4d-kp3mn 1/1 Running 0 45s
kubectl get hpa -n api-gateway
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS
nodejs-app-hpa Deployment/nodejs-app 12%/70% 3 10 3