Как использовать ansible для выполнения сценария оболочки против экземпляров GCE - PullRequest
0 голосов
/ 14 февраля 2020

как использовать ansible для выполнения сценария оболочки для экземпляров gce. У меня есть служебная учетная запись, и у нее есть права администратора.

Как написать ansible playbook, чтобы я мог выполнять сценарии оболочки для всех виртуальных машин в моем проекте gcp.

Ниже ссылки не очень мне помогают https://docs.ansible.com/ansible/latest/modules/gce_module.html# https://docs.ansible.com/ansible/latest/scenario_guides/guide_gce.html#gce -dynami c -инвентарь

Я предпочитаю ansible потому что это без агента. Я не хочу устанавливать какие-либо процессы в этих виртуальных машинах, потому что они производственные серверы.

1 Ответ

0 голосов
/ 14 февраля 2020

Наконец-то я понял, вот мой проект

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 "

...