Наконец-то я понял, вот мой проект
ansible-workplace
- .gitignore
- ansible.cfg
- inventory.gcp.yaml
- main.yaml
- requirements.txt
ansible .cfg
[defaults]
inventory = inventory.gcp.yaml
host_key_checking = False
private_key_file = /Users/<your user>/.ssh/google_compute_engine
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml, gcp_compute
inventory.gcp.yaml
plugin: gcp_compute
projects:
- gcp-project1
- gcp-project2
auth_kind: serviceaccount
service_account_file: /Users/<your user>/.ssh/temp-serviceaccount.json
main .yaml
- name: echo
hosts: all
gather_facts: yes
tasks:
- name: Manage instances
# connection: ssh
shell: |
server_name=`hostname`
echo $server_name checking legacy-endpoint-access/0.1
leg1=$(curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/legacy-endpoint-access/0.1)
echo $leg1
echo $server_name checking legacy-endpoint-access/v1beta1
leg2=$(curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/legacy-endpoint-access/v1beta1)
echo $leg2
register: out
- debug: var=out.stdout_lines
по умолчанию ansible не будет использовать сгенерированный gcloud ключ s sh для подключения к экземплярам GCE. Так что вам может понадобиться сделать ниже. «gcloud compute config-s sh» добавит имена хостов в ваш ~ / .ssh / config, и теперь вы можете более легко подключаться к экземплярам gce, и, что наиболее важно, вы полагаете, что ключ вычисления должен использоваться ansible для подключения к gce экземпляров. Так что в ansible .cfg эта строка имеет решающее значение "private_key_file = /Users//.ssh/google_compute_engine"
gcloud compute config-ssh --remove
gcloud compute config-ssh
ansible-playbook main.yaml
теперь вы можете счастливо запустить" ansible -playbook main.yaml "