summaryrefslogtreecommitdiffstats
path: root/ansible_collections/google/cloud/CONTRIBUTING.md
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/google/cloud/CONTRIBUTING.md')
-rw-r--r--ansible_collections/google/cloud/CONTRIBUTING.md84
1 files changed, 71 insertions, 13 deletions
diff --git a/ansible_collections/google/cloud/CONTRIBUTING.md b/ansible_collections/google/cloud/CONTRIBUTING.md
index 716d767c8..74c753d58 100644
--- a/ansible_collections/google/cloud/CONTRIBUTING.md
+++ b/ansible_collections/google/cloud/CONTRIBUTING.md
@@ -15,13 +15,25 @@ under a directory `ansible_collections`. Clone ensuring that hierarchy:
```shell
mkdir -p $TARGET_DIR/ansible_collections/google
-git clone <url> $TARGET_DIR/collections/google/cloud
+git clone <url> $TARGET_DIR/ansible_collections/google/cloud
+```
+
+Then set up your Python virtual environment:
+
+```shell
+cd $TARGET_DIR/ansible_collections/google/cloud
+python3 -m venv venv
+. ./venv/bin/activate
+pip3 install -r requirements.txt
+pip3 install -r requirements-test.txt
+pip3 install ansible
```
## Running tests
-### prequisites for all tests
+### Prequisites for all tests
+- Install `gcloud` following [these instructions](https://cloud.google.com/sdk/docs/install).
- Install the `ansible` package.
- Some container runtime is necessary (e.g. `podman` or `docker`). The instructions use podman.
@@ -29,18 +41,63 @@ git clone <url> $TARGET_DIR/collections/google/cloud
### Integration testing prequisites
-#### Installing personal GCP credentials
+#### Authentication with personal GCP credentials
+
+If you are running the integration tests locally the easiest way to
+authenticate to GCP is using [application default credentials](https://cloud.google.com/sdk/docs/authorizing#adc).
+Once you have installed `gcloud` and performed basic initialization (via `gcloud init`) run:
+
+```shell
+gcloud auth application-default login
+```
+
+#### Authentication with service account credentials
+
+A service account may also be used to run the integration tests. You can create one using `gcloud`:
+
+```shell
+gcloud iam service-accounts create ansible-test-account \
+ --description="For running Anisble integration tests" \
+ --display-name="Ansible Test Account"
+```
+
+You'll also need to export a key file. Here and below `$SERVICE_ACCOUNT_NAME`
+is the full email address of the service account, in the form
+`EMAIL@PROJECT_ID.iam.gserviceaccount.com`, e.g., if you used the
+account name `ansible-test-account` as suggested above and your project
+ID is `my-test-project`, use `ansible-test-account@my-test-project.iam.gserviceaccount.com`.
+
+```shell
+gcloud iam service-accounts keys create /path/to/cred/file.json \
+ --iam-account=ansible-test-account@my-test-project.iam.gserviceaccount.com
+chmod 0600 /path/to/cred/file.json
+```
+
+Read the [best practices for managing service account keys](https://cloud.google.com/iam/docs/best-practices-for-managing-service-account-keys)
+to learn how to keep your service account key and your GCP resources safe.
+
+#### Configuring test credentials
The integration tests for this module require the use of real GCP credentials, and must provide
-ansible-test those values. They can be added by authoring the following in `tests/integration/cloud-config-gcp.ini`:
+ansible-test those values. They can be added by creating the file `tests/integration/cloud-config-gcp.ini`.
+
+If you are using personal (i.e., application default) credentials, add:
+
+```
+[default]
+gcp_project: $PROJECT_ID
+gcp_cred_kind: application
+gcp_folder_id: $TEST_FOLDER (to create test projects)
+```
+
+If you are using a service account for credentials, add:
```
[default]
-gcp_project: @PROJECT_ID
-gcp_cred_file: @CRED_FILE
-gcp_cred_kind: @CRED_KIND
-gcp_cred_email: @EMAIL
-gcp_folder_id: @TEST_FOLDER (to create test projects)
+gcp_project: $PROJECT_ID
+gcp_cred_file: /path/to/cred/file.json
+gcp_cred_kind: serviceaccount
+gcp_folder_id: $TEST_FOLDER (to create test projects)
```
#### Setting up the project for testing
@@ -51,7 +108,8 @@ and is expected to be configured beforehand.
For convenience, a bootstrap script is provided.
NOTE: running this script will make irreversible changes in your
-GCP project (e.g. create an AppEngine project):
+GCP project (e.g. create an AppEngine project). You can omit
+`$SERVICE_ACCOUNT_NAME` is you are using application default credentials.
```bash
bash ./scripts/bootstrap-project.sh $PROJECT_ID $SERVICE_ACCOUNT_NAME
@@ -66,10 +124,10 @@ Run `ansible-test integration`. Currently some tests are disabled as [test are b
### Prequisites for role tests
If you would like to use podman, you must
-install the `molecule[podman]` package in PyPI:
+install the `molecule-plugins[podman]` package in PyPI:
```
-pip install --upgrade molecule[podman]
+pip install --upgrade molecule-plugins[podman]
```
### Running role tests
@@ -92,7 +150,7 @@ ansible-lint
## Specific Tasks
-The following enumerates detailed documentation for specific tasks related tot
+The following enumerates detailed documentation for specific tasks related to
the codebase.
### Updating the supported ansible-core version