diff --git a/README.md b/README.md
index 98877ec..005ae9a 100644
--- a/README.md
+++ b/README.md
@@ -12,71 +12,50 @@ Cloud infrastructure provisioning.
* Manages OpenStack VMs
-## Requirements
+## Ansible compatibility
-Ansible Collections:
+This collection has been tested against Ansible `2.9.10`.
+
+## Installation
+
+To use this collection it must be first installed.
+
+This can performed by using the Ansible CLI directly.
+
+```bash
+ansible-galaxy collection install snowdrop.cloud_infra
+```
+
+Another way to install this collection is using a `requirements.yml` file.
```yaml
+---
collections:
- - name: openstack.cloud
- version: 2.1.0
+ - name: snowdrop.cloud_infra
```
-## Role Variables
+Then install the this file using the following command.
-OpenStack VM role required parameters
+```bash
+ansible-galaxy collection install -r requirements.yml --upgrade
+```
-| Parameter | Comments |
-|-----------|------------|
-| `rhos_auth`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Map with the authentication |
-| `rhos_auth_type`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | RHOS Authentication type 1) |
-| `openstack_security_group`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Security group |
-| `state`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | State of the VM
* `present`
* `absent` |
-| `vm_name`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Name of the VM to be created |
+## Roles
-1) More information on the available keystone plugins on the
-[RHOS documentation](https://docs.openstack.org/keystoneauth/latest/plugin-options.html#available-plugins).
-
-The `rhos_auth` Map parameter must contain the required attributes for a successfull
- authentication as selected with the `rhos_auth_type` variable.
-
-For a `v3password` authentication the required contents are the following.
+* [openstack_vm](roles/openstack_vm): provision OpenStack virtual machines
-| Name | Comments |
-|-------|-----------------------------------|
-| `auth_url`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Service authentication URL |
-| `password`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Console login user |
-| `project_domain_name`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Project domain |
-| `project_name`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Tenant domain |
-| `user_domain_name`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | User domain |
-| `username`
$\color{fuchsia}{\textsf{map}}$ / $\color{red}{\textsf{required}}$ | Console login user |
+## Usage
-Output:
-* `openstack_vm_ipv4`
-* `openstack_output`
+To create a VM on an OpenStack project check the [`create_vm` playbook](playbooks/create_vm.yml).
-## Example
+To remove a VM from an OpenStack project check the [`remove_vm` playbook](playbooks/create_vm.yml).
-Sample playbook:
+## License
-```yaml
-- name: "Create VM on OpenStack"
- hosts: localhost
- gather_facts: True
-
- tasks:
- - name: "Create VM"
- ansible.builtin.include_role:
- name: "snowdrop.cloud_infra.openstack_vm"
- vars:
- rhos_auth:
- auth_url:
- project_name:
- username:
- password:
- user_domain_name:
- project_domain_name:
- rhos_auth_type: v3password
- state: present
- vm_name: snowdrop-vm
-```
\ No newline at end of file
+Apache License 2.0
+
+Check the [LICENSE](LICENSE) to view the full text.
+
+## Author Information
+
+This role has been created by the [Snowdrop team](https://github.com/snowdrop/).
diff --git a/roles/openstack_vm/molecule/github/INSTALL.rst b/molecule/github/INSTALL.rst
similarity index 100%
rename from roles/openstack_vm/molecule/github/INSTALL.rst
rename to molecule/github/INSTALL.rst
diff --git a/roles/openstack_vm/molecule/github/converge.yml b/molecule/github/converge.yml
similarity index 100%
rename from roles/openstack_vm/molecule/github/converge.yml
rename to molecule/github/converge.yml
diff --git a/roles/openstack_vm/molecule/github/create.yml b/molecule/github/create.yml
similarity index 100%
rename from roles/openstack_vm/molecule/github/create.yml
rename to molecule/github/create.yml
diff --git a/roles/openstack_vm/molecule/github/defaults/main.yml b/molecule/github/defaults/main.yml
similarity index 97%
rename from roles/openstack_vm/molecule/github/defaults/main.yml
rename to molecule/github/defaults/main.yml
index f6875c4..ea57293 100644
--- a/roles/openstack_vm/molecule/github/defaults/main.yml
+++ b/molecule/github/defaults/main.yml
@@ -9,7 +9,7 @@ openstack_defaults:
name: "{{ hostname }}"
image: Fedora-Cloud-Base-35
key_name: "{{ hostname }}"
- flavor: m1.medium
+ flavor: m1.small
network: default_network
security_group: default_security_group
# Array of items with 2 attributes, name and size
diff --git a/roles/openstack_vm/molecule/github/destroy.yml b/molecule/github/destroy.yml
similarity index 100%
rename from roles/openstack_vm/molecule/github/destroy.yml
rename to molecule/github/destroy.yml
diff --git a/roles/openstack_vm/molecule/local-default-key/molecule.yml b/molecule/github/molecule.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-default-key/molecule.yml
rename to molecule/github/molecule.yml
diff --git a/molecule/github/roles b/molecule/github/roles
new file mode 120000
index 0000000..148b132
--- /dev/null
+++ b/molecule/github/roles
@@ -0,0 +1 @@
+../../roles/
\ No newline at end of file
diff --git a/roles/openstack_vm/molecule/github/verify.yml b/molecule/github/verify.yml
similarity index 93%
rename from roles/openstack_vm/molecule/github/verify.yml
rename to molecule/github/verify.yml
index be7ce2c..ddf2e20 100644
--- a/roles/openstack_vm/molecule/github/verify.yml
+++ b/molecule/github/verify.yml
@@ -42,7 +42,7 @@
- name: "Validate server IPV4"
ansible.builtin.assert:
that:
- - openstack_server_info_output.servers[0].access_ipv4 is defined and openstack_server_info_output.servers[0].access_ipv4 | length > 0
+ - openstack_vm_ipv4 is defined and openstack_vm_ipv4 | length > 0
msg: "Openstack server must have an IPV4. "
- name: "Validate server flavor"
diff --git a/roles/openstack_vm/molecule/local-default-key/INSTALL.rst b/molecule/local-default-key/INSTALL.rst
similarity index 100%
rename from roles/openstack_vm/molecule/local-default-key/INSTALL.rst
rename to molecule/local-default-key/INSTALL.rst
diff --git a/roles/openstack_vm/molecule/local-default-key/converge.yml b/molecule/local-default-key/converge.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-default-key/converge.yml
rename to molecule/local-default-key/converge.yml
diff --git a/roles/openstack_vm/molecule/local-default-key/create.yml b/molecule/local-default-key/create.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-default-key/create.yml
rename to molecule/local-default-key/create.yml
diff --git a/roles/openstack_vm/molecule/local-vm-key/defaults/main.yml b/molecule/local-default-key/defaults/main.yml
similarity index 97%
rename from roles/openstack_vm/molecule/local-vm-key/defaults/main.yml
rename to molecule/local-default-key/defaults/main.yml
index 280ecf4..f33b3e9 100644
--- a/roles/openstack_vm/molecule/local-vm-key/defaults/main.yml
+++ b/molecule/local-default-key/defaults/main.yml
@@ -35,7 +35,7 @@ openstack_defaults:
name: "{{ hostname }}"
image: Fedora-Cloud-Base-35
key_name: "{{ hostname }}"
- flavor: m1.medium
+ flavor: m1.small
network: default_network
security_group: default_security_group
# Array of items with 2 attributes, name and size
diff --git a/roles/openstack_vm/molecule/local-default-key/destroy.yml b/molecule/local-default-key/destroy.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-default-key/destroy.yml
rename to molecule/local-default-key/destroy.yml
diff --git a/roles/openstack_vm/molecule/github/molecule.yml b/molecule/local-default-key/molecule.yml
similarity index 94%
rename from roles/openstack_vm/molecule/github/molecule.yml
rename to molecule/local-default-key/molecule.yml
index 6922138..03e06e0 100644
--- a/roles/openstack_vm/molecule/github/molecule.yml
+++ b/molecule/local-default-key/molecule.yml
@@ -4,6 +4,7 @@ dependency:
driver:
name: default
# name: delegated
+ # name: docker
platforms:
- name: instance
image: docker.io/pycontribs/centos:8
diff --git a/molecule/local-default-key/roles b/molecule/local-default-key/roles
new file mode 120000
index 0000000..148b132
--- /dev/null
+++ b/molecule/local-default-key/roles
@@ -0,0 +1 @@
+../../roles/
\ No newline at end of file
diff --git a/roles/openstack_vm/molecule/local-default-key/verify.yml b/molecule/local-default-key/verify.yml
similarity index 95%
rename from roles/openstack_vm/molecule/local-default-key/verify.yml
rename to molecule/local-default-key/verify.yml
index ebb9a0a..10653f7 100644
--- a/roles/openstack_vm/molecule/local-default-key/verify.yml
+++ b/molecule/local-default-key/verify.yml
@@ -52,7 +52,7 @@
- name: "Validate server IPV4"
ansible.builtin.assert:
that:
- - openstack_server_info_output.servers[0].access_ipv4 is defined and openstack_server_info_output.servers[0].access_ipv4 | length > 0
+ - openstack_vm_ipv4 is defined and openstack_vm_ipv4 | length > 0
msg: "Openstack server must have an IPV4. "
- name: "Validate server flavor"
diff --git a/roles/openstack_vm/molecule/local-vm-key/INSTALL.rst b/molecule/local-vm-key/INSTALL.rst
similarity index 100%
rename from roles/openstack_vm/molecule/local-vm-key/INSTALL.rst
rename to molecule/local-vm-key/INSTALL.rst
diff --git a/roles/openstack_vm/molecule/local-vm-key/converge.yml b/molecule/local-vm-key/converge.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-vm-key/converge.yml
rename to molecule/local-vm-key/converge.yml
diff --git a/roles/openstack_vm/molecule/local-vm-key/create.yml b/molecule/local-vm-key/create.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-vm-key/create.yml
rename to molecule/local-vm-key/create.yml
diff --git a/roles/openstack_vm/molecule/local-default-key/defaults/main.yml b/molecule/local-vm-key/defaults/main.yml
similarity index 97%
rename from roles/openstack_vm/molecule/local-default-key/defaults/main.yml
rename to molecule/local-vm-key/defaults/main.yml
index 280ecf4..f33b3e9 100644
--- a/roles/openstack_vm/molecule/local-default-key/defaults/main.yml
+++ b/molecule/local-vm-key/defaults/main.yml
@@ -35,7 +35,7 @@ openstack_defaults:
name: "{{ hostname }}"
image: Fedora-Cloud-Base-35
key_name: "{{ hostname }}"
- flavor: m1.medium
+ flavor: m1.small
network: default_network
security_group: default_security_group
# Array of items with 2 attributes, name and size
diff --git a/roles/openstack_vm/molecule/local-vm-key/destroy.yml b/molecule/local-vm-key/destroy.yml
similarity index 100%
rename from roles/openstack_vm/molecule/local-vm-key/destroy.yml
rename to molecule/local-vm-key/destroy.yml
diff --git a/roles/openstack_vm/molecule/local-vm-key/molecule.yml b/molecule/local-vm-key/molecule.yml
similarity index 87%
rename from roles/openstack_vm/molecule/local-vm-key/molecule.yml
rename to molecule/local-vm-key/molecule.yml
index 952b8f8..03e06e0 100644
--- a/roles/openstack_vm/molecule/local-vm-key/molecule.yml
+++ b/molecule/local-vm-key/molecule.yml
@@ -2,7 +2,8 @@
dependency:
name: galaxy
driver:
- name: delegated
+ name: default
+ # name: delegated
# name: docker
platforms:
- name: instance
diff --git a/molecule/local-vm-key/roles b/molecule/local-vm-key/roles
new file mode 120000
index 0000000..148b132
--- /dev/null
+++ b/molecule/local-vm-key/roles
@@ -0,0 +1 @@
+../../roles/
\ No newline at end of file
diff --git a/roles/openstack_vm/molecule/local-vm-key/verify.yml b/molecule/local-vm-key/verify.yml
similarity index 96%
rename from roles/openstack_vm/molecule/local-vm-key/verify.yml
rename to molecule/local-vm-key/verify.yml
index 81f7fc2..f7ca902 100644
--- a/roles/openstack_vm/molecule/local-vm-key/verify.yml
+++ b/molecule/local-vm-key/verify.yml
@@ -60,7 +60,7 @@
- name: "Validate server IPV4"
ansible.builtin.assert:
that:
- - openstack_server_info_output.servers[0].access_ipv4 is defined and openstack_server_info_output.servers[0].access_ipv4 | length > 0
+ - openstack_vm_ipv4 is defined and openstack_vm_ipv4 | length > 0
msg: "Openstack server must have an IPV4. "
- name: "Validate server flavor"
diff --git a/molecule/requirements.txt b/molecule/requirements.txt
new file mode 100644
index 0000000..2e0a325
--- /dev/null
+++ b/molecule/requirements.txt
@@ -0,0 +1,8 @@
+#molecule[docker,lint]
+molecule-plugins[docker]
+yq
+ansible-lint
+#molecule-lint
+molecule-docker
+#molecule-podman
+lint
\ No newline at end of file
diff --git a/playbooks/create_vm.yml b/playbooks/create_vm.yml
new file mode 100644
index 0000000..3bff300
--- /dev/null
+++ b/playbooks/create_vm.yml
@@ -0,0 +1,11 @@
+- name: "Create VM on OpenStack"
+ hosts: localhost
+ gather_facts: True
+
+ tasks:
+ - name: "Create VM"
+ ansible.builtin.include_role:
+ name: "snowdrop.cloud_infra.openstack_vm"
+ vars:
+ state: present
+ vm_name: snowdrop-vm
diff --git a/playbooks/remove_vm.yml b/playbooks/remove_vm.yml
new file mode 100644
index 0000000..c9c53ea
--- /dev/null
+++ b/playbooks/remove_vm.yml
@@ -0,0 +1,11 @@
+- name: "Remove VM on OpenStack"
+ hosts: localhost
+ gather_facts: True
+
+ tasks:
+ - name: "Remove VM"
+ ansible.builtin.include_role:
+ name: "snowdrop.cloud_infra.openstack_vm"
+ vars:
+ state: absent
+ vm_name: snowdrop-vm
diff --git a/requirements.txt b/requirements.txt
index c678eea..38b9f8f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,10 +1,3 @@
-molecule[docker,lint]
-openstacksdk >= 1.2.0
-#python-openstackclient >= 6.2.0
-yq
ansible >= 2.9.10
-ansible-lint
-#molecule-lint
-molecule-docker
-#molecule-podman
-lint
\ No newline at end of file
+openstacksdk >= 2.0.0
+#python-openstackclient >= 6.2.0