--- - name: preparations, sanity checks and basic installation hosts: "{{ install_hostname }}" connection: local gather_facts: no tasks: - vars: installer_base_path: "{{ global_cache_dir }}/{{ installer_variant }}-installer" installer_keyrings_path: "{{ global_files_dir }}/common/keyrings" include_role: name: "installer/{{ installer_variant }}/iso" - set_fact: iso_install_image_path: "{{ iso_install_target_dir }}/{{ install_hostname }}.iso" - pause: prompt: | The generated image can be found at: {{ iso_install_image_path | realpath }} Please load the image into the machine and boot from it. {% if install_distro == "debian" and install.efi is defined and install.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> configfile (cd0)/boot/grub/grub.cfg {% endif %} Once the installation is done press ENTER to continue or CTRL-C then A to abort. {% if installer_variant == 'ubuntu' %} Hint: You are using the ubuntu installer, this means the final system initialization and cleanup is done by cloud-init on first boot. These steps need to be finished before the playbook can continue. {% endif %} - 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: remove host-keys from ssh known-hosts local_action: command "{{ (inventory_dir, '../remove-known-host.sh') | path_join | realpath }}" "{{ install_hostname }}" - 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 post_tasks: - name: reenable StrictHostKeyChecking set_fact: ansible_ssh_extra_args: "" - name: run all handlers before rebooting meta: flush_handlers ### TODO: enable this once network config is done by ansible # - name: reboot the new machine # vars: # reboot_delay: 10 # reboot_timeout: 120 # import_role: # name: reboot-and-wait - 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 }}" - name: reboot machine hosts: "{{ install_hostname }}" roles: - role: reboot-and-wait reboot_delay: 5 reboot_timeout: 120