From b187d5012df4fe09f30916734ed0bb91ae8dcace Mon Sep 17 00:00:00 2001
From: Gorka Benguria Elguezabal <gorka.benguria@tecnalia.com>
Date: Tue, 1 Jun 2021 09:00:04 +0200
Subject: [PATCH] enables ingress and metallb

---
 Vagrantfile                                   |  3 +++
 ansible/01_add_required_ansible_modules.sh    | 12 +++++++++
 ...EtcHosts.sh => 02_hosts_from_inventory.sh} |  0
 ansible/{02_upgrade.sh => 03_upgrade.sh}      |  0
 ansible/{03_epel.sh => 04_epel.sh}            |  0
 .../{04_development.sh => 05_development.sh}  |  0
 ..._eth1.sh => 06_check_macs_vagrant_eth1.sh} |  0
 ...> 07_install_kubernetes_kubeadm_docker.sh} |  0
 ....sh => 08_bootstrap_kubernetes_kubeadm.sh} |  0
 ....sh => 09_enable_kubectl_at_management.sh} |  0
 ansible/10_calico_network_kubernetes.sh       | 12 +++++++++
 ...bernetes.sh => 11_kubernetes_dashboard.sh} |  2 +-
 ansible/12_enable_helm_at_management.sh       | 12 +++++++++
 ansible/13_install_metallb.sh                 | 12 +++++++++
 ansible/14_install_nginx_ingress.sh           | 12 +++++++++
 .../files/requirements.yaml                   |  4 +++
 .../ansible_kubernetes/tasks/main.yaml        | 13 ++++++++++
 .../add_required_ansible_modules/site.yaml    |  5 ++++
 ansible/ansible.cfg                           |  1 +
 .../roles/kubernetes_master/tasks/main.yaml   |  2 +-
 .../roles/kubernetes_node/tasks/main.yaml     |  2 +-
 .../roles/calico/tasks/main.yaml              |  0
 .../site.yaml                                 |  0
 .../clean-kubernetes/files/clean-kubernetes   |  1 +
 .../roles/helm/tasks/main.yaml                | 22 ++++++++++++++++
 ansible/enable_helm_at_management/site.yaml   |  5 ++++
 .../roles/kubectl_user/tasks/main.yaml        |  2 +-
 .../enable_kubectl_at_management/site.yaml    |  5 +++-
 .../roles/metallb/tasks/main.yaml             | 25 +++++++++++++++++++
 .../roles/metallb/templates/values.yaml.j2    |  6 +++++
 .../roles/metallb/vars/main.yaml              |  2 ++
 ansible/install_metallb/site.yaml             |  5 ++++
 .../roles/nginx_ingress/tasks/main.yaml       | 18 +++++++++++++
 .../roles/nginx_ingress/vars/main.yaml        |  2 ++
 ansible/install_nginx_ingress/site.yaml       |  6 +++++
 .../roles/dashboard/tasks/main.yaml           |  9 +++++++
 ansible/kubernetes_dashboard/site.yaml        |  5 ++++
 scripts/ansible/install.sh                    | 16 ++++++++++--
 38 files changed, 214 insertions(+), 7 deletions(-)
 create mode 100755 ansible/01_add_required_ansible_modules.sh
 rename ansible/{01_addHostsToEtcHosts.sh => 02_hosts_from_inventory.sh} (100%)
 rename ansible/{02_upgrade.sh => 03_upgrade.sh} (100%)
 rename ansible/{03_epel.sh => 04_epel.sh} (100%)
 rename ansible/{04_development.sh => 05_development.sh} (100%)
 rename ansible/{05_check_macs_vagrant_eth1.sh => 06_check_macs_vagrant_eth1.sh} (100%)
 rename ansible/{06_install_kubernetes_kubeadm_docker.sh => 07_install_kubernetes_kubeadm_docker.sh} (100%)
 rename ansible/{07_bootstrap_kubernetes_kubeadm.sh => 08_bootstrap_kubernetes_kubeadm.sh} (100%)
 rename ansible/{08_enable_kubectl_at_management.sh => 09_enable_kubectl_at_management.sh} (100%)
 create mode 100755 ansible/10_calico_network_kubernetes.sh
 rename ansible/{09_network_kubernetes.sh => 11_kubernetes_dashboard.sh} (81%)
 create mode 100755 ansible/12_enable_helm_at_management.sh
 create mode 100755 ansible/13_install_metallb.sh
 create mode 100755 ansible/14_install_nginx_ingress.sh
 create mode 100755 ansible/add_required_ansible_modules/ansible_kubernetes/files/requirements.yaml
 create mode 100755 ansible/add_required_ansible_modules/ansible_kubernetes/tasks/main.yaml
 create mode 100755 ansible/add_required_ansible_modules/site.yaml
 rename ansible/{network_kubernetes => calico_network_kubernetes}/roles/calico/tasks/main.yaml (100%)
 rename ansible/{network_kubernetes => calico_network_kubernetes}/site.yaml (100%)
 create mode 100755 ansible/enable_helm_at_management/roles/helm/tasks/main.yaml
 create mode 100755 ansible/enable_helm_at_management/site.yaml
 create mode 100755 ansible/install_metallb/roles/metallb/tasks/main.yaml
 create mode 100755 ansible/install_metallb/roles/metallb/templates/values.yaml.j2
 create mode 100755 ansible/install_metallb/roles/metallb/vars/main.yaml
 create mode 100755 ansible/install_metallb/site.yaml
 create mode 100755 ansible/install_nginx_ingress/roles/nginx_ingress/tasks/main.yaml
 create mode 100755 ansible/install_nginx_ingress/roles/nginx_ingress/vars/main.yaml
 create mode 100755 ansible/install_nginx_ingress/site.yaml
 create mode 100755 ansible/kubernetes_dashboard/roles/dashboard/tasks/main.yaml
 create mode 100755 ansible/kubernetes_dashboard/site.yaml

diff --git a/Vagrantfile b/Vagrantfile
index b0c5399..ce424c8 100755
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -118,7 +118,10 @@ Vagrant.configure("2") do |config|
 				vb.customize "pre-import", [ "setproperty", "machinefolder", File.join(File.dirname(__FILE__), vms.relative_machinefolder) ]
 				vb.customize "post-boot",  [ "setproperty", "machinefolder", "default" ]
 			end
+
 			subconfig.vm.network "private_network", ip: vms.management.ip, netmask: "255.255.255.0", auto_config: true, adapter: 2
+
+			subconfig.vm.network "forwarded_port", guest: 8001, host: 8001
 		end	
 
 		subconfig.disksize.size = vms.management unless vms.management.hdd.to_s
diff --git a/ansible/01_add_required_ansible_modules.sh b/ansible/01_add_required_ansible_modules.sh
new file mode 100755
index 0000000..37fdf2c
--- /dev/null
+++ b/ansible/01_add_required_ansible_modules.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+# check if docker-compose is available if it is installed exist
+hash docker-compose > /dev/null 2>&1 && exit 0 || true
+echo Provisioning ansible...
+
+SCRIPT_DIR=$(dirname "$0")
+cd $SCRIPT_DIR
+
+export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
+ansible-playbook $SCRIPT_DIR/add_required_ansible_modules/site.yaml
diff --git a/ansible/01_addHostsToEtcHosts.sh b/ansible/02_hosts_from_inventory.sh
similarity index 100%
rename from ansible/01_addHostsToEtcHosts.sh
rename to ansible/02_hosts_from_inventory.sh
diff --git a/ansible/02_upgrade.sh b/ansible/03_upgrade.sh
similarity index 100%
rename from ansible/02_upgrade.sh
rename to ansible/03_upgrade.sh
diff --git a/ansible/03_epel.sh b/ansible/04_epel.sh
similarity index 100%
rename from ansible/03_epel.sh
rename to ansible/04_epel.sh
diff --git a/ansible/04_development.sh b/ansible/05_development.sh
similarity index 100%
rename from ansible/04_development.sh
rename to ansible/05_development.sh
diff --git a/ansible/05_check_macs_vagrant_eth1.sh b/ansible/06_check_macs_vagrant_eth1.sh
similarity index 100%
rename from ansible/05_check_macs_vagrant_eth1.sh
rename to ansible/06_check_macs_vagrant_eth1.sh
diff --git a/ansible/06_install_kubernetes_kubeadm_docker.sh b/ansible/07_install_kubernetes_kubeadm_docker.sh
similarity index 100%
rename from ansible/06_install_kubernetes_kubeadm_docker.sh
rename to ansible/07_install_kubernetes_kubeadm_docker.sh
diff --git a/ansible/07_bootstrap_kubernetes_kubeadm.sh b/ansible/08_bootstrap_kubernetes_kubeadm.sh
similarity index 100%
rename from ansible/07_bootstrap_kubernetes_kubeadm.sh
rename to ansible/08_bootstrap_kubernetes_kubeadm.sh
diff --git a/ansible/08_enable_kubectl_at_management.sh b/ansible/09_enable_kubectl_at_management.sh
similarity index 100%
rename from ansible/08_enable_kubectl_at_management.sh
rename to ansible/09_enable_kubectl_at_management.sh
diff --git a/ansible/10_calico_network_kubernetes.sh b/ansible/10_calico_network_kubernetes.sh
new file mode 100755
index 0000000..3d16a06
--- /dev/null
+++ b/ansible/10_calico_network_kubernetes.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+# check if docker-compose is available if it is installed exist
+hash docker-compose > /dev/null 2>&1 && exit 0 || true
+echo Provisioning ansible...
+
+SCRIPT_DIR=$(dirname "$0")
+cd $SCRIPT_DIR
+
+export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
+ansible-playbook $SCRIPT_DIR/calico_network_kubernetes/site.yaml
diff --git a/ansible/09_network_kubernetes.sh b/ansible/11_kubernetes_dashboard.sh
similarity index 81%
rename from ansible/09_network_kubernetes.sh
rename to ansible/11_kubernetes_dashboard.sh
index 7db6828..7049d5c 100755
--- a/ansible/09_network_kubernetes.sh
+++ b/ansible/11_kubernetes_dashboard.sh
@@ -9,4 +9,4 @@ SCRIPT_DIR=$(dirname "$0")
 cd $SCRIPT_DIR
 
 export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
-ansible-playbook $SCRIPT_DIR/network_kubernetes/site.yaml
+ansible-playbook $SCRIPT_DIR/kubernetes_dashboard/site.yaml
diff --git a/ansible/12_enable_helm_at_management.sh b/ansible/12_enable_helm_at_management.sh
new file mode 100755
index 0000000..a32e24d
--- /dev/null
+++ b/ansible/12_enable_helm_at_management.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+# check if docker-compose is available if it is installed exist
+hash docker-compose > /dev/null 2>&1 && exit 0 || true
+echo Provisioning ansible...
+
+SCRIPT_DIR=$(dirname "$0")
+cd $SCRIPT_DIR
+
+export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
+ansible-playbook $SCRIPT_DIR/enable_helm_at_management/site.yaml
diff --git a/ansible/13_install_metallb.sh b/ansible/13_install_metallb.sh
new file mode 100755
index 0000000..8376202
--- /dev/null
+++ b/ansible/13_install_metallb.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+# check if docker-compose is available if it is installed exist
+hash docker-compose > /dev/null 2>&1 && exit 0 || true
+echo Provisioning ansible...
+
+SCRIPT_DIR=$(dirname "$0")
+cd $SCRIPT_DIR
+
+export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
+ansible-playbook $SCRIPT_DIR/install_metallb/site.yaml -e "kubernetes_metallb_pool_start_ip=192.168.56.200" -e "kubernetes_metallb_pool_end_ip=192.168.56.210"
diff --git a/ansible/14_install_nginx_ingress.sh b/ansible/14_install_nginx_ingress.sh
new file mode 100755
index 0000000..3260c1a
--- /dev/null
+++ b/ansible/14_install_nginx_ingress.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+# check if docker-compose is available if it is installed exist
+hash docker-compose > /dev/null 2>&1 && exit 0 || true
+echo Provisioning ansible...
+
+SCRIPT_DIR=$(dirname "$0")
+cd $SCRIPT_DIR
+
+export ANSIBLE_CONFIG=$SCRIPT_DIR/ansible.cfg
+ansible-playbook $SCRIPT_DIR/install_nginx_ingress/site.yaml
diff --git a/ansible/add_required_ansible_modules/ansible_kubernetes/files/requirements.yaml b/ansible/add_required_ansible_modules/ansible_kubernetes/files/requirements.yaml
new file mode 100755
index 0000000..ca5ceb4
--- /dev/null
+++ b/ansible/add_required_ansible_modules/ansible_kubernetes/files/requirements.yaml
@@ -0,0 +1,4 @@
+---
+collections:
+# With just the collection name
+- community.kubernetes
diff --git a/ansible/add_required_ansible_modules/ansible_kubernetes/tasks/main.yaml b/ansible/add_required_ansible_modules/ansible_kubernetes/tasks/main.yaml
new file mode 100755
index 0000000..c7dd1b7
--- /dev/null
+++ b/ansible/add_required_ansible_modules/ansible_kubernetes/tasks/main.yaml
@@ -0,0 +1,13 @@
+# https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
+---
+- block:
+  - name: Add ansible module requirements
+    # https://github.com/helm/helm/releases
+    shell:
+      cmd: ansible-galaxy install -r {{ role_path }}/files/requirements.yaml
+    register: add_ansible_modules
+
+  - name: Add ansible module requirements
+    debug: 
+      msg: "{{ add_ansible_modules.cmd }}"
+  become: yes
\ No newline at end of file
diff --git a/ansible/add_required_ansible_modules/site.yaml b/ansible/add_required_ansible_modules/site.yaml
new file mode 100755
index 0000000..f0c491f
--- /dev/null
+++ b/ansible/add_required_ansible_modules/site.yaml
@@ -0,0 +1,5 @@
+# modified from https://github.com/danpilch/easy-kubeadm
+---
+- hosts: management
+  roles:
+    - name: ansible_kubernetes
diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg
index 0b5ddb0..6fe4f64 100755
--- a/ansible/ansible.cfg
+++ b/ansible/ansible.cfg
@@ -3,3 +3,4 @@
 host_key_checking = False
 inventory = hosts.yaml  ; This is relative to ansible.cfg folder
 remote_user = vagrant
+deprecation_warnings=False ; to remove the python version depretation warning
diff --git a/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_master/tasks/main.yaml b/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_master/tasks/main.yaml
index 1e92c6d..51932d6 100755
--- a/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_master/tasks/main.yaml
+++ b/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_master/tasks/main.yaml
@@ -50,6 +50,6 @@
   - name: Start secondary master nodes command
     debug: 
       msg: "{{ kubeadm_master_join.cmd }}"
-    when: inventory_hostname in groups['kubernetes_masters'][1:] and is_multi_master
+    when: inventory_hostname in groups['kubernetes_masters'][1] 
 
   become: yes
\ No newline at end of file
diff --git a/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_node/tasks/main.yaml b/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_node/tasks/main.yaml
index fa581ef..6ee6333 100755
--- a/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_node/tasks/main.yaml
+++ b/ansible/bootstrap_kubernetes_kubeadm/roles/kubernetes_node/tasks/main.yaml
@@ -8,7 +8,7 @@
   - name: Start secondary master nodes command
     debug: 
       msg: "{{ kubeadm_node_join.cmd }}"
-    when: inventory_hostname in groups['kubernetes_nodes']['0']
+    when: inventory_hostname in groups['kubernetes_nodes'][0]
 
   become: yes
 
diff --git a/ansible/network_kubernetes/roles/calico/tasks/main.yaml b/ansible/calico_network_kubernetes/roles/calico/tasks/main.yaml
similarity index 100%
rename from ansible/network_kubernetes/roles/calico/tasks/main.yaml
rename to ansible/calico_network_kubernetes/roles/calico/tasks/main.yaml
diff --git a/ansible/network_kubernetes/site.yaml b/ansible/calico_network_kubernetes/site.yaml
similarity index 100%
rename from ansible/network_kubernetes/site.yaml
rename to ansible/calico_network_kubernetes/site.yaml
diff --git a/ansible/clean_kubernetes_docker/roles/clean-kubernetes/files/clean-kubernetes b/ansible/clean_kubernetes_docker/roles/clean-kubernetes/files/clean-kubernetes
index d26d626..d329818 100755
--- a/ansible/clean_kubernetes_docker/roles/clean-kubernetes/files/clean-kubernetes
+++ b/ansible/clean_kubernetes_docker/roles/clean-kubernetes/files/clean-kubernetes
@@ -7,5 +7,6 @@ rm -rf /var/lib/kubelet /etc/kubernetes /var/lib/etcd /etc/cni /etc/kubernetes
 mkdir -p /etc/kubernetes
 ip link | grep -q cbr0 && ip link set cbr0 down && ip link del cbr0
 ip link | grep -q cni0 && ip link set cni0 down && ip link del cni0
+ip link | grep -q tunl0 && rmmod ipip
 systemctl start kubelet
 
diff --git a/ansible/enable_helm_at_management/roles/helm/tasks/main.yaml b/ansible/enable_helm_at_management/roles/helm/tasks/main.yaml
new file mode 100755
index 0000000..a2e0c52
--- /dev/null
+++ b/ansible/enable_helm_at_management/roles/helm/tasks/main.yaml
@@ -0,0 +1,22 @@
+# https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
+---
+- block:
+    - name: Retrieve helm binary archive.
+      # https://github.com/helm/helm/releases
+      unarchive:
+        src: https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
+        dest: /tmp
+        creates: /usr/bin/helm
+        remote_src: yes
+
+    - name: Move helm binary into place.
+      command: cp /tmp/linux-amd64/helm /usr/bin/helm
+      args:
+        creates: /usr/bin/helm
+  become: yes
+
+- name: Add helm autocompletion to bashrc for user
+  lineinfile:
+    dest: "/home/{{ ansible_user }}/.bashrc"
+    line: "source <(helm completion bash)"
+    state: present
diff --git a/ansible/enable_helm_at_management/site.yaml b/ansible/enable_helm_at_management/site.yaml
new file mode 100755
index 0000000..e899a28
--- /dev/null
+++ b/ansible/enable_helm_at_management/site.yaml
@@ -0,0 +1,5 @@
+# modified from https://github.com/danpilch/easy-kubeadm
+---
+- hosts: management
+  roles:
+    - name: helm
diff --git a/ansible/enable_kubectl_at_management/roles/kubectl_user/tasks/main.yaml b/ansible/enable_kubectl_at_management/roles/kubectl_user/tasks/main.yaml
index 5bd0bc3..9b93030 100755
--- a/ansible/enable_kubectl_at_management/roles/kubectl_user/tasks/main.yaml
+++ b/ansible/enable_kubectl_at_management/roles/kubectl_user/tasks/main.yaml
@@ -23,7 +23,7 @@
     owner: "{{ ansible_user }}"
     group: "{{ ansible_user }}"
 
-- name: Add kubectl autocompletion to bashrc for vagrant user
+- name: Add kubectl autocompletion to bashrc for user
   lineinfile:
     dest: "/home/{{ ansible_user }}/.bashrc"
     line: "source <(kubectl completion bash)"
diff --git a/ansible/enable_kubectl_at_management/site.yaml b/ansible/enable_kubectl_at_management/site.yaml
index c1d1ca0..72a6e89 100755
--- a/ansible/enable_kubectl_at_management/site.yaml
+++ b/ansible/enable_kubectl_at_management/site.yaml
@@ -16,4 +16,7 @@
 - hosts: management
   tasks:
     - name: Copy the file to {{ inventory_hostname }}
-      copy: src=buffer/admin.conf dest=/home/{{ ansible_user }}/.kube/config
+      copy: 
+        src: buffer/admin.conf 
+        dest: /home/{{ ansible_user }}/.kube/config
+        mode: '0600'
\ No newline at end of file
diff --git a/ansible/install_metallb/roles/metallb/tasks/main.yaml b/ansible/install_metallb/roles/metallb/tasks/main.yaml
new file mode 100755
index 0000000..ade0738
--- /dev/null
+++ b/ansible/install_metallb/roles/metallb/tasks/main.yaml
@@ -0,0 +1,25 @@
+---
+- name: Define sysconfig kubelet
+  template:
+    src: "values.yaml.j2"
+    dest: "/tmp/values.yaml"
+
+- name: Install bitnami repo 
+  kubernetes.core.helm_repository:
+    name: bitnami
+    repo_url: "{{ helm_chart_url }}"
+
+- name: Install metallb with helm
+  kubernetes.core.helm:
+    name: helm-bitnami-metallb
+    namespace: cluster-configuration
+    create_namespace: yes
+    chart_ref: bitnami/metallb
+    values_files:
+      - /tmp/values.yaml
+  register: install_metallb
+
+- name: Install metallb with helm command
+  debug: 
+    msg: "{{ install_metallb.command }}"
+
diff --git a/ansible/install_metallb/roles/metallb/templates/values.yaml.j2 b/ansible/install_metallb/roles/metallb/templates/values.yaml.j2
new file mode 100755
index 0000000..79ac4e4
--- /dev/null
+++ b/ansible/install_metallb/roles/metallb/templates/values.yaml.j2
@@ -0,0 +1,6 @@
+configInline:
+  address-pools:
+    - name: default
+      protocol: layer2
+      addresses:
+        - {{ kubernetes_metallb_pool_start_ip }}-{{ kubernetes_metallb_pool_end_ip }}
\ No newline at end of file
diff --git a/ansible/install_metallb/roles/metallb/vars/main.yaml b/ansible/install_metallb/roles/metallb/vars/main.yaml
new file mode 100755
index 0000000..44dc8ae
--- /dev/null
+++ b/ansible/install_metallb/roles/metallb/vars/main.yaml
@@ -0,0 +1,2 @@
+---
+helm_chart_url: "https://charts.bitnami.com/bitnami"
\ No newline at end of file
diff --git a/ansible/install_metallb/site.yaml b/ansible/install_metallb/site.yaml
new file mode 100755
index 0000000..4dd96d6
--- /dev/null
+++ b/ansible/install_metallb/site.yaml
@@ -0,0 +1,5 @@
+# modified from https://github.com/danpilch/easy-kubeadm
+---
+- hosts: management
+  roles:
+    - name: metallb
diff --git a/ansible/install_nginx_ingress/roles/nginx_ingress/tasks/main.yaml b/ansible/install_nginx_ingress/roles/nginx_ingress/tasks/main.yaml
new file mode 100755
index 0000000..fa2f3bc
--- /dev/null
+++ b/ansible/install_nginx_ingress/roles/nginx_ingress/tasks/main.yaml
@@ -0,0 +1,18 @@
+---
+- name: Install bitnami repo 
+  kubernetes.core.helm_repository:
+    name: bitnami
+    repo_url: "{{ helm_chart_url }}"
+
+- name: Install nginx ingress with helm
+  kubernetes.core.helm:
+    name: helm-bitnami-nginx-ingress
+    namespace: cluster-configuration
+    create_namespace: yes
+    chart_ref: bitnami/nginx-ingress-controller
+  register: install_nginx_ingress_controller
+
+- name: Install nginx ingress with helm command
+  debug: 
+    msg: "{{ install_nginx_ingress_controller.command }}"
+
diff --git a/ansible/install_nginx_ingress/roles/nginx_ingress/vars/main.yaml b/ansible/install_nginx_ingress/roles/nginx_ingress/vars/main.yaml
new file mode 100755
index 0000000..44dc8ae
--- /dev/null
+++ b/ansible/install_nginx_ingress/roles/nginx_ingress/vars/main.yaml
@@ -0,0 +1,2 @@
+---
+helm_chart_url: "https://charts.bitnami.com/bitnami"
\ No newline at end of file
diff --git a/ansible/install_nginx_ingress/site.yaml b/ansible/install_nginx_ingress/site.yaml
new file mode 100755
index 0000000..a1bc3c2
--- /dev/null
+++ b/ansible/install_nginx_ingress/site.yaml
@@ -0,0 +1,6 @@
+# modified from https://github.com/danpilch/easy-kubeadm
+---
+- hosts: management
+  roles:
+    - name: nginx_ingress
+    
diff --git a/ansible/kubernetes_dashboard/roles/dashboard/tasks/main.yaml b/ansible/kubernetes_dashboard/roles/dashboard/tasks/main.yaml
new file mode 100755
index 0000000..dca4057
--- /dev/null
+++ b/ansible/kubernetes_dashboard/roles/dashboard/tasks/main.yaml
@@ -0,0 +1,9 @@
+# https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
+# https://github.com/kubernetes/dashboard/tags
+---
+- name: Install kubernetes dashboard
+  shell: "kubectl apply -f 'https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml'"
+  register: dashboard_network
+- name: Install kubernetes dashboard command
+  debug: 
+    msg: "{{ dashboard_network.cmd }}"
\ No newline at end of file
diff --git a/ansible/kubernetes_dashboard/site.yaml b/ansible/kubernetes_dashboard/site.yaml
new file mode 100755
index 0000000..a62720e
--- /dev/null
+++ b/ansible/kubernetes_dashboard/site.yaml
@@ -0,0 +1,5 @@
+# modified from https://github.com/danpilch/easy-kubeadm
+---
+- hosts: management
+  roles:
+    - name: dashboard
diff --git a/scripts/ansible/install.sh b/scripts/ansible/install.sh
index c2b65b2..e1bdefa 100755
--- a/scripts/ansible/install.sh
+++ b/scripts/ansible/install.sh
@@ -5,5 +5,17 @@ set -e
 hash ansible-playbook > /dev/null 2>&1 && exit 0 || true
 echo Provisioning ansible...
 
-sudo dnf install epel-release -y
-sudo dnf install ansible -y
\ No newline at end of file
+# this script is executed as sudo therefore no need of sudo
+dnf install epel-release -y
+dnf install python3-pip -y
+
+# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#upgrading-ansible-with-pip
+python3 -m pip install --upgrade pip
+python3 -m pip install ansible 
+
+# activamos el autocompletado para todos los comandos de python en concreto por ansible
+python3 -m pip install argcomplete
+/usr/local/bin/activate-global-python-argcomplete
+
+# Centos 8 vbox has no /usr/local/bin in root path, and is where pip install ansible executables
+sed -i -e "s|\(Defaults    secure_path.*\)|\1:/usr/local/bin|m" /etc/sudoers
-- 
GitLab