.
This commit is contained in:
4
salt/states/tlu-harvester/files/images/.gitignore
vendored
Normal file
4
salt/states/tlu-harvester/files/images/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
8
salt/states/tlu-harvester/files/keypair/admin.yaml
Normal file
8
salt/states/tlu-harvester/files/keypair/admin.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: harvesterhci.io/v1beta1
|
||||
kind: KeyPair
|
||||
metadata:
|
||||
name: admin
|
||||
namespace: default
|
||||
spec:
|
||||
publicKey: |
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILGVNwMC2H+Fn4AhCDIa4MVfEYsVF7Zs2yHc8cGbv40l jonas@admin
|
8
salt/states/tlu-harvester/files/keypair/exilio.yaml
Normal file
8
salt/states/tlu-harvester/files/keypair/exilio.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: harvesterhci.io/v1beta1
|
||||
kind: KeyPair
|
||||
metadata:
|
||||
name: exilio
|
||||
namespace: default
|
||||
spec:
|
||||
publicKey: |
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDSJ4KrM7iwmUyvOznqNiTaYOIVxpog7Ktfr2xaJgH6O jonas@exsilio
|
16
salt/states/tlu-harvester/files/manifests/images.sls
Normal file
16
salt/states/tlu-harvester/files/manifests/images.sls
Normal file
@@ -0,0 +1,16 @@
|
||||
{% for dist, items in pillar['tlu-harvester']['images'].items() -%}
|
||||
{% for item in items -%}
|
||||
---
|
||||
apiVersion: harvesterhci.io/v1beta1
|
||||
kind: VirtualMachineImage
|
||||
metadata:
|
||||
name: {{ item['checksum'][-10:] }}
|
||||
namespace: {{ item['ns'] | default('default') }}
|
||||
spec:
|
||||
displayName: {{ item['name'] | default(item['url'].split('/')[-1]) }}
|
||||
pvcName: ""
|
||||
pvcNamespace: ""
|
||||
sourceType: download
|
||||
url: http://{{ pillar['network']['ip'] }}/images/{{ dist }}/{{ item['url'].split('/')[-1] }}
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
10
salt/states/tlu-harvester/files/manifests/networks.yaml
Normal file
10
salt/states/tlu-harvester/files/manifests/networks.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
{% for vlan in pillar['network']['vlan'] %}
|
||||
---
|
||||
apiVersion: k8s.cni.cncf.io/v1
|
||||
kind: NetworkAttachmentDefinition
|
||||
metadata:
|
||||
name: {{ vlan['zone'] }}-{{ vlan['id'] }}
|
||||
namespace: default
|
||||
spec:
|
||||
config: '{"cniVersion":"0.3.1","name":"{{ vlan['zone'] }}-{{ vlan['id'] }}","type":"bridge","bridge":"harvester-br0","promiscMode":true,"vlan":{{ vlan['id'] }},"ipam":{}}'
|
||||
{% endfor %}
|
35
salt/states/tlu-harvester/files/node1.yaml.jinja
Normal file
35
salt/states/tlu-harvester/files/node1.yaml.jinja
Normal file
@@ -0,0 +1,35 @@
|
||||
token: {{ pillar['tlu-harvester']['token'] }}
|
||||
os:
|
||||
ssh_authorized_keys: {{ pillar['tlu-harvester']['os']['ssh_authorized_keys'] }}
|
||||
hostname: node1
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
dns_nameservers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
ntp_servers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
write_files:
|
||||
- path: /etc/rancher/rke2/registries.yaml
|
||||
- owner: 'root:root'
|
||||
- permissions: '0600'
|
||||
- content: |
|
||||
mirrors:
|
||||
docker.io:
|
||||
endpoint:
|
||||
- "http://{{ pillar['network']['ip'] }}:5000"
|
||||
|
||||
install:
|
||||
mode: create
|
||||
networks:
|
||||
harvester-mgmt:
|
||||
interfaces:
|
||||
- name: {{ pillar['tlu-harvester']['install']['mgmt-interface'] }}
|
||||
method: static
|
||||
ip: {{ pillar['network']['ip'][0:-1] }}{{ pillar['network']['hosts']['node1'] }}
|
||||
subnet_mask: 255.255.255.0
|
||||
gateway: {{ pillar['network']['ip'] }}
|
||||
default_route: true
|
||||
device: {{ pillar['tlu-harvester']['device'] }}
|
||||
iso_url: http://{{ pillar['network']['ip'] }}/harvester/harvester-v{{ pillar['tlu-harvester']['version'] }}-amd64.iso
|
||||
vip: {{ pillar['network']['ip'][0:-1] }}{{ pillar['network']['hosts']['harvester'] }}
|
||||
vip_mode: static
|
34
salt/states/tlu-harvester/files/node2.yaml.jinja
Normal file
34
salt/states/tlu-harvester/files/node2.yaml.jinja
Normal file
@@ -0,0 +1,34 @@
|
||||
server_url: https://harvester.{{ pillar['network']['domain'] }}:8443
|
||||
token: {{ pillar['tlu-harvester']['token'] }}
|
||||
os:
|
||||
ssh_authorized_keys: {{ pillar['tlu-harvester']['os']['ssh_authorized_keys'] }}
|
||||
hostname: node2
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
dns_nameservers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
ntp_servers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
write_files:
|
||||
- path: /etc/rancher/rke2/registries.yaml
|
||||
- owner: 'root:root'
|
||||
- permissions: '0600'
|
||||
- content: |
|
||||
mirrors:
|
||||
docker.io:
|
||||
endpoint:
|
||||
- "http://{{ pillar['network']['ip'] }}:5000"
|
||||
|
||||
install:
|
||||
mode: join
|
||||
networks:
|
||||
harvester-mgmt:
|
||||
interfaces:
|
||||
- name: {{ pillar['tlu-harvester']['install']['mgmt-interface'] }}
|
||||
method: static
|
||||
ip: {{ pillar['network']['ip'][0:-1] }}{{ pillar['network']['hosts']['node2'] }}
|
||||
subnet_mask: 255.255.255.0
|
||||
gateway: {{ pillar['network']['ip'] }}
|
||||
default_route: true
|
||||
device: {{ pillar['tlu-harvester']['device'] }}
|
||||
iso_url: http://{{ pillar['network']['ip'] }}/harvester/harvester-v{{ pillar['tlu-harvester']['version'] }}-amd64.iso
|
34
salt/states/tlu-harvester/files/node3.yaml.jinja
Normal file
34
salt/states/tlu-harvester/files/node3.yaml.jinja
Normal file
@@ -0,0 +1,34 @@
|
||||
server_url: https://harvester.{{ pillar['network']['domain'] }}:8443
|
||||
token: {{ pillar['tlu-harvester']['token'] }}
|
||||
os:
|
||||
ssh_authorized_keys: {{ pillar['tlu-harvester']['os']['ssh_authorized_keys'] }}
|
||||
hostname: node3
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
dns_nameservers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
password: {{ pillar['tlu-harvester']['os']['password'] }}
|
||||
ntp_servers:
|
||||
- {{ pillar['network']['ip'] }}
|
||||
write_files:
|
||||
- path: /etc/rancher/rke2/registries.yaml
|
||||
- owner: 'root:root'
|
||||
- permissions: '0600'
|
||||
- content: |
|
||||
mirrors:
|
||||
docker.io:
|
||||
endpoint:
|
||||
- "http://{{ pillar['network']['ip'] }}:5000"
|
||||
|
||||
install:
|
||||
mode: join
|
||||
networks:
|
||||
harvester-mgmt:
|
||||
interfaces:
|
||||
- name: {{ pillar['tlu-harvester']['install']['mgmt-interface'] }}
|
||||
method: static
|
||||
ip: {{ pillar['network']['ip'][0:-1] }}{{ pillar['network']['hosts']['node3'] }}
|
||||
subnet_mask: 255.255.255.0
|
||||
gateway: {{ pillar['network']['ip'] }}
|
||||
default_route: true
|
||||
device: {{ pillar['tlu-harvester']['device'] }}
|
||||
iso_url: http://{{ pillar['network']['ip'] }}/harvester/harvester-v{{ pillar['tlu-harvester']['version'] }}-amd64.iso
|
11
salt/states/tlu-harvester/files/tlu-harvester.cfg.jinja
Normal file
11
salt/states/tlu-harvester/files/tlu-harvester.cfg.jinja
Normal file
@@ -0,0 +1,11 @@
|
||||
## Menu Colours
|
||||
set menu_color_normal=white/black
|
||||
set menu_color_highlight=white/green
|
||||
|
||||
{% for node in ['node1', 'node2', 'node3'] -%}
|
||||
menuentry 'TLU Harvester {{ pillar['tlu-harvester']['version'] }} {{ node }}' --class os {
|
||||
linux harvester-v{{ pillar['tlu-harvester']['version'] }}-vmlinuz-amd64 nomodeset initrd=harvester-v{{ pillar['tlu-harvester']['version'] }}-initrd-amd64 ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://{{ pillar['network']['ip'] }}/harvester/harvester-v{{ pillar['tlu-harvester']['version'] }}-rootfs-amd64.squashfs harvester.install.automatic=true harvester.install.config_url=http://{{ pillar['network']['ip'] }}/harvester/{{ node }}.yaml
|
||||
initrd harvester-v{{ pillar['tlu-harvester']['version'] }}-initrd-amd64
|
||||
boot
|
||||
}
|
||||
{% endfor %}
|
15
salt/states/tlu-harvester/images.sls
Normal file
15
salt/states/tlu-harvester/images.sls
Normal file
@@ -0,0 +1,15 @@
|
||||
{% for dist, items in pillar['tlu-harvester']['images'].items() %}
|
||||
{% for item in items %}
|
||||
{% set filename = item['url'].split('/')[-1] %}
|
||||
Downloading image {{ filename }}:
|
||||
file.managed:
|
||||
- name: /srv/www/htdocs/images/{{ dist }}/{{ filename }}
|
||||
- source: {{ item['url'] }}
|
||||
- source_hash: {{ item['checksum'] }}
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: "0644"
|
||||
- makedirs: True
|
||||
- dir_mode: "0755"
|
||||
{% endfor %}
|
||||
{% endfor %}
|
4
salt/states/tlu-harvester/init.sls
Normal file
4
salt/states/tlu-harvester/init.sls
Normal file
@@ -0,0 +1,4 @@
|
||||
include:
|
||||
- tlu-harvester.pxe
|
||||
- tlu-harvester.manifests
|
||||
- tlu-harvester.images
|
11
salt/states/tlu-harvester/manifests.sls
Normal file
11
salt/states/tlu-harvester/manifests.sls
Normal file
@@ -0,0 +1,11 @@
|
||||
Add tlu-harvester manifests:
|
||||
file.recurse:
|
||||
- name: /home/{{ pillar['username'] }}/tlu-harvester
|
||||
- source: salt://tlu-harvester/files/manifests
|
||||
- template: jinja
|
||||
- user: {{ pillar['username'] }}
|
||||
- group: users
|
||||
- file_mode: "0600"
|
||||
- include_empty: True
|
||||
- makedirs: True
|
||||
- dir_modes: "0700"
|
19
salt/states/tlu-harvester/pxe.sls
Normal file
19
salt/states/tlu-harvester/pxe.sls
Normal file
@@ -0,0 +1,19 @@
|
||||
{% for node in ['node1', 'node2', 'node3'] -%}
|
||||
Create tlu harvester cluster yaml for {{ node }}:
|
||||
file.managed:
|
||||
- name: /srv/www/htdocs/harvester/{{ node }}.yaml
|
||||
- source: salt://tlu-harvester/files/{{ node }}.yaml.jinja
|
||||
- template: jinja
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: "0644"
|
||||
{% endfor %}
|
||||
|
||||
Update harvester grub file:
|
||||
file.managed:
|
||||
- name: /srv/tftpboot/tlu-harvester.cfg
|
||||
- source: salt://tlu-harvester/files/tlu-harvester.cfg.jinja
|
||||
- template: jinja
|
||||
- user: root
|
||||
- group: root
|
||||
- mode: "0644"
|
Reference in New Issue
Block a user