From 7e55910b27e877574e518fa1febc32405b129171 Mon Sep 17 00:00:00 2001 From: Georg Pfuetzenreuter Date: Mon, 14 Feb 2022 00:32:26 +0100 Subject: Deployment PoC - Add pexpect supervision Signed-off-by: Georg Pfuetzenreuter --- ansible/deployment_poc/playbooks/deploy.yml | 4 ++ .../deployment_poc/tasks/autoyast_assistant.yml | 38 +++++++++++++++++ ansible/deployment_poc/tasks/init_ssh.yml | 1 + ansible/deployment_poc/tasks/init_vm_console.yml | 1 + ansible/deployment_poc/tasks/wait.yml | 48 +++++++++++++++++----- 5 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 ansible/deployment_poc/tasks/autoyast_assistant.yml diff --git a/ansible/deployment_poc/playbooks/deploy.yml b/ansible/deployment_poc/playbooks/deploy.yml index 4009b26..7650737 100644 --- a/ansible/deployment_poc/playbooks/deploy.yml +++ b/ansible/deployment_poc/playbooks/deploy.yml @@ -99,6 +99,7 @@ block: - import_tasks: "../tasks/netbox_init_ip.yml" - import_tasks: "../tasks/netbox_primaryip.yml" + no_log: true - name: Start VM and attach console import_tasks: "../tasks/init_vm_console.yml" @@ -106,6 +107,9 @@ - name: Initialize SSH CA import_tasks: "../tasks/init_ssh.yml" + - name: Assist guest OS installation + import_tasks: "../tasks/autoyast_assistant.yml" + - name: Wait for guest OS installation import_tasks: "../tasks/wait.yml" diff --git a/ansible/deployment_poc/tasks/autoyast_assistant.yml b/ansible/deployment_poc/tasks/autoyast_assistant.yml new file mode 100644 index 0000000..7a7542a --- /dev/null +++ b/ansible/deployment_poc/tasks/autoyast_assistant.yml @@ -0,0 +1,38 @@ +--- +- name: Monitor OS installation + block: + - name: Monitor first stage + ansible.builtin.expect: + command: "/usr/bin/virsh -c {{ libvirt_url }} console {{ vm_name }} --force" + responses: + "reboot: Restarting system": + - "\u001d" + timeout: 720 + ignore_errors: true + no_log: true + + - name: Destroy + community.libvirt.virt: + uri: "{{ libvirt_url }}" + command: destroy + name: "{{ vm_name }}" + state: destroyed + + - name: Start + community.libvirt.virt: + uri: "{{ libvirt_url }}" + command: start + name: "{{ vm_name }}" + state: running + + - name: Unlock + ansible.builtin.expect: + command: "/usr/bin/virsh -c {{ libvirt_url }} console {{ vm_name }} --force" + responses: + "Please enter passphrase for disk cr_root:": + - "{{ luks_passphrase }}" + - "\u001d" + ignore_errors: yes + no_log: true + + delegate_to: localhost diff --git a/ansible/deployment_poc/tasks/init_ssh.yml b/ansible/deployment_poc/tasks/init_ssh.yml index 386c517..6dbc5cf 100644 --- a/ansible/deployment_poc/tasks/init_ssh.yml +++ b/ansible/deployment_poc/tasks/init_ssh.yml @@ -48,6 +48,7 @@ get_attributes: no register: stat_ssh_spk + no_log: true delegate_to: localhost tags: - init_ssh diff --git a/ansible/deployment_poc/tasks/init_vm_console.yml b/ansible/deployment_poc/tasks/init_vm_console.yml index a74fde6..5b1c614 100644 --- a/ansible/deployment_poc/tasks/init_vm_console.yml +++ b/ansible/deployment_poc/tasks/init_vm_console.yml @@ -18,6 +18,7 @@ - -d - -s - "{{ vm_name }}" + ignore_errors: true - name: Attach console inside tmux ansible.builtin.command: diff --git a/ansible/deployment_poc/tasks/wait.yml b/ansible/deployment_poc/tasks/wait.yml index 7d516ce..4553a76 100644 --- a/ansible/deployment_poc/tasks/wait.yml +++ b/ansible/deployment_poc/tasks/wait.yml @@ -1,14 +1,42 @@ --- -- name: Wait for guest to become alive - wait_for: - #delay: 240 - connect_timeout: 3 - sleep: 15 - port: 22 - host: '{{ ip_address }}' - search_regex: OpenSSH - timeout: 900 - #connection: local +- name: Sit patiently + block: + - name: Wait for guest to become alive + wait_for: + delay: 240 + connect_timeout: 3 + sleep: 15 + port: 22 + host: '{{ ip_address }}' + search_regex: OpenSSH + timeout: 600 + +# rescue: +# - name: Destroy +# community.libvirt.virt: +# uri: "{{ libvirt_url }}" +# command: destroy +# name: "{{ vm_name }}" +# state: destroyed +# +# - name: Start +# community.libvirt.virt: +# uri: "{{ libvirt_url }}" +# command: start +# name: "{{ vm_name }}" +# state: running +# +# - name: Wait for guest to become alive +# wait_for: +# delay: 120 +# connect_timeout: 3 +# sleep: 15 +# port: 22 +# host: '{{ ip_address }}' +# search_regex: OpenSSH +# timeout: 600 + delegate_to: localhost tags: - init_ssh + -- cgit v1.2.3