Как получить доступ к машине упаковщика (IP / хост) через ansible во время сборки - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь создать свое приложение, используя упаковщик и поставщик ANSIB, который использует GCP.Но в процессе сборки мне нужно выполнить несколько команд curl, и я не могу найти, как сделать то же самое.

Я уже пробовал «localhost», а затем некоторые переменные типа ansible, такие как «{{ansible_host}}» (возвращая 127.0.0.1, которая не работает) и «{{ansible_default_ipv4.address}}» (переменная не найдена)

Я использую их в файле yml.j2.Может ли это быть причиной проблемы.

ошибка -> тест с "ansible_host"

[0;32m    googlecompute: TASK [deploy-XXXXX : Create the XXXXX collection] ***************************[0m
[0;32m    googlecompute: fatal: [localhost]: FAILED! => {"changed": false, "content": "", "msg": "Status code was -1 and not [200]: Request failed: <urlopen error [Errno 111] Connection refused>", "redirected": false, "status": -1, "url": "http://127.0.0.1:8765/api/v1/collections/XXXXX"}[0m
[0;32m    googlecompute:    to retry, use: --limit @/deploy-XXXXX.retry[0m
[0;32m    googlecompute:[0m
[0;32m    googlecompute: PLAY RECAP *********************************************************************[0m
[0;32m    googlecompute: localhost                  : ok=2    changed=1    unreachable=0    failed=1[0m

тест с "ansible_default_ipv4.address"

[0;32m    googlecompute: TASK [deploy-XXXXX : copy environment specific variables] *********************[0m
[0;32m    googlecompute: fatal: [localhost]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible_default_ipv4' is undefined"}[0m
[0;32m    googlecompute:    to retry, use: --limit @/deploy-XXXXX.retry[0m
[0;32m    googlecompute:[0m
[0;32m    googlecompute: PLAY RECAP *********************************************************************[0m
[0;32m    googlecompute: localhost                  : ok=0    changed=0    unreachable=0    failed=1[0m
[0;32m    googlecompute:[0m

Здесь фрагмент пьесы

- name: Validate server runing
  uri:
    url: "http://{{ ansible_default_ipv4.address }}:{{ port }}/validate"
    method: PUT
    body_format: json
    body: "{\"test\":\"validate\"}"
    status_code: 200
    headers:
      Content-Type: "application/json"

1 Ответ

0 голосов
/ 22 января 2019

Мне удалось преодолеть эту проблему, добавив Delegate_to: по умолчанию к задаче.например,

- name: Validate server runing
  uri:
    url: "http://{{ ansible_default_ipv4.address }}:{{ port }}/validate"
    method: PUT
    body_format: json
    body: "{\"test\":\"validate\"}"
    status_code: 200
    headers:
      Content-Type: "application/json"
  delegate_to: default
...