2016-12-16 48 views
0

我正在嘗試使用puppet安裝ActiveMQ。這個軟件包來自焦油球。我如何確保每個文件都從puppet推送(遞歸),並確保服務正在運行。因爲它在'bin'目錄中有自己的可執行文件。使用傀儡從tarball安裝軟件包

+0

閱讀有關'file','exec'和'service'資源的文檔。 –

回答

0

我會問,從Tar球安裝activemq是必不可少的?它可能更容易作爲一個包進行管理,例如yum或apt安裝。

管理tarball總是會變得更加困難,尤其是在更新版本或處理下載失敗等問題時。

我會建議使用現有的ActiveMQ模塊從鐵匠鋪:

https://forge.puppet.com/modules?utf-8=%E2%9C%93&sort=latest_release&q=activemq

給你的它可能如何看一個總體思路,這裏的一些基本代碼可以工作:

$activemq_home = "/usr/local/activemq" 

    package{"java-1.6.0-openjdk": 
    ensure => installed; 
    } 

    $activemq_version = "5.4.3" 

    user {"activemq": 
    ensure => present, 
    home => $activemq_home, 
    managehome => false, 
    shell => "/bin/sh", 
    } 

    group {"activemq": 
    ensure => present, 
    require => User["activemq"], 
    } 

    Exec{path => ["/usr/local/bin","/usr/bin","/bin"]} 

    $puppet_cache = "/usr/local/src/gitorious" 

    file {$puppet_cache: 
    ensure => directory, 
    owner => "root", 
    group => "root", 
    } 

    exec { 'download_amq_src': 
    unless => '/usr/bin/test -e ${activemq_home}/apache-activemq-${amq_version}-bin.tar.gz', 
    command => 'cd /tmp && /usr/bin/wget http://archive.apache.org/dist/activemq/apache-activemq/${amq_version}/apache-activemq-${amq_version}-bin.tar.gz',  
    require => File[$activemq_home], 
} 

# Unpack the archive in the amq user directory 
exec { 'unpack_amq_src': 
    onlyif => '/usr/bin/test -d ${activemq_home}/apache-activemq-${amq_version}-bin', 
    command => 'cd $amq_home && /bin/tar -xf /tmp/apache-activemq-${amq_version}-bin.tar.gz', 
    require => Exec['download_amq'], 
} 

    file {"/etc/init.d/activemq": 
    ensure => file, 
    mode => 755, 
    owner => "root", 
    group => "root", 
    content => template("activemq/etc/init.d/activemq.erb"), 
    require => File["/etc/activemq.conf"], 
    } 

    service{"activemq": 
    enable => true, 
    ensure => running, 
    require => File["/etc/init.d/activemq"], 
    } 

    file { "activemq.xml": 
    path => "$activemq_home/conf/activemq.xml", 
    ensure => present, 
    mode => 644, 
    owner => "activemq", 
    group => "activemq", 
    content => template("activemq/activemq.xml.erb"), 
    require => File["/etc/init.d/activemq"], 
    notify => Service["activemq"], 
    } 
+0

非常感謝,這真的很有幫助。 :) – Akplive139