根据事实通过木偶启动应用程序

时间:2018-04-12 12:15:16

标签: java puppet

我参与了 init.pp ,它启动了我的应用程序:

systemd::service {'app':
    user => 'java',
    exec => "${java_home}/bin/java \
    -server \
    '-XX:OnOutOfMemoryError=\\'kill -9 %%p\\'' \
    -Dmw.config=/etc/app/app.config \
    -cp /usr/share/app/app.jar ru.app.main.Main app",
}

较新版本的 app.jar 启动方式不同。有一种方法,停止节点上的木偶,从领事注销节点,用新的 init.pp 启动木偶,并将该节点放回领事。但那感觉不对。

有没有办法在那里放一些" if" ,这样我就可以根据我的应用来回平滑过渡版本或任何其他领域?

1 个答案:

答案 0 :(得分:1)

找到它

if $app_v2 == 'true' {
        systemd::service {'app':
            user => 'java',
            exec => "${java_home}/bin/java \
            -server \
            '-XX:OnOutOfMemoryError=\\'kill -9 %%p\\'' \
            -Dmw.config=/etc/app/app_new.config \
            -cp /usr/share/app/app.jar ru.app.main.App app",
        }
    } else {
        systemd::service {'app':
            user => 'java',
            exec => "${java_home}/bin/java \
            -server \
            '-XX:OnOutOfMemoryError=\\'kill -9 %%p\\'' \
            -Dmw.config=/etc/app/app.config \
            -cp /usr/share/app/app.jar ru.app.main.Main app",
        }
    }

并获取app_v2标志,添加到/lib/facter/app_v2.rb

require 'facter'

Facter.add(:app_v2) do
  confine :kernel => :Linux
  setcode do
    result = false
    if Facter::Core::Execution.exec('dpkg -l | grep app|awk \'{print$3}\'| cut -c1') == '2'
      result = true
    end
    result
  end
end