#python #django #vagrant #ansible
#python #django #бродяга #ansible
Вопрос:
Я давний разработчик Django и только начал использовать Ansible после использования Vagrant в течение последних 18 месяцев. Исторически я создавал единую виртуальную машину для разработки всех своих проектов и символически связывал многоразовые приложения Django (пакеты Python) Я создаю каталог пакетов сайта.
У меня есть рабочий блок разработки для моего последнего проекта Django, но я не могу вносить изменения в свои собственные многоразовые приложения без необходимости копировать эти изменения обратно в репозиторий Git. Вот мой идеальный сценарий:
- Я проверяю все пакеты, которые мне нужно разработать, как подмодули Git на сайте, над которым я работаю
- У меня есть какой-то способ (символическая ссылка или лучший метод), чтобы сообщить Ansible установить окно и установить мои пакеты из этих подмодулей Git
- Я запускаю
vagrant up
илиvagrant provision
- Он гласит requirements.txt и устанавливает остальные пакеты (такие, как South, Pillow и т.д.), Но пропускает мой набор инструментов, потому что знает, что они уже установлены
Я надеюсь, что это имеет смысл. В принципе, представьте, что я разрабатываю Django. Как мне сообщить Vagrant (я полагаю, через Ansible), чтобы он нашел мою локальную копию Django, а не ту, что из PyPI?
В настоящее время единственный способ, которым я могу это сделать, — создать отдельные символические ссылки для каждого из тех пакетов, которые я разрабатываю, но я уверен, что есть более разумная модель.
Спасибо!
Ответ №1:
Вероятно, вам следует подумать об этом немного по-другому. Вы создаете файл Vagrant, в котором Ansible указывается в качестве поставщика. В этом файле Vagrant вы также указываете, какой сборник пьес использовать для вашей vagrant provision
части.
Если ваши плейбуки написаны идемпотентным способом, их многократный запуск приведет к пропуску шагов, которые уже соответствуют желаемому состоянию. Вы также должны подумать о том, как должно выглядеть желаемое конечное состояние виртуальной машины, и написать учебные пособия для достижения этой цели. Если я чего-то не понимаю, все ваши действия в playbook должны происходить внутри виртуальной машины, а не непосредственно на вашем локальном компьютере.
Комментарии:
1. Спасибо @Mxx, но я, возможно, неправильно объяснил, что мне нужно.
2. Возможно, так. Попробуйте отредактировать свой вопрос, чтобы уточнить, о чем вы просите. 🙁
3. У меня есть веб-сайт, написанный на Django. Я разрабатываю этот сайт, разворачивая виртуальную машину, подготавливая ее с помощью Ansible и используя
manage.py runserver
. Я написал пакет Python, который добавляет блог на сайт Django, и мне нужно внести в него некоторые изменения. В настоящее время этот модуль blog устанавливается из индекса упаковки Python, и любые изменения, которые я внесу, а) не будут изменены и б) исчезнут, если я уничтожу поле. Итак, я спрашиваю, каков наилучший способ разработки моего модуля блога во время работы на виртуальной машине? Спасибо!4. кстати, я не собирался просто говорить «Спасибо, но нет, спасибо». Думаю, я нажал return to много раз, и комментарий был отправлен, поэтому я подумал, что лучше начать новый, а не редактировать старый. Я не просто был груб; Я ценю вашу помощь! 🙂
5. Вы должны отредактировать свой исходный вопрос с этими разъяснениями, чтобы в случае, если мой ответ будет удален или появится лучший, он был более организованным. и не добавляйте «спасибо» в свой вопрос, он не нужен на сайтах SE.