v0.0.6
This commit is contained in:
parent
4dae39b470
commit
b78e8e4242
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
# Group vars for alpha cluster
|
|
||||||
kubernetes_pod_network:
|
|
||||||
cni: 'flannel'
|
|
||||||
cidr: '10.0.0.0/16'
|
|
@ -1,21 +1,2 @@
|
|||||||
---
|
---
|
||||||
# Host vars for alpha-control-plane
|
# Host vars for alpha-control-plane
|
||||||
network_interfaces: "
|
|
||||||
# The primary network interface
|
|
||||||
|
|
||||||
auto eno8303
|
|
||||||
|
|
||||||
iface eno8303 inet static
|
|
||||||
|
|
||||||
address 10.0.0.2/16
|
|
||||||
|
|
||||||
iface eno8303 inet6 static
|
|
||||||
|
|
||||||
address fc00:6572:6963:a::2/64
|
|
||||||
|
|
||||||
# The secondary network interface
|
|
||||||
|
|
||||||
allow-hotplug eno8403
|
|
||||||
|
|
||||||
iface eno8403 inet dhcp
|
|
||||||
"
|
|
||||||
|
@ -1,22 +1,3 @@
|
|||||||
---
|
---
|
||||||
# Host vars for alpha-worker-0
|
# Host vars for alpha-worker-0
|
||||||
network_interfaces: "
|
|
||||||
# The primary network interface
|
|
||||||
|
|
||||||
auto eno1np0
|
|
||||||
|
|
||||||
iface eno1np0 inet static
|
|
||||||
|
|
||||||
address 10.0.0.3/16
|
|
||||||
|
|
||||||
iface eno1np0 inet6 static
|
|
||||||
|
|
||||||
address fc00:6572:6963:a::3/64
|
|
||||||
|
|
||||||
# The secondary network interface
|
|
||||||
|
|
||||||
allow-hotplug eno2np1
|
|
||||||
|
|
||||||
iface eno2np1 inet dhcp
|
|
||||||
"
|
|
||||||
nvidia: true
|
nvidia: true
|
||||||
|
@ -8,8 +8,8 @@ all:
|
|||||||
control_plane:
|
control_plane:
|
||||||
hosts:
|
hosts:
|
||||||
alpha-control-plane:
|
alpha-control-plane:
|
||||||
ansible-host: 192.168.1.103
|
ansible-host: 192.168.1.116
|
||||||
workers:
|
workers:
|
||||||
hosts:
|
hosts:
|
||||||
alpha-worker-0:
|
alpha-worker-0:
|
||||||
ansible-host: 192.168.1.102
|
ansible-host: 192.168.1.125
|
||||||
|
57
kubernetes_test.yml
Normal file
57
kubernetes_test.yml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
- name: Minecraft Deployment
|
||||||
|
hosts: alpha-control-plane
|
||||||
|
become: true
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Create a Deployment
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
definition:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: minecraft-deployment
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: minecraft
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: minecraft
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: minecraft-container
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- containerPort: 24454
|
||||||
|
- containerPort: 25565
|
||||||
|
env:
|
||||||
|
- name: EULA
|
||||||
|
value: "TRUE"
|
||||||
|
- name: TYPE
|
||||||
|
value: FABRIC
|
||||||
|
- name: MODS
|
||||||
|
value: "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/fabric,https://cdn.modrinth.com/data/bWrNNfkb/versions/D4KXqjtC/Floodgate-Fabric-2.2.3-SNAPSHOT%2Bbuild.28.jar,https://cdn.modrinth.com/data/9eGKb6K1/versions/COYWChTc/voicechat-fabric-1.21-2.5.18.jar"
|
||||||
|
|
||||||
|
- name: Expose Deployment as a Service
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
definition:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: minecraft-service
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: myapp
|
||||||
|
ports:
|
||||||
|
- port: 24454
|
||||||
|
protocol: UDP
|
||||||
|
name: minecraft-port-24454
|
||||||
|
- port: 25565
|
||||||
|
protocol: TCP
|
||||||
|
name: minecraft-port-25565
|
||||||
|
type: NodePort
|
@ -1,25 +1,8 @@
|
|||||||
# my playbook
|
---
|
||||||
- name: Install Nvidia drivers
|
- name: Prepare cluster environments
|
||||||
hosts: alpha-worker-0
|
hosts: clusters
|
||||||
become: true
|
become: true
|
||||||
pre_tasks:
|
|
||||||
- name: Add contrib & non-free repository
|
|
||||||
replace:
|
|
||||||
dest: /etc/apt/sources.list
|
|
||||||
regexp: '^(deb(?!.* contrib).*)'
|
|
||||||
replace: '\1 contrib non-free'
|
|
||||||
- name: Install Linux headers
|
|
||||||
apt:
|
|
||||||
name: linux-headers-{{ ansible_kernel }}
|
|
||||||
state: present
|
|
||||||
roles:
|
roles:
|
||||||
- role: nvidia.nvidia_driver # should run after cluster install
|
- role: nvidia.nvidia_driver
|
||||||
vars:
|
when:
|
||||||
# See https://github.com/NVIDIA/ansible-role-nvidia-driver#role-variables
|
- nvidia == true
|
||||||
nvidia_driver_skip_reboot: no
|
|
||||||
nvidia_driver_branch: "555"
|
|
||||||
nvidia_driver_ubuntu_cuda_repo_baseurl: 'https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64' # enforced 'debian11'
|
|
||||||
nvidia_driver_ubuntu_cuda_keyring_package: "cuda-keyring_1.1-1_all.deb"
|
|
||||||
nvidia_driver_ubuntu_install_from_cuda_repo: yes
|
|
||||||
nvidia_driver_persistence_mode_on: yes
|
|
||||||
ansible_distribution: Ubuntu # forcing in to the ubuntu part of the role
|
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
ericomeehan.configure_network
|
|
||||||
=========
|
|
||||||
|
|
||||||
Role to configure network interfaces for eom.dev.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
network_interfaces: A string defining network interfaces for a Debian node
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
|
||||||
|
|
||||||
- hosts: servers
|
|
||||||
roles:
|
|
||||||
- { role: username.rolename, x: 42 }
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
BSD
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Eric O'Neill Meehan
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for configure_network
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for configure_network
|
|
@ -1,34 +0,0 @@
|
|||||||
galaxy_info:
|
|
||||||
author: your name
|
|
||||||
description: your role description
|
|
||||||
company: your company (optional)
|
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
|
|
||||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
|
||||||
# - BSD-3-Clause (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPL-2.0-or-later
|
|
||||||
# - GPL-3.0-only
|
|
||||||
# - Apache-2.0
|
|
||||||
# - CC-BY-4.0
|
|
||||||
license: license (GPL-2.0-or-later, MIT, etc)
|
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
|
||||||
|
|
||||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
|
||||||
# min_ansible_container_version:
|
|
||||||
|
|
||||||
galaxy_tags: []
|
|
||||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
|
||||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
|
||||||
# remove the '[]' above, if you add tags to this list.
|
|
||||||
#
|
|
||||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
|
||||||
# Maximum 20 tags per role.
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
|
||||||
# if you add dependencies to this list.
|
|
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
# tasks file for Debian_firewall
|
|
||||||
- name: Copy nftables configuration template
|
|
||||||
template:
|
|
||||||
src: "nftables.conf.j2"
|
|
||||||
dest: /etc/nftables.conf
|
|
||||||
|
|
||||||
- name: Enable nftables
|
|
||||||
service:
|
|
||||||
name: nftables
|
|
||||||
state: started
|
|
||||||
enabled: true
|
|
@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
# tasks file for Debian_interfaces
|
|
||||||
- name: Configure network interfaces for a Debian node
|
|
||||||
template:
|
|
||||||
src: "Debian_interfaces.j2"
|
|
||||||
dest: /etc/network/interfaces
|
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
# tasks file for configure_network
|
|
||||||
- include_tasks: Debian_interfaces.yml
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
|
|
||||||
- include_tasks: Debian_firewall.yml
|
|
||||||
when: ansible_os_family == "Debian"
|
|
@ -1,10 +0,0 @@
|
|||||||
# This file describes the network interfaces available on your system
|
|
||||||
# and how to activate them. For more information, see interfaces(5).
|
|
||||||
|
|
||||||
source /etc/network/interfaces.d/*
|
|
||||||
|
|
||||||
# The loopback network interface
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
{{ network_interfaces }}
|
|
@ -1,2 +0,0 @@
|
|||||||
localhost
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
remote_user: root
|
|
||||||
roles:
|
|
||||||
- configure_network
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for configure_network
|
|
@ -5,28 +5,31 @@
|
|||||||
dest: /etc/apt/sources.list
|
dest: /etc/apt/sources.list
|
||||||
regexp: '^(deb(?!.* contrib).*)'
|
regexp: '^(deb(?!.* contrib).*)'
|
||||||
replace: '\1 contrib non-free'
|
replace: '\1 contrib non-free'
|
||||||
|
|
||||||
- name: Update apt
|
- name: Update apt
|
||||||
become: yes
|
become: yes
|
||||||
apt:
|
apt:
|
||||||
update_cache: yes
|
update_cache: yes
|
||||||
when: nvidia == true
|
when: nvidia == true
|
||||||
|
|
||||||
- name: Install Linux headers
|
- name: Install Linux headers
|
||||||
apt:
|
apt:
|
||||||
name: linux-headers-{{ ansible_kernel }}
|
name: linux-headers-{{ ansible_kernel }}
|
||||||
state: present
|
state: present
|
||||||
- name: Install Nvidia driver
|
|
||||||
|
- name: Install Nvidia and CUDA drivers
|
||||||
apt:
|
apt:
|
||||||
name: nvidia-driver
|
|
||||||
state: present
|
|
||||||
- name: Install necessary firmware
|
|
||||||
apt:
|
|
||||||
name: firmware-misc-nonfree
|
|
||||||
state: present
|
|
||||||
- name: Install CUDA drivers
|
|
||||||
apt:
|
|
||||||
name: nvidia-cuda-dev
|
|
||||||
state: present
|
|
||||||
- name: Install CUDA toolkit
|
|
||||||
apt:
|
|
||||||
name: nvidia-cuda-toolkit
|
|
||||||
state: present
|
state: present
|
||||||
|
name:
|
||||||
|
- nvidia-driver
|
||||||
|
- firmware-misc-nonfree
|
||||||
|
- nvidia-cuda-dev
|
||||||
|
- nvidia-cuda-toolkit
|
||||||
|
|
||||||
|
- name: Rebooting the system
|
||||||
|
ansible.builtin.reboot:
|
||||||
|
|
||||||
|
- name: Wait for SSH connection
|
||||||
|
ansible.builtin.wait_for_connection:
|
||||||
|
timeout: 300
|
||||||
|
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
Dump debconf database
|
|
||||||
=========
|
|
||||||
|
|
||||||
Dumps the debconf database after a fresh Debian installation.
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Role Variables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Example Playbook
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
|
||||||
|
|
||||||
- hosts: servers
|
|
||||||
roles:
|
|
||||||
- role: ericomeehan.dump-debconf-database
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
BSD
|
|
||||||
|
|
||||||
Author Information
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Eric O'Neill Meehan
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# defaults file for dump_debconf_database
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# handlers file for dump_debconf_database
|
|
@ -1,34 +0,0 @@
|
|||||||
galaxy_info:
|
|
||||||
author: your name
|
|
||||||
description: your role description
|
|
||||||
company: your company (optional)
|
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
|
||||||
# next line and provide a value
|
|
||||||
# issue_tracker_url: http://example.com/issue/tracker
|
|
||||||
|
|
||||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
|
||||||
# - BSD-3-Clause (default)
|
|
||||||
# - MIT
|
|
||||||
# - GPL-2.0-or-later
|
|
||||||
# - GPL-3.0-only
|
|
||||||
# - Apache-2.0
|
|
||||||
# - CC-BY-4.0
|
|
||||||
license: license (GPL-2.0-or-later, MIT, etc)
|
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
|
||||||
|
|
||||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
|
||||||
# min_ansible_container_version:
|
|
||||||
|
|
||||||
galaxy_tags: []
|
|
||||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
|
||||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
|
||||||
# remove the '[]' above, if you add tags to this list.
|
|
||||||
#
|
|
||||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
|
||||||
# Maximum 20 tags per role.
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
|
||||||
# if you add dependencies to this list.
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
# tasks file for dump_debconf_db
|
|
||||||
- name: Install debconf-utils
|
|
||||||
apt:
|
|
||||||
name: debconf-utils
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Check if /root/preseed.txt exists
|
|
||||||
stat:
|
|
||||||
path: /root/preseed.txt
|
|
||||||
register: preseed_file
|
|
||||||
|
|
||||||
- name: Create preseed file
|
|
||||||
command: echo "#_preseed_V1" > /root/preseed.txt
|
|
||||||
when: not preseed_file.stat.exists
|
|
||||||
|
|
||||||
- name: Append installer's debconf database to the file
|
|
||||||
command: debconf-get-selections --installer >> /root/preseed.txt
|
|
||||||
when: not preseed_file.stat.exists
|
|
||||||
|
|
||||||
- name: Append debconf database to the file
|
|
||||||
command: debconf-get-selections >> /root/preseed.txt
|
|
||||||
when: not preseed_file.stat.exists
|
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
# tasks file for dump_debconf_database
|
|
||||||
- include_tasks: dump_debconf_db.yml
|
|
||||||
when: ansible_os_family == "Debian"
|
|
@ -1,2 +0,0 @@
|
|||||||
localhost
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
remote_user: root
|
|
||||||
roles:
|
|
||||||
- dump_debconf_database
|
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for dump_debconf_database
|
|
53
site.yml
53
site.yml
@ -1,11 +1,41 @@
|
|||||||
---
|
---
|
||||||
# Master playbook for eom.dev
|
# Master playbook for eom.dev
|
||||||
- name: Initial OS configuration
|
- name: Initialize systems
|
||||||
hosts: all
|
hosts: all
|
||||||
become: true
|
become: true
|
||||||
roles:
|
tasks:
|
||||||
- role: ericomeehan.save_initial_configuration
|
- name: Install debconf-utils
|
||||||
- role: ericomeehan.configure_network
|
apt:
|
||||||
|
name: debconf-utils
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Check if /root/preseed.txt exists
|
||||||
|
stat:
|
||||||
|
path: /root/preseed.txt
|
||||||
|
register: preseed_file
|
||||||
|
|
||||||
|
- name: Create preseed file
|
||||||
|
command: echo "#_preseed_V1" > /root/preseed.txt
|
||||||
|
when: not preseed_file.stat.exists
|
||||||
|
|
||||||
|
- name: Append installer's debconf database to the file
|
||||||
|
command: debconf-get-selections --installer >> /root/preseed.txt
|
||||||
|
when: not preseed_file.stat.exists
|
||||||
|
|
||||||
|
- name: Append debconf database to the file
|
||||||
|
command: debconf-get-selections >> /root/preseed.txt
|
||||||
|
when: not preseed_file.stat.exists
|
||||||
|
|
||||||
|
- name: Copy nftables configuration template
|
||||||
|
template:
|
||||||
|
src: "nftables.conf.j2"
|
||||||
|
dest: /etc/nftables.conf
|
||||||
|
|
||||||
|
- name: Enable nftables
|
||||||
|
service:
|
||||||
|
name: nftables
|
||||||
|
state: started
|
||||||
|
enabled: true
|
||||||
|
|
||||||
- name: Prepare cluster environments
|
- name: Prepare cluster environments
|
||||||
hosts: clusters
|
hosts: clusters
|
||||||
@ -16,23 +46,32 @@
|
|||||||
path: /etc/sysctl.conf
|
path: /etc/sysctl.conf
|
||||||
line: 'net.ipv4.ip_forward = 1'
|
line: 'net.ipv4.ip_forward = 1'
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Update sysctl configuration to enable IPv6 packet forwarding
|
- name: Update sysctl configuration to enable IPv6 packet forwarding
|
||||||
lineinfile:
|
lineinfile:
|
||||||
path: /etc/sysctl.conf
|
path: /etc/sysctl.conf
|
||||||
line: 'net.ipv6.conf.all.forwarding = 1'
|
line: 'net.ipv6.conf.all.forwarding = 1'
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Reload sysctl configuration
|
- name: Reload sysctl configuration
|
||||||
command: sysctl --system
|
command: sysctl --system
|
||||||
|
|
||||||
- name: Enable br_netfilter kernel module
|
- name: Enable br_netfilter kernel module
|
||||||
command: modprobe br_netfilter
|
command: modprobe br_netfilter
|
||||||
|
|
||||||
- name: Add the module to a configuration file for persistence
|
- name: Add the module to a configuration file for persistence
|
||||||
lineinfile:
|
lineinfile:
|
||||||
path: /etc/modules-load.d/modules.conf
|
path: /etc/modules-load.d/modules.conf
|
||||||
line: "br_netfilter"
|
line: "br_netfilter"
|
||||||
|
|
||||||
|
- name: Install kubernetes library
|
||||||
|
apt:
|
||||||
|
name: python3-kubernetes
|
||||||
|
state: present
|
||||||
|
|
||||||
roles:
|
roles:
|
||||||
- role: geerlingguy.containerd
|
- role: geerlingguy.containerd
|
||||||
- role: geerlingguy.kubernetes
|
- role: geerlingguy.kubernetes
|
||||||
- role: ericomeehan.nvidia_driver_debian
|
- role: ericomeehan.nvidia_driver_debian
|
||||||
when: nvidia == true and ansible_os_family == 'Debian'
|
when:
|
||||||
tasks:
|
- nvidia == true
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user