From d9687ede9928eb8ec6a7b3ff238f7b9fd319a670 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 23 Aug 2020 01:56:46 +0200 Subject: revamp installer playbooks and add ch-apps vm --- common/cloud-install.yml | 31 +++++++------------- common/iso-install.yml | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ common/usb-install.yml | 29 ++++++++++++++----- common/vm-install.yml | 32 ++++++++------------- 4 files changed, 119 insertions(+), 47 deletions(-) create mode 100644 common/iso-install.yml (limited to 'common') diff --git a/common/cloud-install.yml b/common/cloud-install.yml index db3d3faf..fbe0dd4f 100644 --- a/common/cloud-install.yml +++ b/common/cloud-install.yml @@ -6,45 +6,36 @@ - role: cloud/install -- name: wait for newly installed machine to start up +- name: wait for new machine to start up, apply early roles and reboot hosts: "{{ install_hostname }}" gather_facts: no - tasks: + pre_tasks: ## TODO: find a better way to fetch host key of new VMs - name: disable ssh StrictHostKeyChecking for the next step set_fact: - ansible_ssh_extra_args: -o StrictHostKeyChecking=no + ansible_ssh_extra_args: "-o StrictHostKeyChecking=no{% if install_jumphost is defined %} -o 'ProxyCommand ssh -q -a {{ install_jumphost }} -W %h:%p'{% endif %}" - name: clear all gathered facts meta: clear_facts - - - name: wait for newly installed machine to start up + - name: wait for host to start up wait_for_connection: delay: 5 timeout: 240 - - - name: reenable StrictHostKeyChecking - set_fact: - ansible_ssh_extra_args: "" - - -- name: run post install roles - hosts: "{{ install_hostname }}" - pre_tasks: - name: make sure to update cached facts setup: - roles: - - role: cloud/post-install - -- name: reboot and wait for machine come back - hosts: "{{ install_hostname }}" - gather_facts: no roles: + - role: cloud/post-install - role: reboot-and-wait reboot_delay: 10 reboot_timeout: 120 + post_tasks: + - name: reenable StrictHostKeyChecking + set_fact: + ansible_ssh_extra_args: "" + + - name: run host playbook vars: params: diff --git a/common/iso-install.yml b/common/iso-install.yml new file mode 100644 index 00000000..2eb5d049 --- /dev/null +++ b/common/iso-install.yml @@ -0,0 +1,74 @@ +--- +- name: preparations and sanity checks + hosts: "{{ install_hostname }}" + connection: local + gather_facts: no + roles: + - role: installer/debian/iso + installer_base_path: "{{ global_cache_dir }}/debian-installer" + installer_keyrings_path: "{{ global_files_dir }}/common/keyrings" + post_tasks: + - set_fact: + iso_install_image_path: "{{ iso_install_target_dir }}/{{ install_hostname }}.iso" + + +- name: basic installation + hosts: "{{ install_hostname }}" + gather_facts: no + tasks: + - pause: + prompt: | + The generated image can be found at: + + {{ iso_install_image_path }} + + Please load the image into the machine and boot from it. + {% if install_distro == "debian" and install_cooked.efi is defined and install_cooked.efi %} + + Mind that debian mini.iso based installers have a bug that prevents grub from loading the correct + config file on EFI systems. In case you only see a grub shell prompt ('grub>') after booting the + iso image you can load the correct config file using this command: + + grub> (cd0)/boot/grub/grub.cfg + + {% endif %} + Once the installation is done press enter to continue or Ctrl-C + 'A' to abort. + + +- name: wait for new machine to start up, apply early roles and reboot + hosts: "{{ install_hostname }}" + gather_facts: no + pre_tasks: + ## TODO: find a better way to fetch host key of new VMs + - name: disable ssh StrictHostKeyChecking for the next step + set_fact: + ansible_ssh_extra_args: "-o StrictHostKeyChecking=no{% if install_jumphost is defined %} -o 'ProxyCommand ssh -q -a {{ install_jumphost }} -W %h:%p'{% endif %}" + + - name: clear all gathered facts + meta: clear_facts + - name: wait for host to start up + wait_for_connection: + delay: 5 + timeout: 120 + - name: make sure to update cached facts + setup: + + # roles: + # ### TODO: add role that configures networking + # - role: reboot-and-wait + # reboot_delay: 10 + # reboot_timeout: 120 + + post_tasks: + - name: reenable StrictHostKeyChecking + set_fact: + ansible_ssh_extra_args: "" + + +- name: run host playbook + vars: + params: + files: + - "../{{ install_environment }}/{{ install_hostname }}.yml" + - "../{{ install_environment }}/{{ install_playbook | default('common') }}.yml" + import_playbook: "{{ q('first_found', params) | first }}" diff --git a/common/usb-install.yml b/common/usb-install.yml index f24e0fb8..bacb781f 100644 --- a/common/usb-install.yml +++ b/common/usb-install.yml @@ -1,9 +1,8 @@ --- -- name: fetch debian installer and bake initrd +- name: preparations and sanity checks hosts: "{{ install_hostname }}" connection: local gather_facts: no - vars_prompt: - name: usb_install_path prompt: Where is the USB installation medium mounted to? @@ -14,32 +13,48 @@ installer_base_path: "{{ global_cache_dir }}/debian-installer" installer_keyrings_path: "{{ global_files_dir }}/common/keyrings" -- name: wait for new machine to start up + +- name: basic installation hosts: "{{ install_hostname }}" gather_facts: no tasks: - pause: prompt: | - Please plug the stick into the machine and boot from it. - When the installation is done press enter to continue or Ctrl-C + 'A' to abort. + Please unmount the USB the stick, plug it into the machine and boot from it. + + Once the installation is done press enter to continue or Ctrl-C + 'A' to abort. + +- name: wait for new machine to start up, apply early roles and reboot + hosts: "{{ install_hostname }}" + gather_facts: no + pre_tasks: ## TODO: find a better way to fetch host key of new VMs - name: disable ssh StrictHostKeyChecking for the next step set_fact: - ansible_ssh_extra_args: -o StrictHostKeyChecking=no + ansible_ssh_extra_args: "-o StrictHostKeyChecking=no{% if install_jumphost is defined %} -o 'ProxyCommand ssh -q -a {{ install_jumphost }} -W %h:%p'{% endif %}" - name: clear all gathered facts meta: clear_facts - - name: wait for host to start up wait_for_connection: delay: 5 timeout: 120 + - name: make sure to update cached facts + setup: + # roles: + # ### TODO: add role that configures networking + # - role: reboot-and-wait + # reboot_delay: 10 + # reboot_timeout: 120 + + post_tasks: - name: reenable StrictHostKeyChecking set_fact: ansible_ssh_extra_args: "" + - name: run host playbook vars: params: diff --git a/common/vm-install.yml b/common/vm-install.yml index 64f4d696..5084ba0b 100644 --- a/common/vm-install.yml +++ b/common/vm-install.yml @@ -1,5 +1,5 @@ --- -- name: preperations and sanity checks +- name: preparations and sanity checks hosts: "{{ install_hostname }}" gather_facts: no tasks: @@ -30,47 +30,39 @@ - role: vm/guest/install -- name: wait for new vm to start up +- name: wait for new machine to start up, apply early roles and reboot hosts: "{{ install_hostname }}" gather_facts: no - tasks: + pre_tasks: ## TODO: find a better way to fetch host key of new VMs - name: disable ssh StrictHostKeyChecking for the next step set_fact: - ansible_ssh_extra_args: -o StrictHostKeyChecking=no + ansible_ssh_extra_args: "-o StrictHostKeyChecking=no{% if install_jumphost is defined %} -o 'ProxyCommand ssh -q -a {{ install_jumphost }} -W %h:%p'{% endif %}" - name: clear all gathered facts meta: clear_facts - - - name: wait for vm to start up + - name: wait for host to start up wait_for_connection: delay: 5 timeout: 120 - - - name: reenable StrictHostKeyChecking - set_fact: - ansible_ssh_extra_args: "" - - -- name: apply basic VM configuration roles - hosts: "{{ install_hostname }}" - pre_tasks: - name: make sure to update cached facts setup: + roles: - role: vm/guest/network when: install_distro in ['debian', 'ubuntu'] - role: vm/guest/base when: install_distro in ['debian', 'ubuntu'] - -- name: reboot and wait for VM to come back - hosts: "{{ install_hostname }}" - gather_facts: no - roles: - role: reboot-and-wait reboot_delay: 10 reboot_timeout: 120 + post_tasks: + - name: reenable StrictHostKeyChecking + set_fact: + ansible_ssh_extra_args: "" + + - name: run host playbook vars: params: -- cgit v1.2.3