2015-09-25 23 views
0

我們有一個在Ubuntu上運行的java web應用程序(war),這對於a)安裝程序和b)安裝更新非常耗時。我們想將它自動化,但是我們不知道rpm包能做什麼和配置工具如puppet/chef/salt等可以/應該做什麼之間的界限。我們沒有資源去嘗試一切。rpm/deb或puppet/chef/salt - 從哪裏開始爲應用程序安裝腳本?

有兩臺服務器要配置一次 - 一個用mysql,另一個用tomcat & java。每個都需要編輯配置文件(my.cnf,server.xml)以及其他安裝的東西(如sendmail),爲我們的應用程序創建一個用戶,在〜/ .grails中添加一個配置文件以及特定於環境的設置。據推測,這隻能通過木偶或手工完成,而不能使用rpm腳本。其次,我們的應用程序有許多步驟可以完成。我們即將嘗試學習&使用rpm,但我們不確定這是否是正確的方法。

這是我們做什麼來安裝我們的應用程序:

  1. wget的liquibase並在我們的系統中的用戶主目錄解壓。
  2. 複製我們的戰爭和liquibase文件焦油。
  3. 創建一個腳本來針對mysql服務器運行liquibase,並用該環境使用的任何內容替換IP/DB名稱。
  4. stop tomcat。
  5. 運行腳本以更新數據庫模式。
  6. 將戰爭放入webapps目錄。
  7. 啓動tomcat。
  8. 檢查日誌文件是否有錯誤。

問題是我們不知道如何獲得rpm知道像mysql服務器ip地址這樣的東西,除非應該使用環境變量?或者我們不應該使用rmp,只是使用puppet來做所有事情?

的問題是,究竟是爲了什麼應該RPM做的方針,又該外面做,在

一個方面。最初的服務器配置有諸如mysl,tomcat和系統用戶之類的東西,以及

b。安裝更新到我們的應用程序(這通常只是一個新的戰爭和一個新的liquibase更新日誌,必須執行),但偶爾會需要更改配置文件。

兩者都可以移動文件,並運行腳本。

我們的應用程序沒有源代碼編譯,它是獨立於任何架構的(只需要JAVA)

+0

這是幾個問題 - 分離它會得到更多有用的答案。 –

回答

1

鑑於你的情況,我不相信通過RPM所做的一切,要走的路。 當然,您可以使用它來部署應用程序二進制文件(現在很容易打包東西,如果您不知道它,請查看FPM https://github.com/jordansissel/fpm)。 但最重要的是,您需要一個配置管理系統,用於更改文件中的配置並在文件發生更改時(如重新啓動服務或自定義命令)更改命令。

我是一個傀儡用戶,但我認識到,在像您這樣的情況下,爲2臺服務器啓動並運行基礎架構(對於廚師和鹽來說也是如此)有點矯枉過正。

你可以看看是不是(http://docs.ansible.com)。它是一種編排工具,可以安裝軟件包,管理配置文件和執行命令。最重要的是:它不需要任何基礎設施,您可以通過ssh從您的工作站/筆記本電腦運行它。 它非常強大,易於入門。

2

在RPM(或DEB)應該去:放置在正確的位置

其他一切都應該由其他工具(手動/廚師/ ansible/puppet)完成。例如:

  • 啓動和實現服務的
  • 配置的應用(甚至升級CONFIGS的)
  • 創建/升級數據庫架構(它可以駐留不同的機器上)
  • 檢查日誌文件中的錯誤
+0

這很清楚,正是我在找的,非常感謝 –

相關問題