summaryrefslogtreecommitdiff
path: root/roles/installer
diff options
context:
space:
mode:
Diffstat (limited to 'roles/installer')
-rw-r--r--roles/installer/debian/preseed/defaults/main.yml3
-rw-r--r--roles/installer/openbsd/autoinstall/defaults/main.yml8
-rw-r--r--roles/installer/openbsd/autoinstall/tasks/main.yml41
-rw-r--r--roles/installer/openbsd/autoinstall/templates/auto_install.conf.j230
-rw-r--r--roles/installer/openbsd/autoinstall/templates/boot.conf.j25
-rw-r--r--roles/installer/openbsd/base/tasks/main.yml28
6 files changed, 91 insertions, 24 deletions
diff --git a/roles/installer/debian/preseed/defaults/main.yml b/roles/installer/debian/preseed/defaults/main.yml
index c5400493..18cfd952 100644
--- a/roles/installer/debian/preseed/defaults/main.yml
+++ b/roles/installer/debian/preseed/defaults/main.yml
@@ -1,4 +1,5 @@
---
-#preseed_force_net_ifnames_policy: path
+#preseed_tmpdir:
+#preseed_force_net_ifnames_policy: path
preseed_no_netplan: no
diff --git a/roles/installer/openbsd/autoinstall/defaults/main.yml b/roles/installer/openbsd/autoinstall/defaults/main.yml
new file mode 100644
index 00000000..e3579ad0
--- /dev/null
+++ b/roles/installer/openbsd/autoinstall/defaults/main.yml
@@ -0,0 +1,8 @@
+---
+# obsd_autoinstall_tmpdir:
+
+# obsd_autoinstall_serial_device: com0
+# obsd_autoinstall_serial_baudrate: 115200
+
+obsd_autoinstall_http_server: ftp2.eu.openbsd.org
+obsd_autoinstall_file_sets: -comp* -game* -x*
diff --git a/roles/installer/openbsd/autoinstall/tasks/main.yml b/roles/installer/openbsd/autoinstall/tasks/main.yml
new file mode 100644
index 00000000..333b437f
--- /dev/null
+++ b/roles/installer/openbsd/autoinstall/tasks/main.yml
@@ -0,0 +1,41 @@
+---
+- name: create basic cd-image directory structure
+ file:
+ path: "{{ obsd_autoinstall_tmpdir }}/files/etc"
+ state: directory
+
+- name: extract installer files from iso
+ vars:
+ arch: "{{ hostvars[hostname].install_cooked.arch | default('amd64') }}"
+ version: "{{ install_codename }}"
+ iso_extract:
+ image: "{{ installer_path }}/openbsd-{{ version }}/{{ arch }}/cd.iso"
+ dest: "{{ obsd_autoinstall_tmpdir }}/files"
+ files:
+ - "{{ version }}/{{ arch }}/cdbr"
+ - "{{ version }}/{{ arch }}/cdboot"
+ - "{{ version }}/{{ arch }}/bsd.rd"
+
+- name: generate bootloader and installer configuration
+ loop:
+ - auto_install.conf
+ - boot.conf
+ template:
+ src: "{{ item }}.j2"
+ dest: "{{ obsd_autoinstall_tmpdir }}/files/etc/{{ item }}"
+
+- name: generate random seed
+ shell: "head -c512 < /dev/random > {{ obsd_autoinstall_tmpdir }}/files/etc/random.seed"
+
+- name: generate host specific installer image
+ command: 'genisoimage -RTLldDN -o "cd.iso" -no-emul-boot -b "cdbr" -c "boot.catalog" files/'
+ args:
+ chdir: "{{ obsd_autoinstall_tmpdir }}/"
+
+# - print instructions
+# * attach to console
+# * select (S)hell
+# * # mount_cd9660 /dev/cd0c /mnt
+# * # cp /mnt/etc/auto_install.conf /
+# * # autoinstall
+#
diff --git a/roles/installer/openbsd/autoinstall/templates/auto_install.conf.j2 b/roles/installer/openbsd/autoinstall/templates/auto_install.conf.j2
new file mode 100644
index 00000000..6719aae3
--- /dev/null
+++ b/roles/installer/openbsd/autoinstall/templates/auto_install.conf.j2
@@ -0,0 +1,30 @@
+System hostname = {{ hostvars[hostname].host_name }}
+
+Which network interface do you wish to configure = {{ install_interface | default(hostvars[hostname].network_cooked.primary.interface) }}
+{% if 'install_dhcp' in hostvars[hostname] and hostvars[hostname].install_dhcp %}
+IPv4 address = dhcp
+{% else %}
+IPv4 address = {{ hostvars[hostname].network_cooked.primary.ip }}
+Netmask = {{ hostvars[hostname].network_cooked.primary.mask }}
+Default IPv4 route = {{ hostvars[hostname].network_cooked.primary.gateway }}
+{% endif %}
+DNS domain name = {{ hostvars[hostname].network_cooked.domain }}
+DNS nameservers = {{ hostvars[hostname].network_cooked.nameservers | join(' ') }}
+
+{% if obsd_autoinstall_serial_device is defined %}
+Change the default console to {{ obsd_autoinstall_serial_device }} = yes
+Which speed should {{ obsd_autoinstall_serial_device }} use = {{ obsd_autoinstall_tty_serial | default(115200) }}
+{% endif %}
+
+{# TODO: what if there are more than one ssh keys? #}
+Public ssh key for root account = {{ ssh_keys_root[0] }}
+Password for root = !
+Setup a user = no
+Start sshd(8) by default = yes
+Allow root ssh login = prohibit-password
+
+What timezone are you in = Europe/Vienna
+
+Location of sets = http
+HTTP Server = {{ obsd_autoinstall_http_server }}
+Set name(s) = {{ obsd_autoinstall_file_sets }}
diff --git a/roles/installer/openbsd/autoinstall/templates/boot.conf.j2 b/roles/installer/openbsd/autoinstall/templates/boot.conf.j2
new file mode 100644
index 00000000..d6cdcfeb
--- /dev/null
+++ b/roles/installer/openbsd/autoinstall/templates/boot.conf.j2
@@ -0,0 +1,5 @@
+{% if obsd_autoinstall_serial_device is defined %}
+stty {{ obsd_autoinstall_serial_device }} {{ obsd_autoinstall_tty_serial | default(115200) }}
+set tty {{ obsd_autoinstall_serial_device }}
+{% endif %}
+set image /bsd.rd
diff --git a/roles/installer/openbsd/base/tasks/main.yml b/roles/installer/openbsd/base/tasks/main.yml
index fcc79589..04a4f4ce 100644
--- a/roles/installer/openbsd/base/tasks/main.yml
+++ b/roles/installer/openbsd/base/tasks/main.yml
@@ -12,31 +12,13 @@
label: "openbsd-{{ item.0.version }} {{ item.1 }}"
get_url:
url: "{{ openbsd_installer_url }}/{{ item.0.version }}/{{ item.1 }}/cd{{ item.0.version | replace('.', '') }}.iso"
- dest: "{{ installer_path }}/openbsd-{{ item.0.version }}/{{ item.1 }}/cd-orig.iso"
+ dest: "{{ installer_path }}/openbsd-{{ item.0.version }}/{{ item.1 }}/cd.iso"
mode: 0644
force: "{{ openbsd_installer_force_download }}"
-- name: install geniosimage
+# TODO: verify the image using openbsd-signify
+
+- name: install genisoimage
apt:
- name: geniosimage
+ name: genisoimage
state: present
-
-## TODO
-# - iso_extract from cd-orig.iso -> <<version>>/<<arch>>/{boot.catalog,cdbr,cdboot,bsd.rd}, etc/boot.conf
-# - add lines to etc/boot.conf -> stty com0 115200, set tty com0
-# - generate etc/auto_install.conf
-# - name: generate host specific installer image
-# loop: "{{ openbsd_versions | subelements('arch') }}"
-# loop_control:
-# label: "openbsd-{{ item.0.version }} {{ item.1 }}"
-# command: 'genisoimage -RTLldDN -o "cd-{{ ansible_nodename }}.iso" -no-emul-boot -b "{{ item.0.version }}/{{ item.1 }}/cdbr" -c "{{ item.0.version }}/{{ item.1 }}/boot.catalog" data-{{ ansible_nodename }}/'
-# args:
-# chdir: "{{ installer_path }}/openbsd-{{ item.0.version }}/{{ item.1 }}"
-#
-# - print instructions
-# * attach to console
-# * select (S)hell
-# * # mount_cd9660 /dev/cd0c /mnt
-# * # cp /mnt/etc/auto_install.conf /
-# * # autoinstall
-#