--- # role: fastpass-first-control-plane # description: FastPass First Control Plane # author: Ryan Blundon # version: 1.0.0 # date: 2025-09-27 - name: Setup DNS record for cluster ansible.builtin.include_role: name: dns-manager vars: host_name: "{{ cluster_name }}" - name: Open services for control plane become: true when: ansible_os_family == "Debian" block: - name: Open firewall ports for control plane community.general.ufw: rule: allow name: "{{ item }}" loop: "{{ kubernetes_services_control_plane }}" - name: Create initial kubelet config file become: true ansible.builtin.copy: dest: /var/lib/kubelet/config.yaml owner: root group: root mode: "0644" content: | apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd containerRuntimeEndpoint: unix:///run/containerd/containerd.sock - name: Initialize Kubernetes cluster become: true ansible.builtin.command: argv: - kubeadm - init - --apiserver-advertise-address={{ ip_address }} - --control-plane-endpoint={{ cluster_name }} - --pod-network-cidr={{ pod_network_cidr }} - --service-cidr={{ service_cidr }} args: creates: /etc/kubernetes/admin.conf register: kubeadm_init changed_when: kubeadm_init.rc == 0 - name: Ensure kubelet is enabled and started become: true ansible.builtin.systemd: name: kubelet enabled: true state: started - name: Setup kubeconfig for FastPass cluster ansible.builtin.include_role: name: kubeconfig-manager # - name: Download tigera-operator manifest # delegate_to: localhost # ansible.builtin.get_url: # url: https://raw.githubusercontent.com/projectcalico/calico/{{ calico_version }}/manifests/tigera-operator.yaml # dest: /tmp/tigera-operator.yaml # mode: "0644" # - name: Install tigera-operator from downloaded file # delegate_to: localhost # kubernetes.core.k8s: # kubeconfig: "{{ local_home }}/.kube/config" # state: present # src: /tmp/tigera-operator.yaml # - name: Download Calico CRDs # delegate_to: localhost # ansible.builtin.get_url: # url: https://raw.githubusercontent.com/projectcalico/calico/{{ calico_version }}/manifests/custom-resources.yaml # dest: /tmp/custom-resources.yaml # mode: "0644" # - name: Install Calico CRDs from downloaded file # delegate_to: localhost # kubernetes.core.k8s: # kubeconfig: "{{ local_home }}/.kube/config" # state: present # src: /tmp/custom-resources.yaml - name: Download Flannel CNI delegate_to: localhost ansible.builtin.get_url: url: https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml dest: /tmp/kube-flannel.yaml mode: "0644" - name: Install Flannel CNI from downloaded file delegate_to: localhost kubernetes.core.k8s: kubeconfig: "{{ local_home }}/.kube/config" state: present src: /tmp/kube-flannel.yaml