从git源码安装zabbix-agent

从网上随便找了几个image,都是从svn下载的代码,根本跑不了,于是自己重新做了个,从git上拿的源码,只是build出来的image有点大,有时间再优化了

Dockerfile

FROM centos:centos7
MAINTAINER Ryan sun.ryan@acxiom.com

ENV ZABBIX_VERSION=3.0.1 \
    ZABBIX_SERVER=127.0.0.1 \
	ZABBIX_SOURCE=zabbix-agent.${ZABBIX_VERSION}.tar.gz \
    HOSTNAME=zabbix.agent \
    HOST_METADATA=zabbix.agent \
    CONFIG_FILE=/usr/local/etc/zabbix_agentd.conf

RUN \
  yum clean all && yum makecache && \
  yum install --nogpgcheck -y automake gcc make iproute

ADD ./${ZABBIX_SOURCE} /usr/local/src/

WORKDIR /usr/local/src

RUN \
  cd ./zabbix && \
  ./bootstrap.sh && \
  ./configure --enable-agent && \
  make install

RUN \
  rpm -e --nodeps make gcc && \
  yum remove -y automake && \
  useradd -G wheel zabbix && \
  rm -rf  /usr/local/src/zabbix && \
  yum clean all

COPY ./bootstrap.sh /

RUN \
    chown -R zabbix:wheel /usr/local/etc/

USER zabbix

EXPOSE 10050

ENTRYPOINT ["/bootstrap.sh"]

bootstrap.sh

#!/bin/sh
set -eu
export TERM=xterm

# Bash Colors
red=`tput setaf 1`
green=`tput setaf 2`
yellow=`tput setaf 3`
white=`tput setaf 7`
bold=`tput bold`
reset=`tput sgr0`
separator=$(echo && printf '=%.0s' {1..100} && echo)
# Logging Finctions
log() {
  if [[ "$@" ]]; then echo "${bold}${green}[LOG `date +'%T'`]${reset} $@"; else echo; fi
}

### Update config file based on environment variables
update_config() {
    log "Updating configuration file..."
    if [ ! -z "$ZABBIX_SERVER" ]; then
      log "Changing Zabbix Server IP to ${bold}${white}${ZABBIX_SERVER}${reset}"
      sed -i 's/^[# ]*Server=.*$/Server='$ZABBIX_SERVER'/g' ${TARGET_CONFIG_FILE}
    fi
    if [ ! -z "$HOSTNAME" ]; then
      log "Changing Zabbix Hostname to ${bold}${white}${HOSTNAME}${reset}."
      sed -i 's/^[# ]*Hostname=.*$/Hostname='$HOSTNAME'/g' ${TARGET_CONFIG_FILE}
    fi
    if [ ! -z "$HOST_METADATA" ]; then
      log "Changing Zabbix Host Metadata to ${bold}${white}${HOST_METADATA}${reset}."
      sed -i 's/^[# ]*HostMetadata=.*$/HostMetadata='$HOST_METADATA'/g' ${TARGET_CONFIG_FILE}
    fi
    log "Config updated"
}
print_config() {
  log "Current Zabbix Agent config:"
  printf '=%.0s' {1..100} && echo
  cat ${TARGET_CONFIG_FILE}
  echo ""
  printf '=%.0s' {1..100} && echo
}
start() {
    log "Starting Zabbix Agent using configuration file: ${TARGET_CONFIG_FILE}"
    print_config
    zabbix_agentd -f -c ${TARGET_CONFIG_FILE}
}

# Use the default config file if not set by an environment variable
if [ -z "$CONFIG_FILE" ]; then
  SRC_CONFIG_FILE="/usr/local/etc/zabbix_agentd.conf"
else
  SRC_CONFIG_FILE="$CONFIG_FILE"
fi

# This is the actual config file used, containing changes implied by environment variables
TARGET_CONFIG_FILE=$(mktemp)
log "Loading config: ${SRC_CONFIG_FILE}"
cp "$SRC_CONFIG_FILE" "$TARGET_CONFIG_FILE"

update_config
start

  

  

posted @ 2017-12-18 17:38  平静缓和用胸音说爱  阅读(419)  评论(0编辑  收藏  举报