diff --git a/docker/main/Dockerfile b/docker/main/Dockerfile index ec17437e..f9da28f2 100644 --- a/docker/main/Dockerfile +++ b/docker/main/Dockerfile @@ -39,6 +39,9 @@ MAINTAINER Olof Hagsand # For clixon and cligen 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 # Checkout standard YANG models for tests (note >1G for full repo) @@ -76,7 +79,7 @@ WORKDIR /clixon/clixon COPY 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 install @@ -103,6 +106,9 @@ WORKDIR /clixon COPY startsystem.sh startsystem.sh 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 # The second step skips the development environment and builds a runtime system @@ -112,6 +118,14 @@ MAINTAINER Olof Hagsand # For clixon and cligen 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) 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 /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. CMD /usr/local/bin/startsystem.sh diff --git a/docker/main/Dockerfile.fcgi b/docker/main/Dockerfile.fcgi index 704d7b28..06014dda 100644 --- a/docker/main/Dockerfile.fcgi +++ b/docker/main/Dockerfile.fcgi @@ -38,6 +38,9 @@ MAINTAINER Olof Hagsand # For clixon and cligen 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) WORKDIR /usr/local/share RUN mkdir yang @@ -77,7 +80,7 @@ RUN adduser -D -H -G www-data www-data RUN apk add --update nginx # 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 install @@ -104,6 +107,9 @@ WORKDIR /clixon COPY startsystem_fcgi.sh startsystem.sh 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 # The second step skips the development environment and builds a runtime system @@ -113,6 +119,14 @@ MAINTAINER Olof Hagsand # For clixon and cligen 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 RUN adduser -D -H -G www-data 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 /usr/local/share/yang/* /usr/local/share/yang/standard/ +COPY --from=0 /usr/local/share/mib-yangs/* /usr/local/share/mib-yangs/ # Manually created RUN mkdir /www-data diff --git a/docker/main/Dockerfile.native b/docker/main/Dockerfile.native index 40d0de22..1e77913f 100644 --- a/docker/main/Dockerfile.native +++ b/docker/main/Dockerfile.native @@ -145,6 +145,11 @@ RUN apk add --update sudo curl procps grep make bash expect # 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 + # Expose https port for restconf EXPOSE 80/tcp EXPOSE 443/tcp diff --git a/docker/main/startsystem.sh b/docker/main/startsystem.sh index 6a665851..1781620a 100755 --- a/docker/main/startsystem.sh +++ b/docker/main/startsystem.sh @@ -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 >&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 # want to restart backend /bin/sleep 100000000 diff --git a/docker/main/startsystem_fcgi.sh b/docker/main/startsystem_fcgi.sh index 2f4ebe83..1bfa9268 100755 --- a/docker/main/startsystem_fcgi.sh +++ b/docker/main/startsystem_fcgi.sh @@ -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 >&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 # want to restart backend /bin/sleep 100000000 diff --git a/docker/main/startsystem_native.sh b/docker/main/startsystem_native.sh index 72287a90..c60a837e 100755 --- a/docker/main/startsystem_native.sh +++ b/docker/main/startsystem_native.sh @@ -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 >&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 # want to restart backend /bin/sleep 100000000 diff --git a/test/lib.sh b/test/lib.sh index 10cd8e7c..65eea0db 100755 --- a/test/lib.sh +++ b/test/lib.sh @@ -210,7 +210,7 @@ fi if $SNMPCHECK; 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 "systemctl start snmpd" echo "" @@ -221,6 +221,9 @@ if $SNMPCHECK; then echo " rwcommunity public localhost" echo " agentXSocket unix:/var/run/snmp.sock" 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" exit -1 fi