summaryrefslogtreecommitdiff
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
parentadded inital role vm-host (diff)
vm install role basically works now - needs cleanup and testing
-rw-r--r--group_vars/hetzner/vars.yaml6
-rw-r--r--host_vars/sk2016.yaml14
-rw-r--r--hosts.ini9
-rw-r--r--playbooks/kube2016.yaml2
-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
-rwxr-xr-xvm-install.sh8
11 files changed, 74 insertions, 20 deletions
diff --git a/group_vars/hetzner/vars.yaml b/group_vars/hetzner/vars.yaml
new file mode 100644
index 00000000..2e5c8b4a
--- /dev/null
+++ b/group_vars/hetzner/vars.yaml
@@ -0,0 +1,6 @@
+---
+debian_mirror:
+ packages: http://mirror.hetzner.de/debian/packages
+ security: http://mirror.hetzner.de/debian/security
+
+ubuntu_mirror: http://mirror.hetzner.de/ubuntu/packages
diff --git a/host_vars/sk2016.yaml b/host_vars/sk2016.yaml
index 16aae79e..ecfc12d4 100644
--- a/host_vars/sk2016.yaml
+++ b/host_vars/sk2016.yaml
@@ -8,7 +8,13 @@ vm_host:
preseed_path: /srv/preseed
path: /srv/installer
distros:
- debian:
- - stretch
- ubunt:
- - xenial
+ - distro: debian
+ codename: stretch
+ arch:
+ - amd64
+ - i386
+ - distro: ubuntu
+ codename: xenial
+ arch:
+ - amd64
+ - i386
diff --git a/hosts.ini b/hosts.ini
index 4fbf5b60..7081fc50 100644
--- a/hosts.ini
+++ b/hosts.ini
@@ -32,6 +32,15 @@ atlas
sk2013
sk2016
+[hetzner]
+sk2013
+sk2016
+kube2016
+mimas
+sktorrent
+elewolke
+elestream
+elesearch
[k8s-stream]
kube2016
diff --git a/playbooks/kube2016.yaml b/playbooks/kube2016.yaml
index 469c848d..ff1af485 100644
--- a/playbooks/kube2016.yaml
+++ b/playbooks/kube2016.yaml
@@ -4,6 +4,6 @@
roles:
- role: sshserver
- role: vm-grub
- - role: vm-network
+# - role: vm-network
- role: base
- role: zsh
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"
diff --git a/vm-install.sh b/vm-install.sh
index 9f0f52a5..199963fd 100755
--- a/vm-install.sh
+++ b/vm-install.sh
@@ -1,11 +1,11 @@
#!/bin/bash
-if [ -z "$1" ] || [ -z "$2" ]; then
- echo "$0 <vm> <distro>"
+if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
+ echo "$0 <vm> <distro> <codename>"
exit 1
fi
-echo "installing vm: $1 with distro $2"
+echo "installing vm: $1 with $2/$3"
echo ""
echo "########## clearing old ssh host keys #########"
@@ -13,4 +13,4 @@ echo "########## clearing old ssh host keys #########"
echo ""
echo "######## running the install playbook ########"
-exec ansible-playbook -e "vmname=$1" -e "vmdistro=$2" vminstall.yaml
+exec ansible-playbook -e "vmname=$1" -e "vmdistro=$2" -e "vmdistcodename=$3" vminstall.yaml