57 lines
1.8 KiB
YAML
57 lines
1.8 KiB
YAML
- name: Set Up Redis Cluster
|
|
hosts: init
|
|
become: true
|
|
tasks:
|
|
- name: Create Redis Config Map
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
src: /tmp/k8s/redis/01-config-map.yml
|
|
kubeconfig: /etc/rancher/k3s/k3s.yaml
|
|
|
|
- name: Create Redis Nodes
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
src: /tmp/k8s/redis/02-redis.yml
|
|
kubeconfig: /etc/rancher/k3s/k3s.yaml
|
|
|
|
- name: Wait for Redis Nodes
|
|
ansible.builtin.command:
|
|
kubectl -n=redis rollout status --timeout=10m sts/redis-cluster
|
|
changed_when: false
|
|
|
|
- name: Create ClusterIP Service
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
src: /tmp/k8s/redis/03-cluster-ip.yml
|
|
kubeconfig: /etc/rancher/k3s/k3s.yaml
|
|
|
|
- name: Grab Node IPs
|
|
ansible.builtin.shell:
|
|
echo $(kubectl get pods -l app=redis-cluster -n redis -o json | jq -r '.items | map(.status.podIP) | join(":6379 ")'):6379
|
|
args:
|
|
executable: /bin/bash
|
|
register: redis_node_ips
|
|
changed_when: false
|
|
tags:
|
|
- skip_ansible_lint
|
|
|
|
- name: Display Node IPs
|
|
ansible.builtin.debug:
|
|
msg: "{{ redis_node_ips.stdout }}"
|
|
|
|
- name: Check if Redis cluster is already active
|
|
ansible.builtin.shell: >
|
|
set -o pipefail
|
|
kubectl exec redis-cluster-0 -n redis -- redis-cli -p 6379 cluster info | grep cluster_state
|
|
args:
|
|
executable: /bin/bash
|
|
register: redis_cluster_state
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Activate Redis Cluster
|
|
ansible.builtin.shell: >
|
|
kubectl exec redis-cluster-0 -n redis -- redis-cli --cluster create --cluster-replicas 1 {{ redis_node_ips.stdout }} --cluster-yes
|
|
when: "'cluster_state:ok' not in redis_cluster_state.stdout"
|
|
changed_when: false
|