2013-06-19 25 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_nginxrestart_apachebackup_dbcreate_virtualenvconfigure_permissions任務沒有真正可讀 - 你應該考慮把它更好。

  1. 使用fabfile包而不是單個腳本。
  2. 爲每個必須處理的組件定義一個子模塊,例如, database,nginx,virtualenv
  3. 在每個這些子模塊中定義相關任務。例如。對於nginx子模塊,您的情況可能是installsetup,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

希望有所幫助。