diff options
-rw-r--r-- | group_vars/hetzner/vars.yaml | 6 | ||||
-rw-r--r-- | host_vars/sk2016.yaml | 14 | ||||
-rw-r--r-- | hosts.ini | 9 | ||||
-rw-r--r-- | playbooks/kube2016.yaml | 2 | ||||
-rw-r--r-- | roles/vm-grub/tasks/main.yaml | 4 | ||||
-rw-r--r-- | roles/vm-host/defaults/main.yaml | 7 | ||||
-rw-r--r-- | roles/vm-host/tasks/main.yaml | 28 | ||||
-rw-r--r-- | roles/vm-install/tasks/main.yaml | 4 | ||||
-rw-r--r-- | roles/vm-install/templates/libvirt-domain.xml.j2 | 6 | ||||
-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-x | vm-install.sh | 8 |
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 @@ -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 |