1 FROM ubuntu:18.04 AS builder
3 LABEL maintainer="alexandru.stancu@highstreet-technologies.com"
6 apt-get update && apt-get install -y \
28 libcurl4-openssl-dev \
36 adduser --system netconf && \
37 echo "netconf:netconf" | chpasswd
39 # generate ssh keys for netconf user
42 mkdir -p /home/netconf/.ssh && \
44 ssh-keygen -t rsa -P '' -f /home/netconf/.ssh/id_dsa && \
45 cat /home/netconf/.ssh/id_dsa.pub > /home/netconf/.ssh/authorized_keys
46 #echo "Host *\n StrictHostKeyChecking accept-new" >> /home/netconf/.ssh/config
49 echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
50 mkdir -p /root/.ssh && \
51 cat /home/netconf/.ssh/id_dsa.pub > /root/.ssh/authorized_keys
53 # use /opt/dev as working directory
59 git clone https://github.com/Melacon/cJSON.git && \
60 cd cJSON && mkdir build && cd build && \
61 cmake .. -DENABLE_CJSON_UTILS=On -DENABLE_CJSON_TEST=Off -DCMAKE_INSTALL_PREFIX=/usr .. && \
68 git clone https://github.com/Melacon/libyang.git && \
69 cd libyang && mkdir build && cd build && \
70 cmake -DCMAKE_BUILD_TYPE:String="Release" -DENABLE_BUILD_TESTS=OFF .. && \
77 git clone https://github.com/Melacon/sysrepo.git && \
78 sed -i 's/#define MAX_BLOCKS_AVAIL_FOR_ALLOC 3/#define MAX_BLOCKS_AVAIL_FOR_ALLOC 6/g' ./sysrepo/src/common/sr_mem_mgmt.h && \
79 cd sysrepo && mkdir build && cd build && \
80 cmake -DCMAKE_BUILD_TYPE:String="Release" -DENABLE_TESTS=OFF -DREPOSITORY_LOC:PATH=/etc/sysrepo -DREQUEST_TIMEOUT=60 -DOPER_DATA_PROVIDE_TIMEOUT=60 .. && \
87 git clone https://github.com/Melacon/libnetconf2.git && \
88 cd libnetconf2 && mkdir build && cd build && \
89 cmake -DCMAKE_BUILD_TYPE:String="Release" -DENABLE_BUILD_TESTS=OFF .. && \
96 git clone https://github.com/Melacon/Netopeer2.git && \
98 cd keystored && mkdir build && cd build && \
99 cmake -DCMAKE_BUILD_TYPE:String="Release" -DKEYSTORED_KEYS_DIR=/home/netconf/.ssh .. && \
106 cd /opt/dev/Netopeer2/server && mkdir build && cd build && \
107 cmake -DCMAKE_BUILD_TYPE:String="Release" .. && \
110 cd ../../cli && mkdir build && cd build && \
111 cmake -DCMAKE_BUILD_TYPE:String="Release" .. && \
115 # NTSimulator Manager
116 COPY . /opt/dev/ntsimulator
117 COPY ./deploy/nts-manager/CMakeLists.txt /opt/dev/ntsimulator/CMakeLists.txt
120 cd ntsimulator && mkdir build && cd build && \
129 LABEL maintainer="alexandru.stancu@highstreet-technologies.com"
131 ENV NETCONF_BASE=40000
132 ENV NTS_IP="127.0.0.1"
133 ENV SCRIPTS_DIR=/opt/dev/scripts
134 ENV DOCKER_ENGINE_VERSION="1.40"
135 ENV MODELS_IMAGE="ntsim_oran"
136 ENV VesHeartbeatPeriod=0
137 ENV IsVesAvailable=true
138 ENV IsNetconfAvailable=true
139 ENV VesRegistration=false
140 ENV VesEndpointPort=8080
141 ENV VesEndpointIp="172.17.0.1"
144 ENV K8S_DEPLOYMENT=false
145 ENV CONTAINER_NAME="ntsim"
146 ENV ControllerIp="172.17.0.1"
147 ENV ControllerPort=8181
148 ENV NetconfCallHomePort=6666
149 ENV ControllerUsername="admin"
150 ENV ControllerPassword="admin"
151 ENV NetconfCallHome=false
152 ENV Ipv6Enabled=false
155 apt-get update && apt-get install -y supervisor bc
159 adduser --system netconf && \
160 echo "netconf:netconf" | chpasswd
163 # generate ssh keys for netconf user
165 mkdir -p /home/netconf/.ssh
167 COPY --from=builder /home/netconf/.ssh /home/netconf/.ssh
170 COPY --from=builder /etc/ssh /etc/ssh
171 COPY --from=builder /root/.ssh /root/.ssh
172 COPY --from=builder /usr/local/lib /usr/local/lib
173 COPY --from=builder /usr/local/bin /usr/local/bin
174 COPY --from=builder /usr/local/include /usr/local/include
175 COPY --from=builder /usr/lib/libavl.so /usr/lib/libavl.so
176 COPY --from=builder /usr/lib/libavl.so.1 /usr/lib/libavl.so.1
177 COPY --from=builder /usr/lib/x86_64-linux-gnu/libev.so /usr/lib/x86_64-linux-gnu/libev.so
178 COPY --from=builder /usr/lib/x86_64-linux-gnu/libev.so.4 /usr/lib/x86_64-linux-gnu/libev.so.4
179 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/lib/x86_64-linux-gnu/libcurl.so.4
180 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libcurl.so
181 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
182 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcjson_utils.so.1 /usr/lib/x86_64-linux-gnu/libcjson_utils.so.1
183 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcjson_utils.so /usr/lib/x86_64-linux-gnu/libcjson_utils.so
184 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcjson.so.1 /usr/lib/x86_64-linux-gnu/libcjson.so.1
185 COPY --from=builder /usr/lib/x86_64-linux-gnu/libcjson.so /usr/lib/x86_64-linux-gnu/libcjson.so
186 COPY --from=builder /usr/lib/x86_64-linux-gnu/libprotobuf.so.10 /usr/lib/x86_64-linux-gnu/libprotobuf.so.10
187 COPY --from=builder /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1
188 COPY --from=builder /usr/lib/x86_64-linux-gnu/libprotobuf-c.so /usr/lib/x86_64-linux-gnu/libprotobuf-c.so
189 COPY --from=builder /usr/lib/x86_64-linux-gnu/libssh_threads.so.4 /usr/lib/x86_64-linux-gnu/libssh_threads.so.4
190 COPY --from=builder /usr/lib/x86_64-linux-gnu/libssh_threads.so /usr/lib/x86_64-linux-gnu/libssh_threads.so
191 COPY --from=builder /usr/lib/x86_64-linux-gnu/libssh.so.4 /usr/lib/x86_64-linux-gnu/libssh.so.4
192 COPY --from=builder /usr/lib/x86_64-linux-gnu/libssh.so /usr/lib/x86_64-linux-gnu/libssh.so
193 COPY --from=builder /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 /usr/lib/x86_64-linux-gnu/libnghttp2.so.14
194 COPY --from=builder /usr/lib/x86_64-linux-gnu/librtmp.so.1 /usr/lib/x86_64-linux-gnu/librtmp.so.1
195 COPY --from=builder /usr/lib/x86_64-linux-gnu/libpsl.so.5 /usr/lib/x86_64-linux-gnu/libpsl.so.5
196 COPY --from=builder /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2
197 COPY --from=builder /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2
198 COPY --from=builder /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2
199 COPY --from=builder /usr/lib/x86_64-linux-gnu/libkrb5.so.3 /usr/lib/x86_64-linux-gnu/libkrb5.so.3
200 COPY --from=builder /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 /usr/lib/x86_64-linux-gnu/libk5crypto.so.3
201 COPY --from=builder /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 /usr/lib/x86_64-linux-gnu/libkrb5support.so.0
202 COPY --from=builder /usr/lib/x86_64-linux-gnu/libsasl2.so.2 /usr/lib/x86_64-linux-gnu/libsasl2.so.2
203 COPY --from=builder /usr/lib/x86_64-linux-gnu/libgssapi.so.3 /usr/lib/x86_64-linux-gnu/libgssapi.so.3
204 COPY --from=builder /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0
205 COPY --from=builder /usr/lib/x86_64-linux-gnu/libkrb5.so.26 /usr/lib/x86_64-linux-gnu/libkrb5.so.26
206 COPY --from=builder /usr/lib/x86_64-linux-gnu/libasn1.so.8 /usr/lib/x86_64-linux-gnu/libasn1.so.8
207 COPY --from=builder /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4
208 COPY --from=builder /usr/lib/x86_64-linux-gnu/libroken.so.18 /usr/lib/x86_64-linux-gnu/libroken.so.18
209 COPY --from=builder /usr/lib/x86_64-linux-gnu/libwind.so.0 /usr/lib/x86_64-linux-gnu/libwind.so.0
210 COPY --from=builder /usr/lib/x86_64-linux-gnu/libheimbase.so.1 /usr/lib/x86_64-linux-gnu/libheimbase.so.1
211 COPY --from=builder /usr/lib/x86_64-linux-gnu/libhx509.so.5 /usr/lib/x86_64-linux-gnu/libhx509.so.5
213 COPY --from=builder /lib/x86_64-linux-gnu/libkeyutils.so.1 /lib/x86_64-linux-gnu/libkeyutils.so.1
214 COPY --from=builder /etc/sysrepo /etc/sysrepo
215 COPY --from=builder /var/run /var/run
217 #COPY --from=builder /usr/local/etc/keystored/keys/ssh_host_rsa_key.pem /usr/local/etc/keystored/keys/ssh_host_rsa_key.pem
218 #COPY --from=builder /usr/local/etc/keystored/keys/ssh_host_rsa_key.pem.pub /usr/local/etc/keystored/keys/ssh_host_rsa_key.pem.pub
219 COPY --from=builder /usr/local/share/libnetconf2 /usr/local/share/libnetconf2
223 COPY ./deploy/nts-manager/supervisord.conf /etc/supervisord.conf
225 COPY ./deploy/nts-manager/docker_stats.sh /opt/dev/docker_stats.sh
226 # Fix for the NETCONF notifications
228 echo "Fixing the NETCONF notifications..." && \
229 mkdir -p /var/run/sysrepo-subscriptions/ietf-crypto-types
232 LABEL build-date=$BUILD_DATE
237 CMD ["sh", "-c", "/usr/bin/supervisord -c /etc/supervisord.conf"]