--- - name: List all images openstack.cloud.image_info: cloud: "{{ cloud }}" register: images - name: Identify CirrOS image name set_fact: image_name: "{{ images.openstack_images|community.general.json_query(query)|first }}" vars: query: "[?starts_with(name, 'cirros')].name" - name: Create server with meta as CSV openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_network }}" auto_floating_ip: false meta: "key1=value1,key2=value2" wait: true register: server - debug: var=server - name: Get info about all servers openstack.cloud.server_info: cloud: "{{ cloud }}" register: info - name: Check info about servers assert: that: info.openstack_servers|length > 0 - name: Delete server with meta as CSV openstack.cloud.server: cloud: "{{ cloud }}" state: absent name: "{{ server_name }}" wait: true - name: Get info about all servers openstack.cloud.server_info: cloud: "{{ cloud }}" register: info - name: Check info about no servers assert: that: info.openstack_servers|length == 0 - name: Create server with meta as dict openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" auto_floating_ip: false network: "{{ server_network }}" meta: key1: value1 key2: value2 wait: true register: server - debug: var=server - name: Get info about one server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info - name: Check info about server name assert: that: info.openstack_servers[0].name == server_name - name: Delete server with meta as dict openstack.cloud.server: cloud: "{{ cloud }}" state: absent name: "{{ server_name }}" wait: true - name: Create server (FIP from pool/network) openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_network }}" floating_ip_pools: - "{{ floating_ip_pool_name }}" wait: true register: server - debug: var=server - name: Get detailed info about one server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" detailed: true register: info - name: Check info about server image name assert: that: info.openstack_servers[0].image.name == image_name - name: Delete server (FIP from pool/network) openstack.cloud.server: cloud: "{{ cloud }}" state: absent name: "{{ server_name }}" wait: true - name: Create server from volume openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_network }}" auto_floating_ip: false boot_from_volume: true volume_size: "{{ boot_volume_size }}" terminate_volume: true wait: true register: server - debug: var=server - name: Delete server with volume openstack.cloud.server: cloud: "{{ cloud }}" state: absent name: "{{ server_name }}" wait: true - name: Create a minimal server openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_network }}" auto_floating_ip: false wait: true register: server - debug: var=server - name: Get info about servers in all projects openstack.cloud.server_info: cloud: "{{ cloud }}" all_projects: true register: info - name: Check info about servers in all projects assert: that: info.openstack_servers|length > 0 - name: Get info about one server in all projects openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" all_projects: true register: info - name: Check info about one server in all projects assert: that: info.openstack_servers|length > 0 - name: Delete minimal server openstack.cloud.server: cloud: "{{ cloud }}" state: absent name: "{{ server_name }}" wait: true - include_tasks: server_actions.yml