mirror of
https://github.com/ansible-collections/google.cloud.git
synced 2025-09-29 21:13:30 -07:00
Adding README for plugin
This commit is contained in:
parent
d6e4860eba
commit
8b68a484e8
1 changed files with 73 additions and 0 deletions
73
plugins/connection/README.md
Normal file
73
plugins/connection/README.md
Normal file
|
@ -0,0 +1,73 @@
|
|||
# Identity Aware Proxy Connection Plugin
|
||||
|
||||
This plugin uses the gcloud cli [start-iap-tunnel](https://cloud.google.com/sdk/gcloud/reference/compute/start-iap-tunnel)
|
||||
method to prepare TCP forwarding to your compute instances, and then uses the
|
||||
builtin ansible SSH connection plugin to communicate ansible commands to the
|
||||
target nodes.
|
||||
|
||||
This makes it possible to start using ansible without the need to expose your
|
||||
instances to the open web, or configure stringent firewall rules to ensure no
|
||||
bad actors can potentially login to your infrastructure.
|
||||
|
||||
## Requisites
|
||||
|
||||
1. The [gcloud cli tool](https://cloud.google.com/sdk/gcloud?authuser=0) installed
|
||||
2. Firewall rules in places for [IAP TCP Forwarding](https://cloud.google.com/iap/docs/using-tcp-forwarding)
|
||||
|
||||
## Configuring the connection plugin
|
||||
|
||||
The connection plugin can be configured by setting some values in the
|
||||
`[gcloud]` section of your ansible.cfg, here's an example:
|
||||
|
||||
```ini
|
||||
[gcloud]
|
||||
account = my-service-account@my-project.iam.gserviceaccount.com
|
||||
project = my-project
|
||||
region = us-central1
|
||||
zone = us-central1-a
|
||||
```
|
||||
|
||||
With the above, you can now connect to all your instances in a single
|
||||
`us-central1-a` zone via IAP.
|
||||
|
||||
You can also couple this with the GCP dynamic inventory like so:
|
||||
|
||||
```yaml
|
||||
plugin: google.cloud.gcp_compute
|
||||
zones:
|
||||
- us-central1-a
|
||||
- us-central1-b
|
||||
- us-central1-c
|
||||
- us-central1-f
|
||||
projects:
|
||||
- my-project
|
||||
service_account_file: /path/to/my/service-account.json
|
||||
auth_kind: serviceaccount
|
||||
scopes:
|
||||
- 'https://www.googleapis.com/auth/cloud-platform'
|
||||
- 'https://www.googleapis.com/auth/compute.readonly'
|
||||
|
||||
# Create groups from labels e.g.
|
||||
keyed_groups:
|
||||
- prefix: gcp
|
||||
key: labels.gcp_role
|
||||
|
||||
# inventory_hostname needs to be the actual name of the instance
|
||||
hostnames:
|
||||
- name
|
||||
|
||||
# fetch zone dynamically to feed IAP plugin
|
||||
compose:
|
||||
ansible_gcloud_zone: zone
|
||||
|
||||
# maybe add some filters
|
||||
filters:
|
||||
- 'status = RUNNING'
|
||||
- 'labels.my-special-label:some-value'
|
||||
```
|
||||
|
||||
with the above, you don't need to statically set the zone, they will be
|
||||
populated accordingly.
|
||||
|
||||
The rest of the connection behavior can be configured just like the builtin SSH
|
||||
ansible plugin, e.g. remote user, etc.
|
Loading…
Add table
Add a link
Reference in a new issue