Многоразовые приложения Django предоставление Ansible

#python #django #vagrant #ansible

#python #django #бродяга #ansible

Вопрос:

Я давний разработчик Django и только начал использовать Ansible после использования Vagrant в течение последних 18 месяцев. Исторически я создавал единую виртуальную машину для разработки всех своих проектов и символически связывал многоразовые приложения Django (пакеты Python) Я создаю каталог пакетов сайта.

У меня есть рабочий блок разработки для моего последнего проекта Django, но я не могу вносить изменения в свои собственные многоразовые приложения без необходимости копировать эти изменения обратно в репозиторий Git. Вот мой идеальный сценарий:

  1. Я проверяю все пакеты, которые мне нужно разработать, как подмодули Git на сайте, над которым я работаю
  2. У меня есть какой-то способ (символическая ссылка или лучший метод), чтобы сообщить Ansible установить окно и установить мои пакеты из этих подмодулей Git
  3. Я запускаю vagrant up или vagrant provision
  4. Он гласит 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.