oc-deploy/ansible/Argo
2025-09-26 14:12:01 +02:00
..
argo-service.yml All the Ansible playbooks used to deploy k3s, argo server, admiralty and minio 2025-09-26 14:12:01 +02:00
deploy_argo.yml All the Ansible playbooks used to deploy k3s, argo server, admiralty and minio 2025-09-26 14:12:01 +02:00
deploy_k3s.yml All the Ansible playbooks used to deploy k3s, argo server, admiralty and minio 2025-09-26 14:12:01 +02:00
README.md All the Ansible playbooks used to deploy k3s, argo server, admiralty and minio 2025-09-26 14:12:01 +02:00

Prerequisites

Ensure that you have the following installed on your local machine:

  • Ansible
  • SSH access to the target host
  • Required dependencies for Kubernetes

Two passwords are required via the prompt:

  1. The username used to connect to the host via SSH.
  2. The root password for privilege escalation.
  • You can use a user on the name with NOPASSWD permissions and not use --ask-become-pass

  • You can use ssh-copy-id on the remote host on the user that you will provide and not use --ask-pass

Deployment Instructions

Deploying K3s

Replace HOST_NAME with the IP address or hostname of the target machine in my_hosts.yaml, then run:

ansible-playbook -i <YOUR_HOST_IP>, deploy_k3s.yml --extra-vars "user_prompt=YOUR_USER" --ask-pass --ask-become-pass

This playbook:

  • Updates package repositories.
  • Installs necessary dependencies.
  • Ensures the user has sudo privileges.
  • Downloads and installs K3s.
  • Configures permissions for Kubernetes operations.
  • Enables auto-completion for kubectl.
  • Reboots the machine to apply changes.

Deploying Argo Workflows

Replace HOST_NAME with the IP address or hostname of the target machine in my_hosts.yaml, then run:

ansible-playbook -i <YOUR_HOST_IP>, deploy_argo.yml --extra-vars "user_prompt=<YOUR_USER>" --ask-pass --ask-become-pass

This playbook:

  • Ensures the argo namespace exists in Kubernetes.
  • Deploys Argo Workflows using the official manifest.
  • Waits for the argo-server pod to be running.
  • Patches the deployment for first-time connection issues.
  • Applies a service configuration to expose Argo Workflows via NodePort.
  • Installs the Argo CLI.
  • Enables CLI autocompletion.
  • Configures kubectl for Argo access.

Additional Notes

  • The service account used by default is argo:default, which may not have sufficient permissions. Use argo:argo instead:
    argo submit -f workflow.yaml --serviceaccount=argo
    
  • The Argo CLI is installed in /usr/local/bin/argo.
  • The Kubernetes configuration file is copied to ~/.kube/config.

Troubleshooting

  • If the deployment fails due to permissions, ensure the user has sudo privileges.
  • Check the status of Argo pods using:
    kubectl get pods -n argo
    
  • If Argo Workflows is not accessible, verify that the NodePort service is correctly configured.

References