71 lines
2.2 KiB
YAML
71 lines
2.2 KiB
YAML
- block:
|
|
|
|
- name: Install argo-cd chart
|
|
kubernetes.core.helm:
|
|
name: argo-cd
|
|
chart_ref: /opt/metacluster/helm-charts/argo-cd
|
|
release_namespace: argo-cd
|
|
create_namespace: true
|
|
wait: false
|
|
kubeconfig: "{{ kubeconfig.path }}"
|
|
values: "{{ components.argocd.chart_values }}"
|
|
|
|
- name: Ensure argo-cd API availability
|
|
ansible.builtin.uri:
|
|
url: https://gitops.{{ vapp['metacluster.fqdn'] }}/api/version
|
|
method: GET
|
|
register: api_readycheck
|
|
until:
|
|
- api_readycheck.json.Version is defined
|
|
retries: "{{ playbook.retries }}"
|
|
delay: "{{ playbook.delay.long }}"
|
|
|
|
- name: Generate argo-cd API token
|
|
ansible.builtin.uri:
|
|
url: https://gitops.{{ vapp['metacluster.fqdn'] }}/api/v1/session
|
|
method: POST
|
|
force_basic_auth: yes
|
|
body:
|
|
username: admin
|
|
password: "{{ vapp['metacluster.password'] }}"
|
|
register: argocd_api_token
|
|
|
|
- name: Configure metacluster-gitops repository
|
|
ansible.builtin.template:
|
|
src: gitrepo.j2
|
|
dest: /var/lib/rancher/k3s/server/manifests/{{ _template.name }}-manifest.yaml
|
|
owner: root
|
|
group: root
|
|
mode: 0600
|
|
vars:
|
|
_template:
|
|
name: argocd-gitrepo-metacluster
|
|
namespace: argo-cd
|
|
uid: "{{ lookup('ansible.builtin.password', '/dev/null length=5 chars=ascii_lowercase,digits seed=inventory_hostname') }}"
|
|
privatekey: "{{ lookup('ansible.builtin.file', '~/.ssh/git_rsa_id') | indent(4, true) }}"
|
|
notify:
|
|
- Apply manifests
|
|
|
|
- name: Create applicationset
|
|
ansible.builtin.template:
|
|
src: applicationset.j2
|
|
dest: /var/lib/rancher/k3s/server/manifests/{{ _template.name }}-manifest.yaml
|
|
owner: root
|
|
group: root
|
|
mode: 0600
|
|
vars:
|
|
_template:
|
|
name: argocd-applicationset-metacluster
|
|
namespace: argo-cd
|
|
notify:
|
|
- Apply manifests
|
|
|
|
- name: Trigger handlers
|
|
ansible.builtin.meta: flush_handlers
|
|
|
|
module_defaults:
|
|
ansible.builtin.uri:
|
|
validate_certs: no
|
|
status_code: [200, 201]
|
|
body_format: json
|