diff options
author | Christian Pointner <equinox@spreadspace.org> | 2019-12-25 18:20:54 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2019-12-25 18:20:54 +0100 |
commit | 2a89948bf13307cc936756c3a43bed51b3b49dc2 (patch) | |
tree | a058e111112f03a8dd769efaeb0bf7b4c0a31c71 /roles/installer | |
parent | installer: move bootstrap roles to common subdir (diff) |
openbsd vm install almost works now
Diffstat (limited to 'roles/installer')
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 -# |