Отправьте данные из Google Compute Engine в Google Pub / Sub, используя Ansible - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы отправить данные из экземпляра Google VM в Google Pub / Sub, используя Ansible.

Ansible playbook

---
- hosts: localhost
  tasks:

  - name: Write into log file
    local_action:
      shell echo "Hello" >> /etc/ansible/log.txt

  - name: Send message through pubsub
    shell: python pub.py project-344421 topic_test
    args:
      chdir: /home/pubsub 

Ошибка

    "msg": "non-zero return code", 
    "rc": 1, 
    "start": "2020-04-14 18:20:00.723265", 
    "stderr": "Traceback (most recent call last):\n  File \"pub.py\", line 22, in <module>\n    from google.cloud import pubsub_v1\nImportError: No module named google.cloud", 
    "stderr_lines": [
        "Traceback (most recent call last):", 
        "  File \"pub.py\", line 22, in <module>", 
        "    from google.cloud import pubsub_v1", 
        "ImportError: No module named google.cloud"
    ], 
    "stdout": "", 
    "stdout_lines": []

Вручную, скрипт pub.py работает правильно с python pub.py project-344421 topic_test

Вывод

der_topic
Published message Hello
 now has message ID 874436722336138
Published 1 message(s).

Установлены модули google.cloud, google-cloud-pubsub и google-auth

pip install --upgrade google-cloud
pip install --upgrade google-cloud-pubsub
pip install --upgrade google-auth 

1 Ответ

1 голос
/ 14 апреля 2020

Возможно, что python исполняемый файл, используемый Ansible, отличается от того, который вы используете в командной строке.

Используйте следующую команду, чтобы выяснить путь к вашему исполняемому файлу, где это работает ...

$ which python

... затем скопируйте / вставьте путь к исполняемому файлу в вашу команду shell.

  - name: Send message through pubsub
    shell: /<FULL>/<PATH>/python pub.py project-344421 topic_test
    args:
      chdir: /home/pubsub 

Если это не работает, то вы также можете попробуйте проверить PYTHONPATH env var, чтобы убедиться, что он одинаков как в терминале, так и в контекстах Ansible.

...