#github #ansible #uri
#github #ansible #uri
Вопрос:
Я пытаюсь получить browser_download_url
от https://api.github.com/repos/LIMXTEC/BitCore/releases/latest который содержит gnu_no-wallet.tar.gz
Я действительно новичок в Ansible и пытаюсь понять, как я могу сделать это самым простым способом.
Комментарии:
1. Добро пожаловать в StackOverflow. Несколько советов для вашего будущего вопроса и чтобы избежать отрицательных отзывов: покажите хотя бы то, что вы пробовали до сих пор, мы, как правило, не являемся сервисом «пожалуйста, напишите мне этот код» .
2. Спасибо, вы обратите внимание в будущем.
Ответ №1:
Вы можете достичь того, что ищете, с помощью модуля uri
и, исходя из его результатов register
, использовать комбинацию a loop
и a when
, чтобы точно определить искомое значение.
С помощью playbook:
- hosts: all
gather_facts: no
tasks:
- uri:
url: https://api.github.com/repos/LIMXTEC/BitCore/releases/latest
register: github_call
- debug:
msg: "{{ item.browser_download_url }}"
loop: "{{ github_call.json.assets }}"
when: "'gnu_no-wallet.tar.gz' in item.browser_download_url"
loop_control:
label: "{{ item.name }}"
Вы получите резюме:
PLAY [all] *******************************************************************************************************
TASK [uri] *******************************************************************************************************
ok: [localhost]
TASK [debug] *****************************************************************************************************
skipping: [localhost] => (item=bitcore-0.90.9.7-win32-setup.exe)
skipping: [localhost] => (item=bitcore-0.90.9.7-win64-setup.exe)
skipping: [localhost] => (item=bitcore-arm-linux-gnueabihf.tar.gz)
skipping: [localhost] => (item=bitcore-i686-pc-linux-gnu.tar.gz)
skipping: [localhost] => (item=bitcore-qt-win32.exe)
skipping: [localhost] => (item=bitcore-qt-win64.exe)
skipping: [localhost] => (item=bitcore-win32-daemon.zip)
skipping: [localhost] => (item=bitcore-win64-daemon.zip)
ok: [localhost] => (item=bitcore-x86_64-linux-gnu_no-wallet.tar.gz) => {
"msg": "https://github.com/LIMXTEC/BitCore/releases/download/0.90.9.7/bitcore-x86_64-linux-gnu_no-wallet.tar.gz"
}
skipping: [localhost] => (item=bitcore-x86_64-linux-gnu_qt5-dev.tar.gz)
skipping: [localhost] => (item=bitcore-x86_64-linux-gnu_qt5_with-libs.tar.gz)
PLAY RECAP *******************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Комментарии:
1. Привет, спасибо за вашу помощь и объяснение относительно моих будущих публикаций. Я попробовал ваш код, буде я получаю эту ошибку:
ERROR! 'loop_control' is not a valid attribute for a Task The error appears to have been in '/root/ansible/api.yaml': line 9, column 7, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - debug: ^ here
что не так?2. Вероятно, у вас проблема с идентификацией. Имейте в виду, что, как и в Python, в YAML неправильный отступ изменяет значение различных элементов.
3. Я просто скопировал ваш код и вставил его в свой файл yaml, поэтому все идентификаторы также копируются из вашего кода.
4. Какая у вас версия Ansible? В противном случае просто удалите
loop_control
иlabel
, это просто для уменьшения выходных данных, которые в противном случае могли бы быть загромождены5. хорошо, обновленный Ansible до 2.9, теперь работает. Извините, моя вина! Большое вам спасибо за ваше время и вашу помощь 🙂