2013-06-19 6 views
2

Я часто замечаю fabfiles в различных проектах, имеющий функцию, как показано нижеИменование операции ткани

  • install_ngnix
  • setup_ngnix
  • deploy_ngnix

Моя интерпретация/имена предпочтения INSTALL_ * для установки пакета задач но setup_ * и deploy_ * звучит очень похоже, возможно, перекрываясь.

Интересно, что принято и лучше? И что может означать для вас вышеупомянутые имена?

ответ

1

Я не знаю, есть ли принята практики именования таких вещей, но вот то, что разные имена означают для меня в случае, если это любая помощь:

  • install_nginx: Это предполагает, что функция фактически принимает пакет nginx из внешнего репозитория и устанавливает его на сервер.
  • setup_nginx: Это говорит о том, что nginx уже установлен, и вы настраиваете его для своих конкретных целей, например, развертываете свои собственные файлы конфигурации nginx.
  • deploy_nginx: Это говорит о том, что nginx - это программный пакет, который у вас есть, и вы развертываете его на сервере (обратите внимание на тонкую разницу при установке, где установка предполагает, что пакет программного обеспечения управляется кем-то другим).

Если честно, я думаю, что любое из этих названий будет работать, но должно сказать, что я восхищаюсь вашим акцентом на попытке получить ваше место для именования.

+0

Я согласен с вашей интерпретацией установки и настройки. Для меня разверните больше звуков, например, сделав nginx готовым к настройке, которая также включает вызов install() и setup(). – Shekhar

1

Вот моя проницательность (я использую fabric практически во всех своих проектах, но я не настолько опытен в этом).

Как только вы понимаете, что ваш fabfile слишком большой и не очень читаемый с того, что install_nginx, restart_apache, backup_db, create_virtualenv, configure_permissions задач - вы должны рассмотреть возможность сделать это лучше.

  1. fabfile пакет вместо одного скрипта.
  2. определяют подмодуль для каждого компонента, с которым вам приходится иметь дело, например. database, nginx, virtualenv и т. Д.
  3. в каждом из этих подмодулей определяют связанные задачи. Например. для nginx подмодуль в вашем случае это может быть install, setup, deploy.
  4. в __init__.py определяет задачи высокого уровня, такие как build, deploy, restart, которые используют подзадачи и подзадача для других компонентов.

Примерная структура fabfile пакет:

fabfile 
├── __init__.py 
├── db.py 
└── nginx.py 

Тогда выход fab --list будет чем-л так:

deploy 
build 
setup 
db.backup 
nginx.setup 
nginx.install 
nginx.deploy 

Также см соответствующую documentation.

Надеюсь, что это поможет.

Смежные вопросы