summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2017-11-23 01:12:59 +0100
committerChristian Pointner <equinox@spreadspace.org>2017-11-23 01:12:59 +0100
commite273477b56d8e08ad1eb288d79e60c491df3c887 (patch)
treef930b32b01cbe386808a87b9e1ea7c22713cbe6c /roles
parentadded inital role vm-host (diff)
vm install role basically works now - needs cleanup and testing
Diffstat (limited to 'roles')
-rw-r--r--roles/vm-grub/tasks/main.yaml4
-rw-r--r--roles/vm-host/defaults/main.yaml7
-rw-r--r--roles/vm-host/tasks/main.yaml28
-rw-r--r--roles/vm-install/tasks/main.yaml4
-rw-r--r--roles/vm-install/templates/libvirt-domain.xml.j26
-rw-r--r--roles/vm-install/templates/preseed_debian-stretch.cfg.j2 (renamed from roles/vm-install/templates/preseed_stretch.cfg.j2)6
6 files changed, 44 insertions, 11 deletions
diff --git a/roles/vm-grub/tasks/main.yaml b/roles/vm-grub/tasks/main.yaml
index 2bb09811..970cd9b4 100644
--- a/roles/vm-grub/tasks/main.yaml
+++ b/roles/vm-grub/tasks/main.yaml
@@ -1,5 +1,5 @@
---
-- name: disable recovery mode
+- name: enable serial console in grub and for kernel
lineinfile: dest=/etc/default/grub regexp={{ item.regexp }} line={{ item.line }}
with_items:
- { 'regexp': '^GRUB_TIMEOUT=', 'line': 'GRUB_TIMEOUT=2' }
@@ -7,4 +7,4 @@
- { 'regexp': '^GRUB_TERMINAL=', 'line': 'GRUB_TERMINAL=serial' }
- { 'regexp': '^GRUB_SERIAL_COMMAND=', 'line': 'GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"' }
notify: update grub
-
+
diff --git a/roles/vm-host/defaults/main.yaml b/roles/vm-host/defaults/main.yaml
new file mode 100644
index 00000000..0e3cddf1
--- /dev/null
+++ b/roles/vm-host/defaults/main.yaml
@@ -0,0 +1,7 @@
+---
+vm_host_force_download_installer: False
+vm_host_installer_url:
+ # debian: "{{ debian_mirror.packages | default('http://deb.debian.org/debian') }}"
+ # ubuntu: "{{ ubuntu_mirror | default('http://archive.ubuntu.com/ubuntu') }}"
+ debian: "http://deb.debian.org/debian"
+ ubuntu: "http://archive.ubuntu.com/ubuntu"
diff --git a/roles/vm-host/tasks/main.yaml b/roles/vm-host/tasks/main.yaml
index 4c216d27..3decb3b2 100644
--- a/roles/vm-host/tasks/main.yaml
+++ b/roles/vm-host/tasks/main.yaml
@@ -23,4 +23,30 @@
name: "{{ item }}"
state: directory
-# TODO: download installer images
+- name: prepare directories for installer images
+ with_subelements:
+ - "{{ vm_host.installer.distros }}"
+ - arch
+ file:
+ name: "{{ vm_host.installer.path }}/{{ item.0.distro }}-{{ item.0.codename }}/{{ item.1 }}"
+ state: directory
+
+- name: download installer kernel images
+ with_subelements:
+ - "{{ vm_host.installer.distros }}"
+ - arch
+ get_url:
+ url: "{{ vm_host_installer_url[item.0.distro] }}/dists/{{ item.0.codename }}/main/installer-{{ item.1 }}/current/images/netboot/{{ item.0.distro }}-installer/{{ item.1 }}/linux"
+ dest: "{{ vm_host.installer.path }}/{{ item.0.distro }}-{{ item.0.codename }}/{{ item.1 }}/linux"
+ mode: 0644
+ force: "{{ vm_host_force_download_installer }}"
+
+- name: download installer initrd.gz
+ with_subelements:
+ - "{{ vm_host.installer.distros }}"
+ - arch
+ get_url:
+ url: "{{ vm_host_installer_url[item.0.distro] }}/dists/{{ item.0.codename }}/main/installer-{{ item.1 }}/current/images/netboot/{{ item.0.distro }}-installer/{{ item.1 }}/initrd.gz"
+ dest: "{{ vm_host.installer.path }}/{{ item.0.distro }}-{{ item.0.codename }}/{{ item.1 }}/initrd.gz"
+ mode: 0644
+ force: "{{ vm_host_force_download_installer }}"
diff --git a/roles/vm-install/tasks/main.yaml b/roles/vm-install/tasks/main.yaml
index ef5af38e..2e914ebc 100644
--- a/roles/vm-install/tasks/main.yaml
+++ b/roles/vm-install/tasks/main.yaml
@@ -1,8 +1,8 @@
---
- name: generate preseed file
template:
- src: "preseed_{{ vmdistro }}.cfg.j2"
- dest: "{{ hostvars[vm_install.host].vm_host.installer.preseed_path }}/vm-{{ inventory_hostname }}-{{ vmdistro }}.cfg"
+ src: "preseed_{{ vmdistro }}-{{ vmdistcodename }}.cfg.j2"
+ dest: "{{ hostvars[vm_install.host].vm_host.installer.preseed_path }}/vm-{{ inventory_hostname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg"
delegate_to: "{{ vm_install.host }}"
- name: create disks for vm
diff --git a/roles/vm-install/templates/libvirt-domain.xml.j2 b/roles/vm-install/templates/libvirt-domain.xml.j2
index da09dca2..c2a4afc5 100644
--- a/roles/vm-install/templates/libvirt-domain.xml.j2
+++ b/roles/vm-install/templates/libvirt-domain.xml.j2
@@ -6,9 +6,9 @@
<os>
<type arch='x86_64' machine='pc-0.12'>hvm</type>
{% if run_installer %}
- <kernel>{{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}/{{ vm_install.arch | default('amd64') }}/linux</kernel>
- <initrd>{{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}/{{ vm_install.arch | default('amd64') }}/initrd.gz</initrd>
- <cmdline>console=ttyS0,115200n8 auto=true interface=auto url=tftp://{{ hostvars[vm_install.host]['ansible_' + hostvars[vm_install.host].vm_host.installer.net_if].ipv4.address }}/vm-{{ inventory_hostname }}-{{ vmdistro }}.cfg netcfg/choose_interface=enp1s1 netcfg/disable_autoconfig=true netcfg/get_ipaddress={{ vm_network.internet.ip }} netcfg/get_netmask={{ vm_network.internet.mask }} netcfg/get_gateway={{ vm_network.internet.gateway }} netcfg/get_nameservers={{ vm_network.internet.nameservers }} netcfg/confirm_static=true netcfg/get_hostname={{ inventory_hostname }} netcfg/get_domain={{ vm_network.internet.domain }}</cmdline>
+ <kernel>{{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ vm_install.arch | default('amd64') }}/linux</kernel>
+ <initrd>{{ hostvars[vm_install.host].vm_host.installer.path }}/{{ vmdistro }}-{{ vmdistcodename }}/{{ vm_install.arch | default('amd64') }}/initrd.gz</initrd>
+ <cmdline>console=ttyS0,115200n8 auto=true interface=auto url=tftp://{{ hostvars[vm_install.host]['ansible_' + hostvars[vm_install.host].vm_host.installer.net_if].ipv4.address }}/vm-{{ inventory_hostname }}-{{ vmdistro }}-{{ vmdistcodename }}.cfg netcfg/choose_interface=enp1s1 netcfg/disable_autoconfig=true netcfg/get_ipaddress={{ vm_network.internet.ip }} netcfg/get_netmask={{ vm_network.internet.mask }} netcfg/get_gateway={{ vm_network.internet.gateway }} netcfg/get_nameservers={{ vm_network.internet.nameservers }} netcfg/confirm_static=true netcfg/get_hostname={{ inventory_hostname }} netcfg/get_domain={{ vm_network.internet.domain }}</cmdline>
{% endif %}
<boot dev='hd'/>
</os>
diff --git a/roles/vm-install/templates/preseed_stretch.cfg.j2 b/roles/vm-install/templates/preseed_debian-stretch.cfg.j2
index 1d91b8c7..c8f4b45f 100644
--- a/roles/vm-install/templates/preseed_stretch.cfg.j2
+++ b/roles/vm-install/templates/preseed_debian-stretch.cfg.j2
@@ -22,7 +22,7 @@ d-i netcfg/wireless_wep string
d-i mirror/country string manual
-d-i mirror/http/hostname string apt
+d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
@@ -84,7 +84,7 @@ d-i partman/confirm_nooverwrite boolean true
d-i base-installer/install-recommends boolean false
-d-i apt-setup/security_host string apt
+d-i apt-setup/security_host string deb.debian.org
tasksel tasksel/first multiselect
d-i pkgsel/include string openssh-server python
@@ -98,4 +98,4 @@ d-i grub-installer/with_other_os boolean false
d-i finish-install/reboot_in_progress note
-d-i preseed/late_command string in-target bash -c "passwd -d root; passwd -l root; umask 077; mkdir -p /root/.ssh/; echo '{{ root_ssh_keys | default('') }}' > /root/.ssh/authorized_keys"
+d-i preseed/late_command string in-target bash -c "passwd -d root; passwd -l root; umask 077; mkdir -p /root/.ssh/; echo '{{ root_ssh_keys | default('ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtmysXjBidEwJek6hBgaENiyVOwroFi19xRZZw+cYYqi6asDfF6B/h6gYNkJGWo0rD5ZaLdau1O210O5Xu+TfK1e2bZbxuFIj2fguUkat9wN6IQIO2m2Wcf4k/eiTmtAE3dp0l5ThMqfxxE8dj76mOOrUHCfJUIVoATGs4X5TLcGcXroAcZ+DFFoDzjxjFYNmIuUNtXDwXTpPc63SAYmRvW0ZYZlvH1qZ6irLh+GtE1dZ1Q5lQZvp6xUYcjInbpcd5Ko3KbG/In7sNmUCI7iaTwC4DPDTcHFj99Ll1jruAbdaQqe+ClZv55dbQ+92RDF6fsuQBD8FeRz7nYChvCqNPT1KOvcVsDtbW0iJ1PZ05QdE27w23wJj9OE0JWM09P3AH3ttswHaJ+P4s7mSxxK2m6YZcqop3czLlWWoGna0ynd5eV6l/rtvAQUvBOXjKQ5fPQY5d9cF0Z87NBE54HM9a/IKZ2toU2MuYNUpI/DUoAA9ILS4bJm3AUz8wbaC5EiuIhbM6I/u0NANamaQKRrolGNP4ETaQvhABs+S3/NSSBy4DMjtwax2BxyenF6i89vyHPNY+LZzBOn842yUlEGn6Z11MxiE5fhIfMPUclSYi5bQJDf1fvAyAo59/AX8sPqRK+/OCLIgLwdtW6D4OZGXjqrBJe2j/5uZSJEsl6ROyKw== equinox@spreadspace.org') }}' > /root/.ssh/authorized_keys"