Change dockerfiles and start scripts to install Net-SNMP, configure snmpd properly
and make sure it is started. This is needed for the SNMP tests (test_snm*) to run properly. Since we can't rely on systemd in Alpine we start snmpd from the startsystem-scripts.
This commit is contained in:
parent
7bdc5045b2
commit
5a09dcbf13
7 changed files with 53 additions and 3 deletions
|
|
@ -39,6 +39,9 @@ MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
# For clixon and cligen
|
# For clixon and cligen
|
||||||
RUN apk add --update git make build-base gcc flex bison curl-dev
|
RUN apk add --update git make build-base gcc flex bison curl-dev
|
||||||
|
|
||||||
|
# For netsnmp
|
||||||
|
RUN apk add --update net-snmp net-snmp-dev
|
||||||
|
|
||||||
WORKDIR /usr/local/share
|
WORKDIR /usr/local/share
|
||||||
|
|
||||||
# Checkout standard YANG models for tests (note >1G for full repo)
|
# Checkout standard YANG models for tests (note >1G for full repo)
|
||||||
|
|
@ -76,7 +79,7 @@ WORKDIR /clixon/clixon
|
||||||
COPY clixon .
|
COPY clixon .
|
||||||
|
|
||||||
# Configure, build and install clixon
|
# Configure, build and install clixon
|
||||||
RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --without-restconf --with-yang-standard-dir=/usr/local/share/yang/standard
|
RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --without-restconf --with-yang-standard-dir=/usr/local/share/yang/standard --enable-netsnmp --with-mib-generated-yang-dir=/usr/local/share/mib-yangs/
|
||||||
RUN make
|
RUN make
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
||||||
|
|
@ -103,6 +106,9 @@ WORKDIR /clixon
|
||||||
COPY startsystem.sh startsystem.sh
|
COPY startsystem.sh startsystem.sh
|
||||||
RUN install startsystem.sh /clixon/build/bin/
|
RUN install startsystem.sh /clixon/build/bin/
|
||||||
|
|
||||||
|
# Add our generated YANG files
|
||||||
|
RUN git clone https://github.com/clicon/mib-yangs.git /usr/local/share/mib-yangs
|
||||||
|
|
||||||
#
|
#
|
||||||
# Stage 2
|
# Stage 2
|
||||||
# The second step skips the development environment and builds a runtime system
|
# The second step skips the development environment and builds a runtime system
|
||||||
|
|
@ -112,6 +118,14 @@ MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
# For clixon and cligen
|
# For clixon and cligen
|
||||||
RUN apk add --update flex bison fcgi-dev
|
RUN apk add --update flex bison fcgi-dev
|
||||||
|
|
||||||
|
# For SNMP
|
||||||
|
RUN apk add --update net-snmp net-snmp-tools
|
||||||
|
|
||||||
|
# Some custom configuration for SNMP
|
||||||
|
RUN sed -i 's/#rocommunity public localhost/rocommunity public localhost/' /etc/snmp/snmpd.conf
|
||||||
|
RUN echo "agentXSocket unix:/var/run/snmp.sock" >> /etc/snmpd.conf
|
||||||
|
RUN echo "agentxperms 777 777" >> /etc/snmpd.conf
|
||||||
|
|
||||||
# Test-specific (for test scripts)
|
# Test-specific (for test scripts)
|
||||||
RUN apk add --update sudo curl procps grep make bash expect
|
RUN apk add --update sudo curl procps grep make bash expect
|
||||||
|
|
||||||
|
|
@ -120,6 +134,7 @@ RUN adduser -D -H clicon
|
||||||
|
|
||||||
COPY --from=0 /clixon/build/ /usr/local/
|
COPY --from=0 /clixon/build/ /usr/local/
|
||||||
COPY --from=0 /usr/local/share/yang/* /usr/local/share/yang/standard/
|
COPY --from=0 /usr/local/share/yang/* /usr/local/share/yang/standard/
|
||||||
|
COPY --from=0 /usr/local/share/mib-yangs/* /usr/local/share/mib-yangs/
|
||||||
|
|
||||||
# Log to stderr.
|
# Log to stderr.
|
||||||
CMD /usr/local/bin/startsystem.sh
|
CMD /usr/local/bin/startsystem.sh
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
# For clixon and cligen
|
# For clixon and cligen
|
||||||
RUN apk add --update git make build-base gcc flex bison fcgi-dev curl-dev
|
RUN apk add --update git make build-base gcc flex bison fcgi-dev curl-dev
|
||||||
|
|
||||||
|
# For netsnmp
|
||||||
|
RUN apk add --update net-snmp net-snmp-dev
|
||||||
|
|
||||||
# Checkut standard YANG models for tests (note >1G for full repo)
|
# Checkut standard YANG models for tests (note >1G for full repo)
|
||||||
WORKDIR /usr/local/share
|
WORKDIR /usr/local/share
|
||||||
RUN mkdir yang
|
RUN mkdir yang
|
||||||
|
|
@ -77,7 +80,7 @@ RUN adduser -D -H -G www-data www-data
|
||||||
RUN apk add --update nginx
|
RUN apk add --update nginx
|
||||||
|
|
||||||
# Configure, build and install clixon
|
# Configure, build and install clixon
|
||||||
RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --with-restconf=fcgi --with-yang-standard-dir=/usr/local/share/yang/standard
|
RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --with-restconf=fcgi --with-yang-standard-dir=/usr/local/share/yang/standard --enable-netsnmp --with-mib-generated-yang-dir=/usr/local/share/mib-yangs/
|
||||||
RUN make
|
RUN make
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
||||||
|
|
@ -104,6 +107,9 @@ WORKDIR /clixon
|
||||||
COPY startsystem_fcgi.sh startsystem.sh
|
COPY startsystem_fcgi.sh startsystem.sh
|
||||||
RUN install startsystem.sh /clixon/build/bin/
|
RUN install startsystem.sh /clixon/build/bin/
|
||||||
|
|
||||||
|
# Add our generated YANG files
|
||||||
|
RUN git clone https://github.com/clicon/mib-yangs.git /usr/local/share/mib-yangs
|
||||||
|
|
||||||
#
|
#
|
||||||
# Stage 2
|
# Stage 2
|
||||||
# The second step skips the development environment and builds a runtime system
|
# The second step skips the development environment and builds a runtime system
|
||||||
|
|
@ -113,6 +119,14 @@ MAINTAINER Olof Hagsand <olof@hagsand.se>
|
||||||
# For clixon and cligen
|
# For clixon and cligen
|
||||||
RUN apk add --update flex bison fcgi-dev
|
RUN apk add --update flex bison fcgi-dev
|
||||||
|
|
||||||
|
# For SNMP
|
||||||
|
RUN apk add --update net-snmp net-snmp-tools
|
||||||
|
|
||||||
|
# Some custom configuration for SNMP
|
||||||
|
RUN sed -i 's/#rocommunity public localhost/rocommunity public localhost/' /etc/snmp/snmpd.conf
|
||||||
|
RUN echo "agentXSocket unix:/var/run/snmp.sock" >> /etc/snmpd.conf
|
||||||
|
RUN echo "agentxperms 777 777" >> /etc/snmpd.conf
|
||||||
|
|
||||||
# Need to add www user manually, but group www-data already exists on Alpine
|
# Need to add www user manually, but group www-data already exists on Alpine
|
||||||
RUN adduser -D -H -G www-data www-data
|
RUN adduser -D -H -G www-data www-data
|
||||||
# nginx adds group www-data
|
# nginx adds group www-data
|
||||||
|
|
@ -131,6 +145,7 @@ RUN adduser www-data clicon
|
||||||
|
|
||||||
COPY --from=0 /clixon/build/ /usr/local/
|
COPY --from=0 /clixon/build/ /usr/local/
|
||||||
COPY --from=0 /usr/local/share/yang/* /usr/local/share/yang/standard/
|
COPY --from=0 /usr/local/share/yang/* /usr/local/share/yang/standard/
|
||||||
|
COPY --from=0 /usr/local/share/mib-yangs/* /usr/local/share/mib-yangs/
|
||||||
|
|
||||||
# Manually created
|
# Manually created
|
||||||
RUN mkdir /www-data
|
RUN mkdir /www-data
|
||||||
|
|
|
||||||
|
|
@ -145,6 +145,11 @@ RUN apk add --update sudo curl procps grep make bash expect
|
||||||
# For SNMP
|
# For SNMP
|
||||||
RUN apk add --update net-snmp net-snmp-tools
|
RUN apk add --update net-snmp net-snmp-tools
|
||||||
|
|
||||||
|
# Some custom configuration for SNMP
|
||||||
|
RUN sed -i 's/#rocommunity public localhost/rocommunity public localhost/' /etc/snmp/snmpd.conf
|
||||||
|
RUN echo "agentXSocket unix:/var/run/snmp.sock" >> /etc/snmpd.conf
|
||||||
|
RUN echo "agentxperms 777 777" >> /etc/snmpd.conf
|
||||||
|
|
||||||
# Expose https port for restconf
|
# Expose https port for restconf
|
||||||
EXPOSE 80/tcp
|
EXPOSE 80/tcp
|
||||||
EXPOSE 443/tcp
|
EXPOSE 443/tcp
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,10 @@ chmod 775 /usr/local/bin/test/site.sh
|
||||||
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
||||||
>&2 echo "clixon_backend started"
|
>&2 echo "clixon_backend started"
|
||||||
|
|
||||||
|
# Start snmpd, we need this for the SNMP tests and the app clixon_snmp. Log to stdout, then we can
|
||||||
|
# use Docker logs to see what's happening.
|
||||||
|
snmpd -Lo -p /run/snmpd.pid
|
||||||
|
|
||||||
# Alt: let backend be in foreground, but test scripts may
|
# Alt: let backend be in foreground, but test scripts may
|
||||||
# want to restart backend
|
# want to restart backend
|
||||||
/bin/sleep 100000000
|
/bin/sleep 100000000
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,10 @@ chmod g+w /www-data/fastcgi_restconf.sock
|
||||||
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
||||||
>&2 echo "clixon_backend started"
|
>&2 echo "clixon_backend started"
|
||||||
|
|
||||||
|
# Start snmpd, we need this for the SNMP tests and the app clixon_snmp. Log to stdout, then we can
|
||||||
|
# use Docker logs to see what's happening.
|
||||||
|
snmpd -Lo -p /run/snmpd.pid
|
||||||
|
|
||||||
# Alt: let backend be in foreground, but test scripts may
|
# Alt: let backend be in foreground, but test scripts may
|
||||||
# want to restart backend
|
# want to restart backend
|
||||||
/bin/sleep 100000000
|
/bin/sleep 100000000
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,10 @@ openssl req -x509 -config ./ca.cnf -nodes -newkey rsa:4096 -keyout /etc/ssl/priv
|
||||||
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
/usr/local/sbin/clixon_backend -D $DBG -s running -l e # logs on docker logs
|
||||||
>&2 echo "clixon_backend started"
|
>&2 echo "clixon_backend started"
|
||||||
|
|
||||||
|
# Start snmpd, we need this for the SNMP tests and the app clixon_snmp. Log to stdout, then we can
|
||||||
|
# use Docker logs to see what's happening.
|
||||||
|
snmpd -Lo -p /run/snmpd.pid
|
||||||
|
|
||||||
# Alt: let backend be in foreground, but test scripts may
|
# Alt: let backend be in foreground, but test scripts may
|
||||||
# want to restart backend
|
# want to restart backend
|
||||||
/bin/sleep 100000000
|
/bin/sleep 100000000
|
||||||
|
|
|
||||||
|
|
@ -210,7 +210,7 @@ fi
|
||||||
|
|
||||||
if $SNMPCHECK; then
|
if $SNMPCHECK; then
|
||||||
if [ "${WITH_NETSNMP}" == "yes" ]; then
|
if [ "${WITH_NETSNMP}" == "yes" ]; then
|
||||||
if [ ! -f /var/run/snmpd.pid ]; then
|
if [ ! -f /run/snmpd.pid ]; then
|
||||||
echo -e "\e[31m\nenable-netsnmp set but snmpd not running, start with:"
|
echo -e "\e[31m\nenable-netsnmp set but snmpd not running, start with:"
|
||||||
echo "systemctl start snmpd"
|
echo "systemctl start snmpd"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -221,6 +221,9 @@ if $SNMPCHECK; then
|
||||||
echo " rwcommunity public localhost"
|
echo " rwcommunity public localhost"
|
||||||
echo " agentXSocket unix:/var/run/snmp.sock"
|
echo " agentXSocket unix:/var/run/snmp.sock"
|
||||||
echo " agentxperms 777 777"
|
echo " agentxperms 777 777"
|
||||||
|
echo ""
|
||||||
|
echo "If you don't rely on systemd you can configure the lines above"
|
||||||
|
echo "and start snmpd manually with 'snmpd -Lo -p /var/run/snmpd.pid'."
|
||||||
echo -e "\e[0m"
|
echo -e "\e[0m"
|
||||||
exit -1
|
exit -1
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue