greydjin
Скачать дистр один раз никак?
нельзя размещать файлы дистрибутива на гитхабе или еще где-то в публичных местах. а я хочу разместить роль в публичном месте
greydjin
добавить необходимость авторизации в роль?)
это что такое? есть какой-то механизм чтобы роль ходила на сайт, авторизовывалась в вебе?
⁠
зависит от реализации авторизации сайта
⁠
если там каждый раз надо вводить капчу - то все становится сложнее
greydjin
никогда не слышал о таком, что почитать
User
Если простая капча
⁠
никогда не слышал о таком, что почитать
начать с азов https://curl.haxx.se/docs/httpscripting.html#Basic_Authentication
⁠
а по задаче смотреть как реализовано и как можно автоматически аутентифицироваться
Erick
можно положить установочный файл в ваулт )
greydjin
можно положить установочный файл в ваулт )
непонятно чем это отличается от не шифрованного хранения в плане политики распространения
Erick
ну байтики другие
Erick
мало ли какие там условия
Erick
может прокатит
greydjin
Так же, как и оракл, напиши readme где пишешь "качать отсюда, положить сюда"
так сейчас и сделано, хочу без этих ручных действий и думаю о возможностях
Vladislav 👻
Проще забить, чем бороться с защитой авторизации
greydjin
Проще забить, чем бороться с защитой авторизации
а вариант ваула - решает вопрос лицензии? предлагали выше
Timur
В роли и не должно быть самого дистрибутива
greydjin
Сделай установку из локального источника, задаваемого параметром - и всего делов
по политике запрещено распространять дистрибутивы. а я хочу сделать роль в ансибл-галакси
greydjin
если я сделаю в роле указание локального источника - не будет у людей работать
Timur
Роль ансибла - это просто сценарий установки
Timur
Никакого дистрибутива там быть и не должно
Timur
Путь к дистрибутиву указывается в параметрах при вызове роли - вот и все
greydjin
сценарий который устанавливает дистрибутив, которому нужно предоставить дистрибутив. как предоставить сценарию дистрибутив?
Timur
если я сделаю в роле указание локального источника - не будет у людей работать
Почему не будет? Если правильно укажут путь к дистрибутиву - все будет
greydjin
указать путь на сайт 1С, исходник дистров, работать не будет, потому что они не отдают прямые ссылки на дистрибутивы. я не понимаю что вы подразумеваете под локальным источником
Vladislav 👻
Скачать дистрибутив руками и положить в папку files в роли
Vladislav 👻
А можно и просто ссылку хешированную взять, как у оракла
Timur
Вот как пример - наша роль для Oracle DB: https://github.com/lean-delivery/ansible-role-oracle-db
Timur
Очевидно, что дистрибутив оракл туда не включен
Timur
Но роль прекрасно работает
greydjin
но вы не отвечаете на мой вопрос, вы описываете как сделано по другому)
Timur
локального файла нет и локального репозитория тоже
Нет ножек - нет мультиков. То бишь, нет файла - нет и установки. О чем тут рассуждать?
greydjin
я на это уже отвечал что понимаю почему так сделано и ищу другие возможности, если вы не хотите обсуждать другие возможности - зачем вы описываете решение с которым я согласен?
Timur
но вы не отвечаете на мой вопрос, вы описываете как сделано по другому)
На ваш вопрос ответ простой - так делать нельзя. Все
Timur
Сформулируйте задачу конкретнее тогда
Timur
Что вы хотите?
Timur
Реализовать скачивание файла ансиблом с сайта 1с через форму авторизации?
greydjin
в идеале, я хотел чтобы мне рассказали о опыте решения подобной задачи и я получил рассказ - оракл, я бы хотел получить рассказ и о других компаниях-софте
Timur
в идеале, я хотел чтобы мне рассказали о опыте решения подобной задачи и я получил рассказ - оракл, я бы хотел получить рассказ и о других компаниях-софте
Какая разница? Подход везде одинаковый. Если компания-производитель не позволяет скачивать дистрибутив из открытого источника - так делать нельзя, вот и все. Просто эта часть выводится за пределы роли. Роль предназначена только для автоматизации установки. Скачивать дистрибутив из закрытых источников она совершенно не обязана
George
Блин
George
Коллега @greydjin зачем разводить эту суету ?
George
Как коллеги подсказали есть два варианта. 1. В роли сделать выкачивание напрямую с 1с Сложность в том, что завтра 1с может добавить капчу и приплыли. 2. Написать, что для применения роли нужно положить дистрибутив в каталог ХХХ. Пользователь сам выкачивает актуальную версию дистрибутива и потом уже применяет роль
George
перфекционизм
Не работает
George
Ну, и отлично.
GithubReleases
ansible/ansible tagged: v2.8.0rc2 Link: https://github.com/ansible/ansible/releases/tag/v2.8.0rc2 Release notes: New release v2.8.0rc2
Vladislav 👻
перфекционизм
Это вредно в ансибле
Vladislav 👻
Я как-то увлекся, налепил крутую роль, все здорово и феншуйно, а начал деплоить повторные доработки в роли и понял, что роль гавно...
Vladislav 👻
Сидишь ждешь по пол часа, хотя надо было всего лишь добавить пользователя
Vladislav 👻
Вот вам и перфекционизм
Константин
Только начинаю входить в ансибл. Столкнулся с проблемой. Пишу плейбук для автоматической развертки СЭД на удаленном сервере. Тестирую на виртуалке пока. Не могу в плейбуке распаковать war файл для замены в файле проперти некоторых параметров. Для этого использую просто модуль shell. - name: Распаковка businessjournal.war shell: "jar -xvf ./alfresco/businessjournal.war" Если этот таск запускать отдельно, не в этом плейбуке, то все проходит нормально, варник распаковывается. А в основном плейбуке выходит ошибка, с которой не могу разобраться: TASK [Распаковка businessjournal.war] ******************************************************************** fatal: [ub]: FAILED! => {"changed": true, "cmd": "jar -xvf ./alfresco/businessjournal.war", "delta": "0:00:00.001918", "end": "2019-05-02 18:32:04.681575", "msg": "non-zero return code", "rc": 127, "start": "2019-05-02 18:32:04.679657", "stderr": "/bin/sh: 1: jar: not found", "stderr_lines": ["/bin/sh: 1: jar: not found"], "stdout": "", "stdout_lines": []} насколько я понимаю, этот таск выполняется на мастер компьютере, что в случае основного плейбука, что в случае тестового. Гугл ничего не находит по этому поводу, либо я плохо ищу.
Timur
Только начинаю входить в ансибл. Столкнулся с проблемой. Пишу плейбук для автоматической развертки СЭД на удаленном сервере. Тестирую на виртуалке пока. Не могу в плейбуке распаковать war файл для замены в файле проперти некоторых параметров. Для этого использую просто модуль shell. - name: Распаковка businessjournal.war shell: "jar -xvf ./alfresco/businessjournal.war" Если этот таск запускать отдельно, не в этом плейбуке, то все проходит нормально, варник распаковывается. А в основном плейбуке выходит ошибка, с которой не могу разобраться: TASK [Распаковка businessjournal.war] ******************************************************************** fatal: [ub]: FAILED! => {"changed": true, "cmd": "jar -xvf ./alfresco/businessjournal.war", "delta": "0:00:00.001918", "end": "2019-05-02 18:32:04.681575", "msg": "non-zero return code", "rc": 127, "start": "2019-05-02 18:32:04.679657", "stderr": "/bin/sh: 1: jar: not found", "stderr_lines": ["/bin/sh: 1: jar: not found"], "stdout": "", "stdout_lines": []} насколько я понимаю, этот таск выполняется на мастер компьютере, что в случае основного плейбука, что в случае тестового. Гугл ничего не находит по этому поводу, либо я плохо ищу.
Таск выполняется на таргет машине
Timur
Текст ошибки говорит, что не найден исполняемый файл. Судя по всему, на таргет-машине не установлена java или нормально не прописаны пути к ней
Константин
java устанавливается - name: Установка необходимых пакетов apt: name: ['wget', 'postgresql-client', 'python-psycopg2', 'openjdk-8-jre-headless'] when: ansible_distribution == "Ubuntu" become: yes
Erick
name: ['wget', 'postgresql-client', 'python-psycopg2', 'openjdk-8-jre-headless'] уффф
Константин
а, понял не openjdk нужен же
NM
в идеале, я хотел чтобы мне рассказали о опыте решения подобной задачи и я получил рассказ - оракл, я бы хотел получить рассказ и о других компаниях-софте
Да примеров полно - роль это описание версионности, функционала, состава и процесса деплоя софта а плейбук это описание ландшафта и конкретного дистрибутива применяемого при инсталляции к ландшафту. Примеров полно на gitHub - например плейбуки и роли для инсталляции тех же продуктов Oracle.
Max
второй пункт сейчас сделан
в достаточно больших организациях, лицензионный контент предоставляется внутренним процессам при помощи спец. контент менеджмента, а ля satelite, а ля pulp/candlepin, а ля тупо кеш. тогда (иногда) имеет смысл держать свои роли, не из галакси. этим контентом, и его lifecycle может заниматься тот же, кто синкает открытые репы для внутреннего использования. это можно частично механизировать. тот же человек может стучать в поддержку вендоров и вынудить их сделать более удобный api для скачивания их контента.
Pavel
всем привет. столкнулся с непонятной проблемой с delegate_to. есть простой сценарий - name: Provision environment hosts: app tasks: - name: Copy SSL files to sync directory synchronize: src: ../ssl dest: ../nginx/ recursive: yes delegate_to: localhost все прочее, что должно выполнятся на хосте app я вырезал для наглядности. так вот, не хочет делегировать выполнение этого таска на localhost содержимое inventory следующее app ansible_host=46.101.141.43 ansible_port=22 ansible_python_interpreter=/usr/bin/python3 ansible_user=root localhost ansible_connection=local Таск падает с ошибкой: TASK [Copy SSL files to sync directory] ************************************************************************************************************************************************ fatal: [app -> localhost]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --out-format=<<CHANGED>>%i %n%L /home/pavel/projects/willingandable.ca/app/ssl pavel@46.101.141.43:../nginx/", "msg": "Warning: Permanently added '46.101.141.43' (ECDSA) to the list of known hosts.\r\npavel@46.101.141.43: Permission denied (publickey).\r\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]\n", "rc": 255} to retry, use: --limit @/home/pavel/projects/willingandable.ca/app/ansible/provisioning.retry при этом, если в плейбуке заменить хост app на localhost, все работает: TASK [Copy SSL files to sync directory] ************************************************************************************************************************************************ ok: [localhost -> localhost] глядя на ошибку, я не понимаю, почему ансибле ломится на IP app, когда ему явно в таске задано делегирование на localhost
Pavel
если запустить плейбук с -vvvv я вижу /home/pavel/projects/project/app/ansible/development/inventory did not meet host_list requirements, check plugin documentation if this is unexpected но при этом же app нормально резолвится в IP из inventory
Pavel
ЧЯДНТ?
Alexandr
вначале объясни, что ты пытаешься сделать. судя по логике, этой таской ты пытаешься синкануть на машине, с которой плейбук запускаешь, папку ssl в папку nginx
Pavel
да
Alexandr
так сделай через local_action. а то оно у тебя с твоего хоста на твой хост пытается по ssh подключиться и соответственно отфутболивает
Pavel
а почему не прокатывает delegate_to: localhost, если в inventory явно указано?
Pavel
раньше у меня как-то это работало в других плейбуках, а тут засада какая-тл
Alexandr
потому что в authorized_keys у тебя не прописано твоего же публичного ключа
Alexandr
pavel@46.101.141.43: Permission denied (publickey).\r\nrsync: connection unexpectedly closed (0 bytes received so far)
Анатолий
потому что этот плейбук выполняется на машине app, а она, уже, пытается перенатправить таску на localhost
Alexandr
Анатолий даже больше правду сказал, чем я
Pavel
а разве вот это localhost ansible_connection=local в inventory не должно явно заставить не по ssh ломиться, а просто на localhost?