Added ArgoCD kubernetes-app (#7895)
* Added ArgoCD kubernetes-app * Update argocd_version to latest
This commit is contained in:
parent
58390c79d0
commit
8922c45556
6 changed files with 110 additions and 0 deletions
|
@ -180,6 +180,19 @@ metallb_speaker_enabled: true
|
||||||
# peer_asn: 64513
|
# peer_asn: 64513
|
||||||
# my_asn: 4200000000
|
# my_asn: 4200000000
|
||||||
|
|
||||||
|
|
||||||
|
argocd_enabled: false
|
||||||
|
# argocd_version: v2.1.6
|
||||||
|
# argocd_namespace: argocd
|
||||||
|
# Default password:
|
||||||
|
# - https://argoproj.github.io/argo-cd/getting_started/#4-login-using-the-cli
|
||||||
|
# ---
|
||||||
|
# The initial password is autogenerated to be the pod name of the Argo CD API server. This can be retrieved with the command:
|
||||||
|
# kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
|
||||||
|
# ---
|
||||||
|
# Use the following var to set admin password
|
||||||
|
# argocd_admin_password: "password"
|
||||||
|
|
||||||
# The plugin manager for kubectl
|
# The plugin manager for kubectl
|
||||||
krew_enabled: false
|
krew_enabled: false
|
||||||
krew_root_dir: "/usr/local/krew"
|
krew_root_dir: "/usr/local/krew"
|
||||||
|
|
5
roles/kubernetes-apps/argocd/defaults/main.yml
Normal file
5
roles/kubernetes-apps/argocd/defaults/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
argocd_enabled: false
|
||||||
|
argocd_version: v2.1.6
|
||||||
|
argocd_namespace: argocd
|
||||||
|
# argocd_admin_password:
|
77
roles/kubernetes-apps/argocd/tasks/main.yml
Normal file
77
roles/kubernetes-apps/argocd/tasks/main.yml
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
---
|
||||||
|
- name: Kubernetes Apps | Install yq
|
||||||
|
become: yes
|
||||||
|
get_url:
|
||||||
|
url: "https://github.com/mikefarah/yq/releases/download/v4.11.2/yq_linux_amd64"
|
||||||
|
dest: "{{ bin_dir }}/yq"
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Kubernetes Apps | Set ArgoCD template list
|
||||||
|
set_fact:
|
||||||
|
argocd_templates:
|
||||||
|
- name: namespace
|
||||||
|
file: argocd-namespace.yml
|
||||||
|
- name: install
|
||||||
|
file: argocd-install.yml
|
||||||
|
namespace: "{{ argocd_namespace }}"
|
||||||
|
url: "https://raw.githubusercontent.com/argoproj/argo-cd/{{argocd_version}}/manifests/install.yaml"
|
||||||
|
when:
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
||||||
|
|
||||||
|
- name: Kubernetes Apps | Download ArgoCD remote manifests
|
||||||
|
become: yes
|
||||||
|
get_url:
|
||||||
|
url: "{{ item.url }}"
|
||||||
|
dest: "{{ kube_config_dir }}/{{ item.file }}"
|
||||||
|
with_items: "{{ argocd_templates | selectattr('url', 'defined') | list }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.file }}"
|
||||||
|
when:
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
||||||
|
|
||||||
|
- name: Kubernetes Apps | Set ArgoCD namespace for remote manifests
|
||||||
|
become: yes
|
||||||
|
command: |
|
||||||
|
{{ bin_dir }}/yq eval-all -i '.metadata.namespace="{{argocd_namespace}}"' {{ kube_config_dir }}/{{ item.file }}
|
||||||
|
with_items: "{{ argocd_templates | selectattr('url', 'defined') | list }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.file }}"
|
||||||
|
when:
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
||||||
|
|
||||||
|
- name: Kubernetes Apps | Create ArgoCD manifests from templates
|
||||||
|
become: yes
|
||||||
|
template:
|
||||||
|
src: "{{ item.file }}.j2"
|
||||||
|
dest: "{{ kube_config_dir }}/{{ item.file }}"
|
||||||
|
with_items: "{{ argocd_templates | selectattr('url', 'undefined') | list }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.file }}"
|
||||||
|
when:
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
||||||
|
|
||||||
|
- name: Kubernetes Apps | Install ArgoCD
|
||||||
|
become: yes
|
||||||
|
kube:
|
||||||
|
name: ArgoCD
|
||||||
|
kubectl: "{{ bin_dir }}/kubectl"
|
||||||
|
filename: "{{ kube_config_dir }}/{{ item.file }}"
|
||||||
|
state: latest
|
||||||
|
with_items: "{{ argocd_templates }}"
|
||||||
|
when:
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
||||||
|
|
||||||
|
# https://github.com/argoproj/argo-cd/blob/master/docs/faq.md#i-forgot-the-admin-password-how-do-i-reset-it
|
||||||
|
- name: Kubernetes Apps | Set ArgoCD custom admin password
|
||||||
|
become: yes
|
||||||
|
shell: |
|
||||||
|
{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n {{argocd_namespace}} patch secret argocd-secret -p \
|
||||||
|
'{
|
||||||
|
"stringData": {
|
||||||
|
"admin.password": "{{argocd_admin_password|password_hash('bcrypt')}}",
|
||||||
|
"admin.passwordMtime": "'$(date +%FT%T%Z)'"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
when:
|
||||||
|
- argocd_admin_password is defined
|
||||||
|
- "inventory_hostname == groups['kube_control_plane'][0]"
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: {{argocd_namespace}}
|
||||||
|
labels:
|
||||||
|
app: argocd
|
|
@ -110,3 +110,10 @@ dependencies:
|
||||||
- inventory_hostname == groups['kube_control_plane'][0]
|
- inventory_hostname == groups['kube_control_plane'][0]
|
||||||
tags:
|
tags:
|
||||||
- metallb
|
- metallb
|
||||||
|
|
||||||
|
- role: kubernetes-apps/argocd
|
||||||
|
when:
|
||||||
|
- argocd_enabled
|
||||||
|
- inventory_hostname == groups['kube_control_plane'][0]
|
||||||
|
tags:
|
||||||
|
- argocd
|
||||||
|
|
|
@ -377,6 +377,7 @@ ingress_alb_enabled: false
|
||||||
cert_manager_enabled: false
|
cert_manager_enabled: false
|
||||||
expand_persistent_volumes: false
|
expand_persistent_volumes: false
|
||||||
metallb_enabled: false
|
metallb_enabled: false
|
||||||
|
argocd_enabled: false
|
||||||
|
|
||||||
# containerd official CLI tool
|
# containerd official CLI tool
|
||||||
nerdctl_enabled: false
|
nerdctl_enabled: false
|
||||||
|
|
Loading…
Reference in a new issue