#!/usr/bin/ansible-playbook --- # localhost (aka 127.0.0.1) is the hypervisor (hard-coded) - hosts: test-vms #- hosts: local-test-vm.ffmwu.local gather_facts: False # remote_user: root vars: - vm_path: "{{ lookup('env','HOME') }}/tmp/ffmwu-loctevm" tasks: - name: ensure VM dir and vm image dir file: path={{ vm_path }} state=directory mode=0755 delegate_to: 127.0.0.1 # local action - name: remove old image file when asked to reset VM file: path={{ vm_path }}/loctevm.img state=absent when: vm_reset|default(False) delegate_to: 127.0.0.1 # local action - name: ensure image file # FIXME: change to rm + recreate command: fallocate -l 5G {{ vm_path }}/loctevm.img # 15G? size? args: creates: "{{ vm_path }}/loctevm.img" delegate_to: 127.0.0.1 # local action - name: correct access rights of image file file: mode=0666 path={{ vm_path }}/loctevm.img state=file delegate_to: 127.0.0.1 # local action - name: get and prepare debian image file include: include/loctevm-provide-iso.inc.yml - name: define Vnd activate Vnet (if not already) include: include/loctevm-provide-net.inc.yml - name: define VM (if not already) include: include/loctevm-provide-vm.inc.yml - name: create VM - should start OS installation - might take looong time virt: state: running name: "{{ inventory_hostname }}" register: virt_run delegate_to: 127.0.0.1 # local action - name: wait for port 80 to appear (after reboot after OS installation) wait_for: host={{ansible_host}} port=80 state=started timeout=2500 delegate_to: 127.0.0.1 # local action - block: - name: ensure absence of outdated local known-hosts entry known_hosts: host={{ansible_host}} state=absent delegate_to: 127.0.0.1 # local action - name: do dummy connect to ensure new local known host entry command: ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no hein@{{ansible_host}} true delegate_to: 127.0.0.1 # local action changed_when: False failed_when: False when: virt_run.changed # block end - hosts: test-vms remote_user: hein gather_facts: False # become: True tasks: - name: prepare VM (if not already) include: include/loctevm-provide-prereq.inc.yml