--- - name: Setup server groups cloudscale_server_group: name: '{{ cloudscale_resource_prefix }}-group-{{ item }}' type: anti-affinity zone: '{{ cloudscale_test_zone }}' with_sequence: count=2 - name: Test create a running server in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' tags: project: ansible-test stage: production sla: 24-7 register: server check_mode: yes - name: Verify create a running server in check mode assert: that: - server is changed - server.state == 'absent' - name: Test create a running server cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' tags: project: ansible-test stage: production sla: 24-7 register: server - name: Verify create a running server assert: that: - server is changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.zone.slug == '{{ cloudscale_test_zone }}' - server.tags.project == 'ansible-test' - server.tags.stage == 'production' - server.tags.sla == '24-7' - name: Test create a running server idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' tags: project: ansible-test stage: production sla: 24-7 register: server - name: Verify create a running server idempotence assert: that: - server is not changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.zone.slug == '{{ cloudscale_test_zone }}' - server.tags.project == 'ansible-test' - server.tags.stage == 'production' - server.tags.sla == '24-7' - name: Test update tags in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' tags: project: ansible-test stage: staging sla: 8-5 register: server check_mode: yes - name: Verify update tags in check mode assert: that: - server is changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.tags.project == 'ansible-test' - server.tags.stage == 'production' - server.tags.sla == '24-7' - name: Test update tags cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' tags: project: ansible-test stage: staging sla: 8-5 register: server - name: Verify update tags assert: that: - server is changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.tags.project == 'ansible-test' - server.tags.stage == 'staging' - server.tags.sla == '8-5' - name: Test update tags idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' tags: project: ansible-test stage: staging sla: 8-5 register: server - name: Verify update tags idempotence assert: that: - server is not changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.tags.project == 'ansible-test' - server.tags.stage == 'staging' - server.tags.sla == '8-5' - name: Test omit tags idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' register: server - name: Verify update tags idempotence assert: that: - server is not changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - server.tags.project == 'ansible-test' - server.tags.stage == 'staging' - server.tags.sla == '8-5' - name: Test delete tags cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' tags: {} register: server - name: Verify delete tags assert: that: - server is changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - not server.tags - name: Test delete tags idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' tags: {} register: server - name: Verify delete tags idempotence assert: that: - server is not changed - server.state == 'running' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - not server.tags - name: Test update flavor of a running server without force in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server check_mode: yes - name: Verify update flavor of a running server without force in check mode assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test update flavor of a running server without force cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor of a running server without force assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test update flavor of a running server without force idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor of a running server without force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test update flavor and name of a running server without force in check mode cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server check_mode: yes - name: Verify update flavor and name of a running server without force in check mode assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test update flavor and name of a running server without force cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor and name of a running server without force assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor and name of a running server without force idempotence cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor and name of a running server without force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor of a running server with force in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server check_mode: yes - name: Verify update flavor of a running server with force in check mode assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor of a running server with force cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server - name: Verify update flavor of a running server with force assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update a running server with force idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server - name: Verify update flavor of a running server with force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Remember uuid of running server for anti affinity set_fact: running_server_uuid: '{{ server.uuid }}' - name: Test create server stopped in anti affinity and private network only in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' use_public_network: no use_private_network: yes state: stopped check_mode: yes register: server_stopped - name: Verify create server stopped in anti affinity and private network only in check mode assert: that: - server_stopped is changed - server_stopped.state == 'absent' - name: Test create server stopped in anti affinity and private network only cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' use_public_network: no use_private_network: yes state: stopped register: server_stopped - name: Verify create server stopped in anti affinity and private network only assert: that: - server_stopped is changed - server_stopped.state == 'stopped' - server_stopped.zone.slug == '{{ cloudscale_test_zone }}' - server_stopped.anti_affinity_with.0.uuid == running_server_uuid - server_stopped.interfaces.0.type == 'private' - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test create server stopped in anti affinity and private network only idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-1' zone: '{{ cloudscale_test_zone }}' use_public_network: no use_private_network: yes state: stopped register: server_stopped - name: Verify create server stopped in anti affinity and private network only idempotence assert: that: - server_stopped is not changed - server_stopped.state == 'stopped' - server_stopped.zone.slug == '{{ cloudscale_test_zone }}' - server_stopped.anti_affinity_with.0.uuid == running_server_uuid - server_stopped.interfaces.0.type == 'private' - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test change server group not changed cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' server_groups: '{{ cloudscale_resource_prefix }}-group-2' use_public_network: no use_private_network: yes state: stopped register: server_stopped - name: Verify Test update server group not changed assert: that: - server_stopped is not changed - server_stopped.state == 'stopped' - server_stopped.zone.slug == '{{ cloudscale_test_zone }}' - server_stopped.anti_affinity_with.0.uuid == running_server_uuid - server_stopped.interfaces.0.type == 'private' - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1' - name: Test create server with password in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' check_mode: yes register: server_password - name: Verify create server with password in check mode assert: that: - server_password is changed - server_password.state == 'absent' # Verify password is not logged - server_password.diff.after.password != cloudscale_test_password - name: Test create server with password cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' register: server_password - name: Verify create server with password assert: that: - server_password is changed - server_password.state == 'running' # Verify password is not logged - server_password.diff.after.password != cloudscale_test_password - name: Test create server with password idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' register: server_password - name: Verify create server with password idempotence assert: that: - server_password is not changed - server_password.state == 'running' - name: Test create server failure without required parameters cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-failed' register: server_failed ignore_errors: yes - name: Verify create server failure without required parameters assert: that: - server_failed is failed - "'Failure while calling the cloudscale.ch API with POST for \"servers\".' in server_failed.msg" - "'This field is required.' in server_failed.fetch_url_info.body" - name: Test stop running server in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: stopped check_mode: yes register: server - name: Verify stop running server in check mode assert: that: - server is changed - server.state == 'running' - name: Test stop running server cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: stopped register: server - name: Verify stop running server assert: that: - server is changed - server.state == 'stopped' - name: Test stop running server idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: 'stopped' register: server - name: Verify stop running server idempotence assert: that: - server is not changed - server.state == 'stopped' - name: Test update a stopped server in check mode cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server check_mode: yes - name: Verify update a stopped server in check mode assert: that: - server is changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update a stopped server without force cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server - name: Verify update a stopped server without force assert: that: - server is changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test update a stopped server idempotence cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server - name: Verify update a stopped server idempotence assert: that: - server is not changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test server running in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server check_mode: yes - name: Verify server running in check mode assert: that: - server is changed - server.state == 'stopped' - name: Test server running cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server - name: Verify server running assert: that: - server is changed - server.state == 'running' - name: Test server running idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server - name: Verify server running idempotence assert: that: - server is not changed - server.state == 'running' - name: Test running server deletion by name in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server check_mode: yes - name: Verify running server deletion by name in check mode assert: that: - server is changed - server.state == 'running' - name: Test running server deletion by name cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server - name: Verify running server deletion by name assert: that: - server is changed - server.state == 'absent' - name: Test running server deletion by name idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server - name: Verify running server deletion by name idempotence assert: that: - server is not changed - server.state == 'absent' - name: Test stopped server deletion by uuid in check mode cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped check_mode: yes - name: Verify stopped server deletion by uuid in check mode assert: that: - server_stopped is changed - server_stopped.state == 'stopped' - name: Test stopped server deletion by uuid cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped - name: Verify stopped server deletion by uuid assert: that: - server_stopped is changed - server_stopped.state == 'absent' - name: Test stopped server deletion by uuid idempotence cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped - name: Verify stopped server deletion by uuid idempotence assert: that: - server_stopped is not changed - server_stopped.state == 'absent'