Menu

ActiveMQ Server Install

module.exports = header: 'ActiveMQ Server Install', handler: ->
  {iptables} = @config
  {activemq} = @config.ryba
  tmp = "/tmp_#{Date.now()}"
  md5 = true

IPTables

ServicePortProtoParameter
ActiveMQ JMS61616tcp-
ActiveMQ UI8161tcp-

IPTables rules are only inserted if the parameter "iptables.action" is set to "start" (default value).

  @tools.iptables
    header: 'IPTables'
    rules: [
      { chain: 'INPUT', jump: 'ACCEPT', dport: activemq.server.port.jms, protocol: 'tcp', state: 'NEW', comment: "ActiveMQ JMS" }
      { chain: 'INPUT', jump: 'ACCEPT', dport: activemq.server.port.ui, protocol: 'tcp', state: 'NEW', comment: "ActiveMQ UI" }
    ]
    if: iptables.action is 'start'

Identities

Create user and groups for solr user.

  @system.mkdir
    target: activemq.user.home
    uid: activemq.user.name
    gid: activemq.group.name
  @system.group header: 'Group', activemq.group
  @system.user header: 'User', activemq.user

Startup Script

Write startup script to /etc/init.d/activemq

  @service.init
    header: 'Startup Script'
    source: "#{__dirname}/resources/activemq.j2"
    local: true
    target: "/etc/init.d/activemq"
    context: container: activemq.server.container_name
  @file
    header: 'Configuration'
    content: builder.create(activemq.conf, headless: true).end(pretty: true)
    target: "#{activemq.conf_dir}/activemq.xml"
    eof: true
  @file
    header: 'Log4J properties'
    target: "#{activemq.conf_dir}/log4j.properties"
    source: "#{__dirname}/resources/log4j.properties"
    local: true

Layout directories

  @call header: 'Layout', ->
    @system.mkdir
      target: activemq.log_dir
      uid: activemq.user.name
      gid: activemq.group.name
      mode: 0o777
    @system.mkdir
      target: activemq.data_dir
      uid: activemq.user.name
      gid: activemq.group.name
      mode: 0o777

Package

Install the ActiveMQ server.

  @call header: 'Download Container', ->
    exists = false
    @docker.checksum
      image: 'activemq'
      tag: activemq.version
    , (err, status, checksum) ->
      throw err if err
      exists = checksum
    @file.download
      unless: -> exists
      binary: true
      md5: true
      source: "#{@config.nikita.cache_dir}/activemq.tar"
      target: "#{tmp}/activemq.tar"
    @docker.load
      header: 'Load Container'
      unless: -> exists
      source: "#{tmp}/activemq.tar"
      docker: @config.docker

Run Container

Run the ActiveMQ server container

  @docker.service
    machine: @config.nikita.machine
    header: 'Run ActiveMQ Container'
    docker: @config.docker
    force: -> @status(-1)
    image: "rmohr/activemq:#{activemq.version}"
    env: [
    ]
    volume: [
      "#{activemq.conf_dir}/activemq.xml:/opt/apache-activemq-#{activemq.version}/conf/activemq.xml:ro"
      "#{activemq.conf_dir}/log4j.properties:/opt/apache-activemq-#{activemq.version}/conf/log4j.properties:ro"
      "#{activemq.log_dir}:/opt/apache-activemq-#{activemq.version}/log"
      "#{activemq.data_dir}:/opt/apache-activemq-#{activemq.version}/data"
    ]
    port: [
      "#{activemq.server.port.jms}:61616"
      "#{activemq.server.port.ui}:8161"
    ]
    net: 'host'
    # rm: true
    service: true
    name: activemq.server.container_name

Dependencies

builder = require 'xmlbuilder'