Skip to main content

Molecule GCE Plugin

PyPI Package image Python Black Code Style Ansible Code of Conduct Ansible mailing lists Repository License -->

Molecule GCE is designed to allow use Google Cloud Engine for provisioning test resources.

Please note that this driver is currently in its early stage of development.

This plugin requires google.cloud and community.crypto collections to be present:

ansible-galaxy collection install google.cloud
ansible-galaxy collection install community.crypto

Installation and Usage

Install molecule-gce :

pip install molecule-gce

Create a new role with molecule using the GCE driver:

molecule init role <role_name> -d gce

Configure <role_name>/molecule/default/molecule.yml with required parameters:

dependency:
  name: galaxy
driver:
  name: gce
  project_id: my-google-cloud-platform-project-id  # if not set, will default to env GCE_PROJECT_ID
  region: us-central1  # REQUIRED
  network_name: my-vpc  # specify if other than default
  subnetwork_name: my-subnet  # specify if other than default
  vpc_host_project: null  # if you use a shared vpc, set here the vpc host project. In that case, your GCP user needs the necessary permissions in the host project, see https://cloud.google.com/vpc/docs/shared-vpc#iam_in_shared_vpc
  username: ssh-user # used to connect with ssh to the GCE instance, will default to 'molecule'
  auth_kind: serviceaccount  # set to machineaccount or serviceaccount or application - if set to null will read env GCP_AUTH_KIND
  service_account_email: null  # set to an email associated with the project - if set to null, will default to GCP_SERVICE_ACCOUNT_EMAIL. Should not be set if using auth_kind serviceaccount.
  service_account_file: /path/to/gce-sa.json  # set to the path to the JSON credentials file - if set to null, will default to env GCP_SERVICE_ACCOUNT_FILE
  scopes:
    - "https://www.googleapis.com/auth/compute"  # will default to env GCP_SCOPES, https://www.googleapis.com/auth/compute is the minimum required scope.
  external_access: false  # chose whether to create a public IP for the VM or not - default is private IP only
  instance_os_type: linux  # Either windows or linux. Will be considered linux by default. You can NOT mix Windows and Linux VMs in the same scenario.
platforms:
  # see src/molecule_gce/playbooks/tasks/create_linux_instance.yml for a complete list of supported keys
  - name: ubuntu-instance-created-by-molecule  #  REQUIRED: this will be your VM name
    zone: us-central1-a  # Example: us-west1-b. Will default to zone b of region defined in driver (some regions do not have a zone-a)
    machine_type: n1-standard-1  # If not specified, will default to n1-standard-1
    preemptible: false  # If not specified, will default to false. Preemptible instances have no SLA, in case of resource shortage in the zone they might get destroyed (or not be created) without warning, and will always be terminated after 24 hours. But they cost less and will mitigate the financial consequences of a PAYG licenced VM that would be forgotten.
    image: 'projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts'  # Points to an image, you can get a list of available images with command 'gcloud compute images list'.
       # The expected format of this string is projects/<project>/global/images/family/<family-name>
       # (see https://googlecloudplatform.github.io/compute-image-tools/daisy-automating-image-creation.html)
       #  Wille default to debian-10 image for os_type Linux, Windows 2019 for os_type Windows
    tags: # Not required. Format must follow https://docs.ansible.com/ansible/latest/collections/google/cloud/gcp_compute_instance_module.html#parameter-tags
      items:
        - allow-ssh
        - allow-rdp
  - name: debian-instance-created-by-molecule
    zone: us-central1-a
    machine_type: n1-standard-2
    image: 'projects/debian-cloud/global/images/family/debian-10'
  - name: n1-standard1-debian10-in-region-b


provisioner:
  name: ansible
verifier:
  name: ansible

Get Involved

License

The MIT License.

The logo is licensed under the Creative Commons NoDerivatives 4.0 License.

If you have some other use in mind, contact us.

Release files for molecule-gce 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for molecule-gce 1.0.0
File Size Uploaded
molecule-gce-1.0.0.tar.gz 36.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for molecule-gce 1.0.0
File Interpreter ABI Platform
molecule_gce-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.6 kB

Release files / molecule-gce-1.0.0.tar.gz

Download URL molecule-gce-1.0.0.tar.gz
Size 36.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c78dc4a862f265c862656f9a4948e565cac579ec9e3feee5bdc263aaf11d9be5
BLAKE2b-256 checksum
How to use checksums
a9e032bc68ae26855d7884408d5a2ee2a841c4c85b632bb746053b2542d95b47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.15

Release files / molecule_gce-1.0.0-py3-none-any.whl

Download URL molecule_gce-1.0.0-py3-none-any.whl
Size 19.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f6a1435a58450d4800d78dfcc02267fec5ad480167b204129521148b02a9fb1
BLAKE2b-256 checksum
How to use checksums
792bf76a9c6f66096b10d533affa04fcfacc61f4fdf75cd8a30da94571ed1237
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.15

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2

2 release files

0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page