
9 changed files with 232 additions and 0 deletions
@ -0,0 +1,12 @@ |
|||||
|
- hosts: h61 |
||||
|
vars_prompt: |
||||
|
- name: PV_password |
||||
|
prompt: “Node Password” |
||||
|
private: yes |
||||
|
vars: |
||||
|
VM_template: centos-8-small |
||||
|
VM_name: k8s |
||||
|
user: root |
||||
|
gather_facts: false |
||||
|
roles: |
||||
|
- deploy |
@ -0,0 +1,14 @@ |
|||||
|
[proxmox] |
||||
|
h61 ansible_ssh_host=192.168.0.103 |
||||
|
|
||||
|
[k8s] |
||||
|
192.168.0.16[0:2] |
||||
|
|
||||
|
[masters] |
||||
|
192.168.0.160 |
||||
|
|
||||
|
[workers] |
||||
|
192.168.0.16[1:2] |
||||
|
|
||||
|
[all:vars] |
||||
|
ansible_ssh_extra_args='-o StrictHostKeyChecking=no' |
@ -0,0 +1,13 @@ |
|||||
|
- hosts: k8s |
||||
|
user: root |
||||
|
gather_facts: false |
||||
|
roles: |
||||
|
- k8s-common |
||||
|
- hosts: masters |
||||
|
user: root |
||||
|
roles: |
||||
|
- k8s-master |
||||
|
- hosts: workers |
||||
|
user: root |
||||
|
roles: |
||||
|
- k8s-worker |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
# defaults file for proxmox_deploy |
||||
|
VM_template: debian-10-template |
||||
|
default_disk: virtio0 |
||||
|
default_interface: ens18 |
||||
|
default_volume: /dev/vda |
||||
|
default_partition: 2 |
||||
|
template_name: template-debian-deployment |
@ -0,0 +1,56 @@ |
|||||
|
--- |
||||
|
# tasks file for proxmox_deploy |
||||
|
- name: Cloning virtual machine from "{{ VM_template }}" with name "{{ VM_name }}" |
||||
|
proxmox_kvm: |
||||
|
api_user : root@pam |
||||
|
api_password: "{{ PV_password }}" |
||||
|
api_host : px2 |
||||
|
name : "{{ VM_name }}-{{ item }}" |
||||
|
node : px2 |
||||
|
vmid: 9000 |
||||
|
clone: "{{ VM_template }}" |
||||
|
timeout: 300 |
||||
|
tags: provission,test |
||||
|
loop: "{{ range(0, 3, 1)|list }}" |
||||
|
#- name: starting new Virtual Machine to change IPv4 configuration, it is necessary |
||||
|
# proxmox_kvm: |
||||
|
# api_user : root@pam |
||||
|
# api_password: “{{ PV_password }}” |
||||
|
# api_host : “{{ default_proxmox_node }}” |
||||
|
# name : “{{ VM_name }}” |
||||
|
# node : “{{ default_proxmox_node }}” |
||||
|
# state : started |
||||
|
# timeout: 300 |
||||
|
# when: ‘“{{ VM_INCREASE_DISK }}” != “0”’ |
||||
|
# register: wait |
||||
|
# tags: provission |
||||
|
- name: copy ssh public key to host |
||||
|
copy: |
||||
|
src: /root/.ssh/id_rsa.pub |
||||
|
dest: /root/.ssh/root_c200.pub |
||||
|
owner: root |
||||
|
group: root |
||||
|
mode: 0600 |
||||
|
- name: set ssh keys for Virtual Machine |
||||
|
shell: A=$(qm list |grep "{{ VM_name }}-{{ item }}" | awk '{print $1}'); qm set $A --sshkey /root/.ssh/root_c200.pub --ciuser root |
||||
|
loop: "{{ range(0, 3, 1)|list }}" |
||||
|
tags: provission |
||||
|
- name: Loading set up for Virtual Machine. Assigning IP for Virtual Machine |
||||
|
shell: A=$(qm list |grep "{{ VM_name }}-{{ item }}" | awk '{print $1}'); qm set $A --ipconfig0 'ip=192.168.0.16{{ item }}/24,gw=192.168.0.253' --nameserver '192.168.0.253' --memory 2048 --cores 2 |
||||
|
loop: "{{ range(0, 3, 1)|list }}" |
||||
|
tags: provission |
||||
|
- name: Regenerate cloudinit |
||||
|
shell: A=$(qm list |grep "{{ VM_name }}-{{ item }}" | awk '{print $1}'); qm set $A --ide2 local-lvm:cloudinit |
||||
|
loop: "{{ range(0, 3, 1)|list }}" |
||||
|
tags: provission |
||||
|
- name: starting new Virtual Machine in current proxmox node |
||||
|
proxmox_kvm: |
||||
|
api_user : root@pam |
||||
|
api_password: "{{ PV_password }}" |
||||
|
api_host : px2 |
||||
|
name : "{{ VM_name }}-{{ item }}" |
||||
|
node : px2 |
||||
|
state : started |
||||
|
timeout: 300 |
||||
|
tags: provission |
||||
|
loop: "{{ range(0, 3, 1)|list }}" |
@ -0,0 +1,15 @@ |
|||||
|
# vars file for proxmox_deploy |
||||
|
vlan10: |
||||
|
params: |
||||
|
netmask: 24 |
||||
|
vmbr: 0 |
||||
|
gateway: 192.168.2.1 |
||||
|
dnsservers: “192.168.2.253 192.168.2.254” |
||||
|
searchdomain: vectops.com |
||||
|
vlan11: |
||||
|
params: |
||||
|
netmask: 24 |
||||
|
vmbr: 1 |
||||
|
gateway: 192.168.3.130 |
||||
|
dnsservers: “192.168.3.253 192.168.3.254” |
||||
|
searchdomain: vectops.com |
@ -0,0 +1,67 @@ |
|||||
|
--- |
||||
|
- name: Disable SELinux |
||||
|
selinux: |
||||
|
state: disabled |
||||
|
#- name: Disable SELinux again |
||||
|
# shell: setenforce 0 |
||||
|
- name: install firewalld |
||||
|
yum: |
||||
|
name: firewalld |
||||
|
state: latest |
||||
|
- name: Start Firewalld |
||||
|
ansible.builtin.systemd: |
||||
|
name: firewalld |
||||
|
state: started |
||||
|
enabled: yes |
||||
|
- name: Allow kube API server |
||||
|
firewalld: |
||||
|
port: 6443/tcp |
||||
|
permanent: yes |
||||
|
state: enabled |
||||
|
- name: enable etcd ports |
||||
|
firewalld: |
||||
|
port: 2379-2380/tcp |
||||
|
permanent: yes |
||||
|
state: enabled |
||||
|
- name: enable etcd ports |
||||
|
firewalld: |
||||
|
port: 10250-10255/tcp |
||||
|
permanent: yes |
||||
|
state: enabled |
||||
|
- name: Add the br_netfilter module |
||||
|
modprobe: |
||||
|
name: br_netfilter |
||||
|
state: present |
||||
|
- name: bridge |
||||
|
shell: "echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables" |
||||
|
- name: Docker Repo |
||||
|
get_url: |
||||
|
url: https://download.docker.com/linux/centos/docker-ce.repo |
||||
|
dest: /etc/yum.repos.d/docker-ce.repo |
||||
|
- name: Install docker |
||||
|
yum: |
||||
|
name: |
||||
|
- docker-ce-20.10.* |
||||
|
- docker-ce-cli |
||||
|
- containerd.io |
||||
|
state: present |
||||
|
- name: Docker daemon |
||||
|
systemd: |
||||
|
name: docker |
||||
|
enabled: yes |
||||
|
state: started |
||||
|
- name: Add K8s repo |
||||
|
yum_repository: |
||||
|
name: kubernetes |
||||
|
description: K8s Repo |
||||
|
baseurl: https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 |
||||
|
gpgcakey: 'https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg' |
||||
|
- name: Install kubeadm |
||||
|
yum: |
||||
|
name: kubeadm |
||||
|
state: present |
||||
|
- name: Enable kubelet |
||||
|
systemd: |
||||
|
name: kubelet |
||||
|
enabled: yes |
||||
|
state: started |
@ -0,0 +1,40 @@ |
|||||
|
--- |
||||
|
- name: Init cluster |
||||
|
shell: kubeadm init --pod-network-cidr=10.10.0.0/16 --ignore-preflight-errors=all |
||||
|
|
||||
|
- name: Get kube-router |
||||
|
get_url: |
||||
|
url: https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter-all-features.yaml |
||||
|
dest: /tmp/kubeadm-kuberouter-all-features.yaml |
||||
|
|
||||
|
- name: Install python |
||||
|
yum: |
||||
|
name: |
||||
|
- python3 |
||||
|
- python3-pip |
||||
|
state: present |
||||
|
|
||||
|
- name: Install kubernetes python package |
||||
|
pip: |
||||
|
name: |
||||
|
- kubernetes==11.0 |
||||
|
- openshift |
||||
|
|
||||
|
- name: Apply Kube-router |
||||
|
k8s: |
||||
|
state: present |
||||
|
kubeconfig: /etc/kubernetes/admin.conf |
||||
|
src: /tmp/kubeadm-kuberouter-all-features.yaml |
||||
|
|
||||
|
- name: Get join token |
||||
|
command: kubeadm token create --print-join-command |
||||
|
register: found_join_token |
||||
|
retries: 30 |
||||
|
delay: 5 |
||||
|
until: found_join_token.rc == 0 |
||||
|
become: true |
||||
|
|
||||
|
- name: Save join token |
||||
|
set_fact: |
||||
|
k8s_join_token: "{{ found_join_token.stdout }}" |
||||
|
|
@ -0,0 +1,7 @@ |
|||||
|
--- |
||||
|
- name: Set k3s master facts |
||||
|
set_fact: |
||||
|
node_join_token: "{{ hostvars[groups['masters'][0]]['k8s_join_token'] }}" |
||||
|
|
||||
|
- name: Join cluster |
||||
|
shell: "{{ node_join_token }}" |
Loading…
Reference in new issue