2

我经常注意到不同项目中的 fabfiles 具有如下功能

  • install_ngnix
  • setup_ngnix
  • deploy_ngnix

对于包安装任务,我的解释/命名偏好是 install_*,但 setup_* 和 deploy_* 听起来非常相似,可能有重叠。

我想知道什么是普遍接受和更好的做法?上面的名字对你意味着什么?

4

2 回答 2

1

这是我的见解(我fabric几乎在所有项目中都使用过,但我没有那么经验丰富)。

一旦你意识到你的, , , ,任务fabfile太大并且无法真正阅读- 你应该考虑让它变得更好。install_nginxrestart_apachebackup_dbcreate_virtualenvconfigure_permissions

  1. 使用fabfile包而不是单个脚本。
  2. 为您必须处理的每个组件定义一个子模块,例如database,nginxvirtualenv
  3. 在每个子模块中定义相关的任务。例如,对于nginx您的子模块,它可能是install, setup, deploy.
  4. __init__.py定义高级任务(如builddeploy、 )restart中使用和调用其他组件的子任务。

示例fabfile包结构:

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

然后的输出fab --list将是这样的:

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

另请参阅相关文档

希望有帮助。

于 2013-06-19T08:07:36.983 回答
1

我不知道是否有任何公认的做法来命名这些东西,但如果这有任何帮助,以下是不同名称对我的意义:

  • install_nginx:这表明该函数实际上是从外部存储库中获取 nginx 包并将其安装到服务器上。
  • setup_nginx:这表明 nginx 已经安装,并且您正在为您的特定目的进行设置,例如部署您自己的 nginx 配置文件。
  • deploy_nginx:这表明 nginx 是您拥有的软件包,并且您正在将其部署到服务器(请注意安装的细微差别,其中 install 表示由其他人管理的软件包)。

老实说,我认为这两个名字中的任何一个都可以,但必须说我很佩服你专注于试图让你的命名位置。

于 2013-06-19T08:01:51.607 回答