# ansible-playbook -i my_hosts.yaml deploy_argo.yml --ask-pass --ask-become-pass # Need to think about which serviceaccount will be used to launch the workflow, by default # uses argo:default but it doesn't have enough rights, need to use argo:argo # like '$ argo submit -f .... --serviceaccount=argo' - name: Installation de Argo hosts: all user: "{{ user_prompt }}" vars: ARGO_VERSION: "3.5.2" environment: KUBECONFIG: /home/{{ user_prompt }}/.kube/config tasks: - name: Create argo namespace kubernetes.core.k8s: state: present definition: apiVersion: v1 kind: Namespace metadata: labels: kubernetes.io/metadata.name: argo name: argo - name: Verifier si argo est déjà entrain de tourner ansible.builtin.shell: cmd: | kubectl get -n argo pods | grep -q argo-server register: argo_server_pod failed_when: argo_server_pod.rc not in [ 0, 1 ] - name: Installing argo services ansible.builtin.shell: cmd: | kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v{{ ARGO_VERSION }}/install.yaml when: argo_server_pod.rc == 1 - name: Vérifier l'état du pod argo-server ansible.builtin.shell: cmd: | argo_server_name=$(kubectl get -n argo pods | grep argo-server | cut -d ' ' -f 1) kubectl get -n argo pods $argo_server_name --output=jsonpath='{.status.phase}' register: pod_status retries: 30 delay: 10 until: pod_status.stdout == "Running" - name: Patch first connection bug ansible.builtin.shell: | kubectl patch deployment \ argo-server \ --namespace argo \ --type='json' \ -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": [ "server", "--auth-mode=server" ]}]' - name: Copying the configuration file to new host copy: src=argo-service.yml dest=$HOME mode=0755 - name: Applying the conf file to make the service a NodePort typ ansible.builtin.shell: cmd: | kubectl apply -f argo-service.yml - name: download argo CLI become: true ansible.builtin.uri: url: " https://github.com/argoproj/argo-workflows/releases/download/v{{ ARGO_VERSION }}/argo-linux-amd64.gz" method: GET dest: /var status_code: 200 headers: Content-Type: "application/json" - name: Install argo CLI become: true ansible.builtin.shell: cmd: | gunzip argo-linux-amd64.gz chmod +x argo-linux-amd64 mv ./argo-linux-amd64 /usr/local/bin/argo args: chdir: /var - name: Enable argo CLI autocomplete ansible.builtin.shell: cmd: | grep 'argo completion bash' $HOME/.bashrc || echo 'source <(argo completion bash)' >> $HOME/.bashrc