[Scaleway] Add module to manage containers (#5496)

Signed-off-by: Lunik <lunik@tiwabbit.fr>

Signed-off-by: Lunik <lunik@tiwabbit.fr>
This commit is contained in:
Guillaume MARTINEZ 2022-11-07 21:04:55 +01:00 committed by GitHub
parent bc7e7f8fcb
commit 4fed0e13db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 960 additions and 0 deletions

View file

@ -0,0 +1,6 @@
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
cloud/scaleway
unsupported

View file

@ -0,0 +1,18 @@
---
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
scaleway_region: fr-par
container_namespace_name: cn-ansible-test
name: cn-ansible-test
description: Container used for testing scaleway_container ansible module
updated_description: Container used for testing scaleway_container ansible module (Updated description)
environment_variables:
MY_VAR: my_value
secret_environment_variables:
MY_SECRET_VAR: my_secret_value
updated_secret_environment_variables:
MY_SECRET_VAR: my_other_secret_value
image: rg.fr-par.scw.cloud/namespace-ansible-ci/nginx:latest
port: 80

View file

@ -0,0 +1,290 @@
---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Create container_namespace
community.general.scaleway_container_namespace:
state: present
name: '{{ container_namespace_name }}'
region: '{{ scaleway_region }}'
project_id: '{{ scw_project }}'
description: '{{ description }}'
register: integration_container_namespace
- name: Create a container (Check)
check_mode: yes
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_creation_check_task
- ansible.builtin.debug:
var: cn_creation_check_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_creation_check_task is success
- cn_creation_check_task is changed
- name: Create container
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_creation_task
- ansible.builtin.debug:
var: cn_creation_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_creation_task is success
- cn_creation_task is changed
- cn_creation_task.container.status in ["created", "ready"]
- name: Create container (Confirmation)
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_creation_confirmation_task
- ansible.builtin.debug:
var: cn_creation_confirmation_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_creation_confirmation_task is success
- cn_creation_confirmation_task is not changed
- cn_creation_confirmation_task.container.status in ["created", "ready"]
- name: Update container (Check)
check_mode: yes
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_check_task
- ansible.builtin.debug:
var: cn_update_check_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_check_task is success
- cn_update_check_task is changed
- name: Update container
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_task
- ansible.builtin.debug:
var: cn_update_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_task is success
- cn_update_task is changed
- cn_update_task.container.status in ["created", "ready"]
- name: Update container (Confirmation)
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_confirmation_task
- ansible.builtin.debug:
var: cn_update_confirmation_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_confirmation_task is success
- cn_update_confirmation_task is not changed
- cn_update_confirmation_task.container.status in ["created", "ready"]
- name: Update container secret variables (Check)
check_mode: yes
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ updated_secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_secret_check_task
- ansible.builtin.debug:
var: cn_update_secret_check_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_secret_check_task is success
- cn_update_secret_check_task is changed
- name: Update container secret variables
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ updated_secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_secret_task
- ansible.builtin.debug:
var: cn_update_secret_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_secret_task is success
- cn_update_secret_task is changed
- cn_update_secret_task.container.status in ["created", "ready"]
- "'hashed_value' in cn_update_secret_task.container.secret_environment_variables[0]"
- name: Update container secret variables (Confirmation)
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ updated_description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ updated_secret_environment_variables }}'
port: '{{ port }}'
register: cn_update_secret_confirmation_task
- ansible.builtin.debug:
var: cn_update_secret_confirmation_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_update_secret_confirmation_task is success
- cn_update_secret_confirmation_task is not changed
- cn_update_secret_confirmation_task.container.status == "ready"
- "'hashed_value' in cn_update_secret_confirmation_task.container.secret_environment_variables[0]"
- name: Delete container (Check)
check_mode: yes
community.general.scaleway_container:
state: absent
name: '{{ name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
register: cn_deletion_check_task
- ansible.builtin.debug:
var: cn_deletion_check_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_deletion_check_task is success
- cn_deletion_check_task is changed
- name: Delete container
community.general.scaleway_container:
state: absent
name: '{{ name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
register: cn_deletion_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_deletion_task is success
- cn_deletion_task is changed
- name: Delete container (Confirmation)
community.general.scaleway_container:
state: absent
name: '{{ name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
register: cn_deletion_confirmation_task
- ansible.builtin.debug:
var: cn_deletion_confirmation_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_deletion_confirmation_task is success
- cn_deletion_confirmation_task is not changed
- name: Delete container namespace
community.general.scaleway_container_namespace:
state: absent
name: '{{ container_namespace_name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
project_id: '{{ scw_project }}'

View file

@ -0,0 +1,6 @@
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
cloud/scaleway
unsupported

View file

@ -0,0 +1,16 @@
---
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
scaleway_region: fr-par
container_namespace_name: cn-ansible-test
name: cn-ansible-test
description: Container used for testing scaleway_container_info ansible module
updated_description: Container used for testing scaleway_container_info ansible module (Updated description)
environment_variables:
MY_VAR: my_value
secret_environment_variables:
MY_SECRET_VAR: my_secret_value
image: rg.fr-par.scw.cloud/namespace-ansible-ci/nginx:latest
port: 80

View file

@ -0,0 +1,63 @@
---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Copyright (c) 2022, Guillaume MARTINEZ <lunik@tiwabbit.fr>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Create container_namespace
community.general.scaleway_container_namespace:
state: present
name: '{{ container_namespace_name }}'
region: '{{ scaleway_region }}'
project_id: '{{ scw_project }}'
description: '{{ description }}'
register: integration_container_namespace
- name: Create container
community.general.scaleway_container:
state: present
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
description: '{{ description }}'
environment_variables: '{{ environment_variables }}'
secret_environment_variables: '{{ secret_environment_variables }}'
port: '{{ port }}'
- name: Get container info
community.general.scaleway_container_info:
name: '{{ name }}'
region: '{{ scaleway_region }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
register: cn_info_task
- ansible.builtin.debug:
var: cn_info_task
- name: Check module call result
ansible.builtin.assert:
that:
- cn_info_task is success
- cn_info_task is not changed
- name: Delete container
community.general.scaleway_container:
state: absent
name: '{{ name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
namespace_id: '{{ integration_container_namespace.container_namespace.id }}'
registry_image: '{{ image }}'
- name: Delete container namespace
community.general.scaleway_container_namespace:
state: absent
name: '{{ container_namespace_name }}'
region: '{{ scaleway_region }}'
description: '{{ description }}'
project_id: '{{ scw_project }}'