reduce sdnc-ansible-server image footprint
authorSylvain Desbureaux <sylvain.desbureaux@orange.com>
Wed, 23 Jan 2019 10:14:30 +0000 (11:14 +0100)
committerSylvain Desbureaux <sylvain.desbureaux@orange.com>
Wed, 30 Jan 2019 13:34:37 +0000 (14:34 +0100)
Project "CIA" scope is to provide smaller and multi architecture docker
images.

This proposition aims to do that for sdnc-ansible-server.

The current size of this proposal is 139mb compared to the 618Mb image
proposed before (and before actual ansible installation).

Principles used are the following:

1. a "basic" `docker build .` should provide a working image;
2. use the smallest (and multi arch) base image possibe;
3. install necessary stuff only;
4. leverage python best practices for installation;
5. remove installation stuff occuring at run level and move them to
   build level.

* Dockerfile is now at the root part;
* ansible configuration file `ansible.cfg` is created and put in
  `configuration` folder;
* ansible configuration file `ansible.cfg` is pushed during the
  build part with a reproductible process;
* `python` files are on `ansible-server" folder so copying during build
  works out of the box;
* yml files are put directly on `ansible-server/Playbooks` so copying
during build works out the box;

* Dockerfile base image is now alpine:3.8;
* `timeout` executable being now from busybox, change in the
  command-line call has been made (`--signal` is now `-s` and `-t` is
  set before setting the timeout value).

* Only install python and python-pip as alpine package and remove build
  dependencies package after use.

* put all python requirements in `requirements.txt` package and launch
  pip installation command with this file.

* call directly python main script (`RestServer.py`) as entrypoint and
  do the python installation stuff at build time.

- [x] change pom.xml so building parts works
- [ ] consider changing destination folder (`/opt/ansible-server/`) to
      the ancient one (`/opt/onap/ccsdk/`) if this is problematic

Change-Id: I6295d7c2d1ed631e1842350581234686d704c1bf
Issue-ID: INT-816
Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
20 files changed:
installation/ansible-server/pom.xml
installation/ansible-server/src/main/.dockerignore [new file with mode: 0644]
installation/ansible-server/src/main/Dockerfile [new file with mode: 0644]
installation/ansible-server/src/main/Playbooks/Ansible_inventory [moved from installation/ansible-server/src/main/yml/Ansible_inventory with 99% similarity]
installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_huawei_postcheck@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_huawei_precheck@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_huawei_upgrade@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_postcheck@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_postcheck@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_postcheck_jq@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_postcheck_jq@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_precheck@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_precheck@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_precheck_jq@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_precheck_jq@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_pyver@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_pyver@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_quiescetraffic@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_quiescetraffic@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_resumetraffic@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_resumetraffic@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_sleep@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_sleep@0.00.yml with 98% similarity]
installation/ansible-server/src/main/Playbooks/ansible_upgradesw@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_upgradesw@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_upgradesw_insjq@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_upgradesw_insjq@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_upgradesw_remjq@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_upgradesw_remjq@0.00.yml with 100% similarity]
installation/ansible-server/src/main/Playbooks/ansible_vfw_distributetraffic@0.00.yml [moved from installation/ansible-server/src/main/yml/ansible_vfw_distributetraffic@0.00.yml with 100% similarity]
installation/ansible-server/src/main/docker/Dockerfile [deleted file]

index 991aa91..3c22fd7 100644 (file)
@@ -62,7 +62,7 @@
                 <version>2.6</version>
                 <executions>
                     <execution>
-                        <id>copy-dockerfile</id>
+                        <id>copy-files</id>
                         <goals>
                             <goal>copy-resources</goal>
                         </goals><!-- here the phase you need -->
                             <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
                             <resources>
                                 <resource>
-                                    <directory>src/main/docker</directory>
+                                    <directory>src/main</directory>
                                     <includes>
-                                        <include>Dockerfile</include>
-                                    </includes>
-                                    <filtering>true</filtering>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>copy-yml</id>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals><!-- here the phase you need -->
-                        <phase>validate</phase>
-                        <configuration>
-                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/ccsdk/Playbooks</outputDirectory>
-                            <resources>
-                                <resource>
-                                    <directory>src/main/yml</directory>
-                                    <includes>
-                                        <include>*</include>
+                                        <include>**/*</include>
                                     </includes>
                                     <filtering>false</filtering>
                                 </resource>
diff --git a/installation/ansible-server/src/main/.dockerignore b/installation/ansible-server/src/main/.dockerignore
new file mode 100644 (file)
index 0000000..0d20b64
--- /dev/null
@@ -0,0 +1 @@
+*.pyc
diff --git a/installation/ansible-server/src/main/Dockerfile b/installation/ansible-server/src/main/Dockerfile
new file mode 100644 (file)
index 0000000..726d606
--- /dev/null
@@ -0,0 +1,6 @@
+#FROM onap/ccsdk-ansible-server-image:${ccsdk.docker.version}
+FROM onap/ccsdk-ansible-server-image:0.4-STAGING-latest
+
+LABEL maintainer="SDN-C Team (sdnc@lists.openecomp.org)"
+
+COPY Playbooks /opt/ansible-server/Playbooks
 # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # * See the License for the specific language governing permissions and
 # * limitations under the License.
-# * 
+# *
 # * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 # * ============LICENSE_END=========================================================
 # */
 
 [host]
 localhost   ansible_connection=local
-
 # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # * See the License for the specific language governing permissions and
 # * limitations under the License.
-# * 
+# *
 # * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 # * ============LICENSE_END=========================================================
 # */
 
 - hosts: all
 
-  # Mandatory: 
+  # Mandatory:
   vars:
       sleep_time: "{{Sleep|default(10)}}"
 
@@ -39,4 +39,3 @@
 
     - debug:
         msg: "Done"
-
diff --git a/installation/ansible-server/src/main/docker/Dockerfile b/installation/ansible-server/src/main/docker/Dockerfile
deleted file mode 100644 (file)
index 0e59fba..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# Base ubuntu with added packages needed for open ecomp
-FROM onap/ccsdk-ansible-server-image:${ccsdk.docker.version}
-
-LABEL maintainer="SDN-C Team (sdnc@lists.openecomp.org)"
-
-#ENV http_proxy=http://anonymous:password@one.proxy.att.com:8080
-#ENV https_proxy=http://anonymous:password@one.proxy.att.com:8080
-
-##Vim
-RUN apt-get update
-RUN apt-get -y install apt-file
-RUN apt-file update
-RUN apt-get -y install vim
-
-##Python:
-RUN apt-get -y install python2.7
-RUN apt-get -y install python-pip
-
-
-
-# copy files needed
-COPY opt /opt/
-
-WORKDIR /opt/onap/ccsdk
-
-#ENTRYPOINT exec startAnsibleServer.sh
-#CMD ["/bin/bash"]
-EXPOSE 8000
-