├── .gitignore ├── README.md ├── Vagrantfile └── kubernetes-setup ├── cert-manager.yaml ├── kubernetes-dashboard.yaml ├── master-playbook.yaml ├── node-playbook.yaml ├── output └── .gitkeep └── roles ├── common ├── README.md ├── defaults │ └── main.yml ├── files │ └── daemon.json ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── tests │ ├── inventory │ └── test.yml └── vars │ └── main.yml ├── master-node ├── README.md ├── defaults │ └── main.yml ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── tests │ ├── inventory │ └── test.yml └── vars │ └── main.yml └── worker-node ├── README.md ├── defaults └── main.yml ├── handlers └── main.yml ├── meta └── main.yml ├── tasks └── main.yml ├── tests ├── inventory └── test.yml └── vars └── main.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | */output/config 3 | */output/join-command 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Setup Using Ansible and Vagrant 2 | 3 | ## Overview 4 | The aim of this project is having a one line command for lifting a kubernetes cluster in your local machine fully provisioned. This is also easily extensible for installing your own stuff using Ansible. 5 | 6 | The seed for this project was an blog post that was published during 2019 in https://kubernetes.io/blog/2019/03/15/kubernetes-setup-using-ansible-and-vagrant/ that didn't work nowdays so it needed some affection for bringing it back to life. 7 | 8 | ## Why not using Kind or minikube or any other lightweight way of running k8s for testing purposes? 9 | Because of when using vagrant you can choose the underlying SO and for my own experience this allow you testing stuff under the most similar conditions that would run in your production clusters. Am I advising against Kind or similar? Not at all, if you want to try some services in a kubernetes cluster is almost sure you will be fine using Kind or similar but there are other cases where you need to have more control over your hosts running k8s. 10 | 11 | ## Getting started 12 | * `vagrant up` 13 | * `export KUBECONFIG=./kubernetes-setup/output/config` 14 | * `kubectl cluster-info` 15 | * enjoy! 16 | 17 | ## Extras 18 | 19 | * `ansible-playbook kubernetes-setup/cert-manager.yaml` for installing cert-manager 20 | * `ansible-playbook kubernetes-setup/kubernetes-dashboard.yaml` for installing official k8s dashboard 21 | 22 | ### kubernetes dashboard 23 | * `kubectl proxy` 24 | * visit `http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/overview?namespace=kubernetes-dashboard` 25 | * use the token place in `kubernetes-setup/output/token` 26 | 27 | ### Local docker registry 28 | #### In your host 29 | * `docker run -d -p 5000:5000 --restart=always --name registry registry:2` 30 | * modify your `/etc/hosts` file to include `127.0.0.1 localregistry.local` 31 | * `docker push localregistry.local:5000/:` 32 | 33 | The cluster is prepared to pull images from `localregistry.local` 34 | ## TODO 35 | * Roles becoming idempotent -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | IMAGE_NAME = ENV["IMAGE_NAME"] || "bento/ubuntu-18.04" 2 | MASTER_MEMORY = ENV["MASTER_CPUS"] || 4096 3 | MASTER_CPUS = ENV["MASTER_CPUS"] || 2 4 | WORKER_NODES = ENV["WORKER_NODES"] || 2 5 | WORKER_MEMORY = ENV["WORKER_MEMORY"] || 2048 6 | WORKER_CPUS = ENV["WORKER_CPUS"] || 1 7 | BASE_IP = ENV["BASE_IP"] || "10.0.0" 8 | KUBERNETES_VERSION= ENV["KUBERNETES_VERSION"] || "1.20.6-00" 9 | 10 | Vagrant.configure("2") do |config| 11 | config.ssh.insert_key = false 12 | 13 | config.vm.define "k8s-master" do |master| 14 | master.vm.provider "virtualbox" do |v| 15 | v.memory = MASTER_MEMORY 16 | v.cpus = MASTER_CPUS 17 | end 18 | master.vm.box = IMAGE_NAME 19 | master.vm.network "private_network", ip: "#{BASE_IP}.#{10}" 20 | master.vm.hostname = "k8s-master" 21 | master.vm.provision "ansible" do |ansible| 22 | ansible.playbook = "kubernetes-setup/master-playbook.yaml" 23 | ansible.verbose = true 24 | ansible.extra_vars = { 25 | node_ip: "#{BASE_IP}.#{10}", 26 | kubernetes_version: KUBERNETES_VERSION, 27 | } 28 | end 29 | end 30 | 31 | (1..WORKER_NODES).each do |i| 32 | config.vm.define "node-#{i}" do |node| 33 | node.vm.provider "virtualbox" do |v| 34 | v.memory = WORKER_MEMORY 35 | v.cpus = WORKER_CPUS 36 | end 37 | node.vm.box = IMAGE_NAME 38 | node.vm.network "private_network", ip: "#{BASE_IP}.#{i + 10}" 39 | node.vm.hostname = "node-#{i}" 40 | node.vm.provision "ansible" do |ansible| 41 | ansible.playbook = "kubernetes-setup/node-playbook.yaml" 42 | ansible.verbose = true 43 | ansible.extra_vars = { 44 | node_ip: "#{BASE_IP}.#{i + 10}", 45 | kubernetes_version: KUBERNETES_VERSION, 46 | } 47 | end 48 | end 49 | end 50 | end -------------------------------------------------------------------------------- /kubernetes-setup/cert-manager.yaml: -------------------------------------------------------------------------------- 1 | - hosts: localhost 2 | environment: 3 | KUBECONFIG: ./output/config 4 | vars: 5 | cert_manager_chart_ref: jetstack/cert-manager 6 | namespace: cert-manager 7 | chart_version: 1.5.3 8 | tasks: 9 | - name: Add cert manager repo 10 | community.kubernetes.helm_repository: 11 | name: jetstack 12 | repo_url: "https://charts.jetstack.io" 13 | 14 | - name: Deploy cert manager 15 | community.kubernetes.helm: 16 | name: cert-manager 17 | chart_ref: "{{ cert_manager_chart_ref }}" 18 | chart_version: "{{ chart_version }}" 19 | release_namespace: "{{ namespace }}" 20 | create_namespace: true 21 | values: 22 | installCRDs: true -------------------------------------------------------------------------------- /kubernetes-setup/kubernetes-dashboard.yaml: -------------------------------------------------------------------------------- 1 | - hosts: localhost 2 | environment: 3 | KUBECONFIG: ./output/config 4 | args: 5 | kubernetes_dashboard_url: https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 6 | tasks: 7 | - name: Install kubernetes dashboard from recommended url 8 | block: 9 | - name: Create temporary directory for manifests 10 | tempfile: 11 | state: directory 12 | suffix: kubernetes_manifests 13 | register: kubernetes_manifests 14 | 15 | - name: Download manifests 16 | get_url: 17 | url: "{{ kubernetes_dashboard_url }}" 18 | dest: "{{ kubernetes_manifests.path }}/kubernetes-dashboard.yaml" 19 | 20 | - name: Kubernetes-dashboard apply 21 | community.kubernetes.k8s: 22 | state: present 23 | definition: "{{ lookup('file', '{{ kubernetes_manifests.path }}/kubernetes-dashboard.yaml') | from_yaml_all }}" 24 | 25 | - name: Create service account for admin-user 26 | community.kubernetes.k8s: 27 | state: present 28 | definition: 29 | apiVersion: v1 30 | kind: ServiceAccount 31 | metadata: 32 | name: admin-user 33 | namespace: kubernetes-dashboard 34 | 35 | - name: Create ClusterRoleBinding for admin-user 36 | community.kubernetes.k8s: 37 | state: present 38 | definition: 39 | apiVersion: rbac.authorization.k8s.io/v1 40 | kind: ClusterRoleBinding 41 | metadata: 42 | name: admin-user 43 | roleRef: 44 | apiGroup: rbac.authorization.k8s.io 45 | kind: ClusterRole 46 | name: cluster-admin 47 | subjects: 48 | - kind: ServiceAccount 49 | name: admin-user 50 | namespace: kubernetes-dashboard 51 | 52 | - name: Get token 53 | shell: kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{ '{{' }}.data.token | base64decode{{ '}}' }}" 54 | register: token 55 | 56 | - name: Save token to a file 57 | local_action: 58 | copy content="{{ token.stdout }}" dest="./output/token" -------------------------------------------------------------------------------- /kubernetes-setup/master-playbook.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | become: true 3 | roles: 4 | - role: './roles/common' 5 | - role: './roles/master-node' -------------------------------------------------------------------------------- /kubernetes-setup/node-playbook.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | become: true 3 | roles: 4 | - role: './roles/common' 5 | - role: './roles/worker-node' -------------------------------------------------------------------------------- /kubernetes-setup/output/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/borjatur/kubernetes-using-ansible-vagrant/077480cf53b9764920449927a72f869312c702a4/kubernetes-setup/output/.gitkeep -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | Common tasks for master an worker nodes. 5 | 6 | Requirements 7 | ------------ 8 | 9 | 10 | Role Variables 11 | -------------- 12 | 13 | 14 | Dependencies 15 | ------------ 16 | 17 | 18 | Example Playbook 19 | ---------------- 20 | 21 | See examples under master-node and worker-node roles. 22 | 23 | License 24 | ------- 25 | 26 | MIT 27 | 28 | Author Information 29 | ------------------ 30 | 31 | borja.tur@gmail.com 32 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for common 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/files/daemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "exec-opts": ["native.cgroupdriver=systemd"], 3 | "log-driver": "json-file", 4 | "log-opts": { 5 | "max-size": "100m" 6 | }, 7 | "storage-driver": "overlay2", 8 | "insecure-registries":["localregistry.local:5000"] 9 | } -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for common 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/meta/main.yml: -------------------------------------------------------------------------------- 1 | galaxy_info: 2 | author: your name 3 | description: your role description 4 | company: your company (optional) 5 | 6 | # If the issue tracker for your role is not on github, uncomment the 7 | # next line and provide a value 8 | # issue_tracker_url: http://example.com/issue/tracker 9 | 10 | # Choose a valid license ID from https://spdx.org - some suggested licenses: 11 | # - BSD-3-Clause (default) 12 | # - MIT 13 | # - GPL-2.0-or-later 14 | # - GPL-3.0-only 15 | # - Apache-2.0 16 | # - CC-BY-4.0 17 | license: license (GPL-2.0-or-later, MIT, etc) 18 | 19 | min_ansible_version: 2.1 20 | 21 | # If this a Container Enabled role, provide the minimum Ansible Container version. 22 | # min_ansible_container_version: 23 | 24 | # 25 | # Provide a list of supported platforms, and for each platform a list of versions. 26 | # If you don't wish to enumerate all versions for a particular platform, use 'all'. 27 | # To view available platforms and versions (or releases), visit: 28 | # https://galaxy.ansible.com/api/v1/platforms/ 29 | # 30 | # platforms: 31 | # - name: Fedora 32 | # versions: 33 | # - all 34 | # - 25 35 | # - name: SomePlatform 36 | # versions: 37 | # - all 38 | # - 1.0 39 | # - 7 40 | # - 99.99 41 | 42 | galaxy_tags: [] 43 | # List tags for your role here, one per line. A tag is a keyword that describes 44 | # and categorizes the role. Users find roles by searching for tags. Be sure to 45 | # remove the '[]' above, if you add tags to this list. 46 | # 47 | # NOTE: A tag is limited to a single word comprised of alphanumeric characters. 48 | # Maximum 20 tags per role. 49 | 50 | dependencies: [] 51 | # List your role dependencies here, one per line. Be sure to remove the '[]' above, 52 | # if you add dependencies to this list. 53 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install packages that allow apt to be used over HTTPS 3 | apt: 4 | name: "{{ packages }}" 5 | state: present 6 | update_cache: yes 7 | vars: 8 | packages: 9 | - apt-transport-https 10 | - ca-certificates 11 | - curl 12 | - gnupg-agent 13 | - software-properties-common 14 | 15 | - name: Add an apt signing key for Docker 16 | apt_key: 17 | url: https://download.docker.com/linux/ubuntu/gpg 18 | state: present 19 | 20 | - name: Add apt repository for stable version 21 | apt_repository: 22 | repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable 23 | state: present 24 | 25 | - name: Install docker and its dependecies 26 | apt: 27 | name: "{{ packages }}" 28 | state: present 29 | update_cache: yes 30 | vars: 31 | packages: 32 | - docker-ce 33 | - docker-ce-cli 34 | - containerd.io 35 | notify: 36 | - docker status 37 | 38 | - name: Docker daemon config 39 | copy: 40 | src: daemon.json 41 | dest: "/etc/docker/daemon.json" 42 | mode: 0644 43 | 44 | - name: Restar docker 45 | systemd: 46 | state: restarted 47 | name: docker 48 | 49 | - name: Add vagrant user to docker group 50 | user: 51 | name: vagrant 52 | group: docker 53 | 54 | - name: Disable swap 55 | command: swapoff -a 56 | when: ansible_swaptotal_mb > 0 57 | 58 | - name: Add an apt signing key for Kubernetes 59 | apt_key: 60 | url: https://packages.cloud.google.com/apt/doc/apt-key.gpg 61 | state: present 62 | 63 | - name: Adding apt repository for Kubernetes 64 | apt_repository: 65 | repo: deb https://apt.kubernetes.io/ kubernetes-xenial main 66 | state: present 67 | filename: kubernetes.list 68 | 69 | - name: Install Kubernetes binaries 70 | apt: 71 | name: "{{ packages }}" 72 | state: present 73 | update_cache: yes 74 | vars: 75 | packages: 76 | - "kubelet={{ kubernetes_version }}" 77 | - "kubeadm={{ kubernetes_version }}" 78 | - "kubectl={{ kubernetes_version }}" 79 | 80 | - name: Configure node ip 81 | lineinfile: 82 | path: /etc/default/kubelet 83 | line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }} 84 | create: yes 85 | mode: 0644 86 | 87 | - name: Configure local registry running in localhost 88 | lineinfile: 89 | dest: /etc/hosts 90 | line: "10.0.2.2 localregistry.local" 91 | state: present -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/tests/inventory: -------------------------------------------------------------------------------- 1 | localhost 2 | 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | remote_user: root 4 | roles: 5 | - common 6 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/common/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for common 3 | kubernetes_version: "1.20.6-00" 4 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | Group of task for configuring a kubernetes master node. 5 | 6 | Requirements 7 | ------------ 8 | 9 | Role Variables 10 | -------------- 11 | 12 | Dependencies 13 | ------------ 14 | 15 | Requires `common` role 16 | 17 | Example Playbook 18 | ---------------- 19 | 20 | Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: 21 | 22 | ```yaml 23 | - hosts: all 24 | become: true 25 | roles: 26 | - role: './roles/common' 27 | - role: './roles/master-node' 28 | ``` 29 | 30 | License 31 | ------- 32 | 33 | MIT 34 | 35 | Author Information 36 | ------------------ 37 | borja.tur@gmail.com 38 | 39 | 40 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for master-node 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for master-node 3 | - name: docker status 4 | service: name=docker state=started 5 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/meta/main.yml: -------------------------------------------------------------------------------- 1 | galaxy_info: 2 | author: borja.tur@gmail.com 3 | description: group of task for configuring a kubernetes master node 4 | company: your company (optional) 5 | 6 | # If the issue tracker for your role is not on github, uncomment the 7 | # next line and provide a value 8 | # issue_tracker_url: http://example.com/issue/tracker 9 | 10 | # Choose a valid license ID from https://spdx.org - some suggested licenses: 11 | # - BSD-3-Clause (default) 12 | # - MIT 13 | # - GPL-2.0-or-later 14 | # - GPL-3.0-only 15 | # - Apache-2.0 16 | # - CC-BY-4.0 17 | license: license (GPL-2.0-or-later, MIT, etc) 18 | 19 | min_ansible_version: 2.1 20 | 21 | # If this a Container Enabled role, provide the minimum Ansible Container version. 22 | # min_ansible_container_version: 23 | 24 | # 25 | # Provide a list of supported platforms, and for each platform a list of versions. 26 | # If you don't wish to enumerate all versions for a particular platform, use 'all'. 27 | # To view available platforms and versions (or releases), visit: 28 | # https://galaxy.ansible.com/api/v1/platforms/ 29 | # 30 | # platforms: 31 | # - name: Fedora 32 | # versions: 33 | # - all 34 | # - 25 35 | # - name: SomePlatform 36 | # versions: 37 | # - all 38 | # - 1.0 39 | # - 7 40 | # - 99.99 41 | 42 | galaxy_tags: [] 43 | # List tags for your role here, one per line. A tag is a keyword that describes 44 | # and categorizes the role. Users find roles by searching for tags. Be sure to 45 | # remove the '[]' above, if you add tags to this list. 46 | # 47 | # NOTE: A tag is limited to a single word comprised of alphanumeric characters. 48 | # Maximum 20 tags per role. 49 | 50 | dependencies: [] 51 | # List your role dependencies here, one per line. Be sure to remove the '[]' above, 52 | # if you add dependencies to this list. 53 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Config kubeadm images 3 | command: kubeadm config images pull 4 | 5 | - name: Initialize the Kubernetes cluster using kubeadm 6 | command: kubeadm init --apiserver-advertise-address="{{ node_ip }}" --apiserver-cert-extra-sans="{{ node_ip }}" --node-name k8s-master --pod-network-cidr="{{ pod_cidr }}" 7 | 8 | - name: Setup kubeconfig for vagrant user 9 | command: "{{ item }}" 10 | with_items: 11 | - mkdir -p /home/vagrant/.kube 12 | - cp -i /etc/kubernetes/admin.conf /home/vagrant/.kube/config 13 | - chown vagrant:vagrant /home/vagrant/.kube/config 14 | 15 | - name: Install calico pod network 16 | become: false 17 | command: kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml 18 | 19 | - name: Generate join command 20 | command: kubeadm token create --print-join-command 21 | register: join_command 22 | 23 | - name: Copy join command to local file 24 | copy: content="{{ join_command.stdout_lines[0] }}" dest="./output/join-command" 25 | delegate_to: 127.0.0.1 26 | become: false 27 | 28 | - name: Copy kubeconfig to local file 29 | fetch: 30 | src: /home/vagrant/.kube/config 31 | dest: ./output/config 32 | flat: yes -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/tests/inventory: -------------------------------------------------------------------------------- 1 | localhost 2 | 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | remote_user: root 4 | roles: 5 | - master-node 6 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/master-node/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for master-node 3 | pod_cidr: "192.168.0.0/16" 4 | node_ip: "10.0.0.10" -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | Group of task for configuring a kubernetes worker node. 5 | 6 | Requirements 7 | ------------ 8 | 9 | Requires `common` role 10 | 11 | Role Variables 12 | -------------- 13 | 14 | Dependencies 15 | ------------ 16 | 17 | Requires `common` role. 18 | 19 | Example Playbook 20 | ---------------- 21 | 22 | ```yaml 23 | - hosts: all 24 | become: true 25 | roles: 26 | - role: './roles/common' 27 | - role: './roles/master-node' 28 | ``` 29 | 30 | License 31 | ------- 32 | 33 | MIT 34 | 35 | Author Information 36 | ------------------ 37 | 38 | borja.tur@gmail.com 39 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for worker-node 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for worker-node 3 | - name: docker status 4 | service: name=docker state=started -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/meta/main.yml: -------------------------------------------------------------------------------- 1 | galaxy_info: 2 | author: your name 3 | description: your role description 4 | company: your company (optional) 5 | 6 | # If the issue tracker for your role is not on github, uncomment the 7 | # next line and provide a value 8 | # issue_tracker_url: http://example.com/issue/tracker 9 | 10 | # Choose a valid license ID from https://spdx.org - some suggested licenses: 11 | # - BSD-3-Clause (default) 12 | # - MIT 13 | # - GPL-2.0-or-later 14 | # - GPL-3.0-only 15 | # - Apache-2.0 16 | # - CC-BY-4.0 17 | license: license (GPL-2.0-or-later, MIT, etc) 18 | 19 | min_ansible_version: 2.1 20 | 21 | # If this a Container Enabled role, provide the minimum Ansible Container version. 22 | # min_ansible_container_version: 23 | 24 | # 25 | # Provide a list of supported platforms, and for each platform a list of versions. 26 | # If you don't wish to enumerate all versions for a particular platform, use 'all'. 27 | # To view available platforms and versions (or releases), visit: 28 | # https://galaxy.ansible.com/api/v1/platforms/ 29 | # 30 | # platforms: 31 | # - name: Fedora 32 | # versions: 33 | # - all 34 | # - 25 35 | # - name: SomePlatform 36 | # versions: 37 | # - all 38 | # - 1.0 39 | # - 7 40 | # - 99.99 41 | 42 | galaxy_tags: [] 43 | # List tags for your role here, one per line. A tag is a keyword that describes 44 | # and categorizes the role. Users find roles by searching for tags. Be sure to 45 | # remove the '[]' above, if you add tags to this list. 46 | # 47 | # NOTE: A tag is limited to a single word comprised of alphanumeric characters. 48 | # Maximum 20 tags per role. 49 | 50 | dependencies: [] 51 | # List your role dependencies here, one per line. Be sure to remove the '[]' above, 52 | # if you add dependencies to this list. 53 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for worker-node 3 | - name: Copy the join command to server location 4 | copy: 5 | src: ./output/join-command 6 | dest: /tmp/join-command.sh 7 | mode: 0777 8 | 9 | - name: Join the node to cluster 10 | command: sh /tmp/join-command.sh -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/tests/inventory: -------------------------------------------------------------------------------- 1 | localhost 2 | 3 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | remote_user: root 4 | roles: 5 | - worker-node 6 | -------------------------------------------------------------------------------- /kubernetes-setup/roles/worker-node/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for worker-node 3 | --------------------------------------------------------------------------------