Timur
https://github.com/nginxinc/ansible-role-nginx
Roman
Одна большая портянка для всех модулей - так себе. Конфиг под модуль, можно в своём репе держать, версионность. как писали выше
Eduard
Timur
Aleksandr
maven
Aleksandr
Мы же параметризовали конфиг, а далее его в ансибле надо прогнать
Timur
Что, прямо напрямую через maven install, без артифактов и интеграционных тестов?
Aleksandr
Gitlab ci +jenkins
Timur
В чем проблема-то?
Aleksandr
В чем проблема-то?
Где переменные подстановки хранить для разных сред, в репе с модулем?
Timur
Вообще, это скорее уже вопрос для DevOps частика. Проблемы на уровне ansible я тут не вижу вообще. Для темплейтинга конфига ансиблом нужна плейбука с одной таской - вызовом модуля template
Timur
Timur
Думаю, лучше все же сюда с этим вопросом:
https://t.me/devops_ru
Timur
Про ансибл тут особо нечего обсуждать
Roman
Timur
Ребята, это уже не проблема ансибла
Timur
Давайте в более подходящий чат
Alex
stdout: |-
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
ws.require(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 834, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (yamllint 1.2.1 (/usr/lib/python3/dist-packages), Requirement.parse('yamllint==1.10.0'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ansible/.ansible/tmp/ansible-tmp-1571664613.8057463-81203150607731/yamllint", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'yamllint==1.10.0' distribution was not found and is required by the application
а я что то упускаю при попытке запустить yamllint через script?
Alex
сам таск проще некуда
- name: Run yamllint
script: /usr/bin/yamllint --help
args:
executable: python3
register: result
Anonymous
Alex
есть
Alex
из командной строки все отрабатывает
Alex
# python3 /usr/bin/yamllint -v
yamllint 1.2.1
Sergey
stdout: |-
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
ws.require(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 834, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (yamllint 1.2.1 (/usr/lib/python3/dist-packages), Requirement.parse('yamllint==1.10.0'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ansible/.ansible/tmp/ansible-tmp-1571664613.8057463-81203150607731/yamllint", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'yamllint==1.10.0' distribution was not found and is required by the application
а я что то упускаю при попытке запустить yamllint через script?
английским же по тёмному написано:
The 'yamllint==1.10.0' distribution was not found and is required by the application
Sergey
так что да, люто упускаешь.
Alex
тогда откуда он берет эту версию?
Alex
# pip3 list | grep yaml
yamllint (1.2.1)
Lamobot
Sergey
^^^ +++
Alex
требуется кем?
Alex
и почему тогда из командной строки работает с 1.2?
Alex
как бы
# cat /usr/bin/yamllint
#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'yamllint==1.2.1','console_scripts','yamllint'
__requires__ = 'yamllint==1.2.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('yamllint==1.2.1', 'console_scripts', 'yamllint')()
)
Alex
не по фотографии, а по конкретным ошибкам
Alex
ансибл у меня и так установлен через pip
$ pip3 list | grep ansible
ansible (2.7.13)
Sergey
а куда именно он установлен?
Sergey
И почему ты пропускаешь п.1?
Alex
не совсем понимаю как это связанно со странным поведением модуля script
Alex
ok, попробую с venv
Lamobot
Sergey
Если используется модуль скрипт - дык нужно, чтобы удалённо вся нужная машинерия была (тот же yamllint).
Timur
Alex
The local script at path will be transferred to the remote node and then executed.
🤦♂️
Alex
вопрос снят
Timur
Timur
И вообще непонятна задача. Зачем ансиблом вызывать yamllint?
Alex
помню вроде здесь советовали именно модуль script для запуска python скрипта
Alex
Alex
$ yamllint etc/system.yaml
etc/system.yaml
1:1 warning missing document start "---" (document-start)
10:1 error duplication of key "router" in mapping (key-duplicates)
чтобы отлавливать подобные ошибки (дубликаты и не только)
Alex
# cat /usr/bin/yamllint
#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'yamllint==1.2.1','console_scripts','yamllint'
__requires__ = 'yamllint==1.2.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('yamllint==1.2.1', 'console_scripts', 'yamllint')()
)
а что это?
Timur
Timur
Но так его обычно не вызывают
Timur
В любом случае, script копирует и запускает локальный скрипт
Timur
Если тебе нужно запустить удаленный - используй просто command
Alex
да, я уже понял
Alex
как то упустил момент про комирование локального скрипта
Lex
Ребят, привет. а есть кто пользуется AWX?
у меня структура проектов такова - роли лежат в одной репе, а варсы и плэйбуки лежат в другой репе.
можно ли в таком формате это заставить работать в AWX? с варсами понятно - их придется вытаскивать из репы и привязывать к хостам и группам. а вот как быть с ролями? Как его заставить искать роли в другом "project"?
Lex
сталкивался кто?
tutunak
Lex
мысль уловил...ушел пробовать
Radik
а в чем смысл по репам раскидывать?
Lex
обезличенная репа
Timur
Установка SAP Machine ннада?
Timur
https://sap.github.io/SapMachine/
Timur
Я про то, что тут новый релиз нашей роли вышел:
https://github.com/lean-delivery/ansible-role-java
Timur
Теперь поддерживает и установку SAP Machine
Александр
Чем shell отличается от command?
Timur
Т.е. в shell можно сделать, грубо говоря, echo 123 > test.log
Timur
А в command так не сделаешь
Александр
Aleksey
Anonymous
Подскажите пожалуйста: у меня есть хост, на который я хожу через другой jumphost.
Задачка следующая: выполнить template конфигурационного файла, используя некоторые факты с jumphost'a. Но при таком инвентори (ниже) - факты с jumphost'а просто не собираются. Можно как-то сделать так, чтобы все таки собрать факты с хоста "prod-tools-bastion" и использовать их на машине "jenkins"?
---
all:
vars:
ansible_user: ansible
tools:
hosts:
jenkins:
ansible_host: 10.9.141.9
vars:
bastion_server_addr: "{{ hostvars['prod-tools-bastion']['ansible_host'] }}"
bastion_servers:
hosts:
prod-tools-bastion:
ansible_host: 1.1.1.1
behind_bastion:
children:
tools:
vars:
ansible_ssh_common_args: |
-o ProxyCommand="ssh -W %h:%p -q {{ ansible_user }}@{{ bastion_server_addr }}"