├── .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 |
--------------------------------------------------------------------------------