diff options
-rw-r--r-- | ansible/library/docker_list_containers.py | 99 | ||||
-rw-r--r-- | ansible/roles/rancher/molecule/default/cleanup.yml | 10 | ||||
-rw-r--r-- | ansible/roles/rancher/tasks/rancher_server.yml | 2 | ||||
-rwxr-xr-x | ansible/test/bin/molecule.sh | 2 | ||||
-rwxr-xr-x | ansible/test/images/docker/build-all.sh | 4 | ||||
-rw-r--r-- | ansible/test/roles/cleanup-rancher/tasks/main.yml | 18 | ||||
-rw-r--r-- | ansible/test/roles/prepare-docker/tasks/docker-packages.yml | 8 | ||||
-rw-r--r-- | ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml | 12 | ||||
-rw-r--r-- | ansible/test/roles/prepare-docker/tasks/python-bindings.yml | 3 | ||||
-rw-r--r-- | ansible/test/roles/prepare-docker/tasks/python2-docker.yml | 28 | ||||
-rw-r--r-- | ansible/test/roles/prepare-docker/vars/main.yml | 9 | ||||
-rwxr-xr-x[-rw-r--r--] | build/data_lists/onap_3.0.2-docker_images.list | 15 |
12 files changed, 160 insertions, 50 deletions
diff --git a/ansible/library/docker_list_containers.py b/ansible/library/docker_list_containers.py new file mode 100644 index 00000000..d8a789c6 --- /dev/null +++ b/ansible/library/docker_list_containers.py @@ -0,0 +1,99 @@ +#!/usr/bin/python + +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community' +} + +DOCUMENTATION = ''' +--- +module: docker_list_containers + +short_description: "List running docker containers" + +description: + - "Lists all running containers or those with matching label" + +options: + label_name: + description: + - container label name to match + required: false + label_value: + description: + - container label value to match + required: false + +author: + - Bartek Grzybowski (b.grzybowski@partner.samsung.com) +''' + +EXAMPLES = ''' +# List all running containers +- name: List containers + docker_list_containers: + +# List all running containers matching label +- name: List containers + docker_list_containers: + label_name: 'io.rancher.project.name' + label_value: 'kubernetes' +''' + +RETURN = ''' +containers: + description: List of running containers matching module criteria + type: list + returned: always + sample: [ + "rancher-agent", + "rancher-server", + "kubernetes-node-1", + "infrastructure-server" + ] +''' + +from ansible.module_utils.docker_common import AnsibleDockerClient + +class DockerListContainers: + + def __init__(self): + self.docker_client = AnsibleDockerClient( + argument_spec=dict( + label_name=dict(type='str', required=False), + label_value=dict(type='str', required=False) + ) + ) + + self.containers = self.docker_client.containers() + self.label_name=self.docker_client.module.params.get('label_name') + self.label_value=self.docker_client.module.params.get('label_value') + + if self.label_name: + self.containers_names=self._get_containers_names_by_label() + else: + self.containers_names=self._get_containers_names() + + self.result=dict( + containers=self.containers_names, + changed=False + ) + + def _get_containers_names(self): + return [str(container_meta.get('Names')[0][1:]) for container_meta in self.containers if 'Names' in container_meta] + + def _get_containers_names_by_label(self): + names=[] + for container_meta in self.containers: + if container_meta.get('Labels',{}).get(self.label_name) == self.label_value: + names.append(str(container_meta['Names'][0][1:])) # strip leading '/' in container name and convert to str from unicode + + return names + +def main(): + cont=DockerListContainers() + cont.docker_client.module.exit_json(**cont.result) + +if __name__ == '__main__': + main() diff --git a/ansible/roles/rancher/molecule/default/cleanup.yml b/ansible/roles/rancher/molecule/default/cleanup.yml index 13b48278..d4bf4495 100644 --- a/ansible/roles/rancher/molecule/default/cleanup.yml +++ b/ansible/roles/rancher/molecule/default/cleanup.yml @@ -7,8 +7,8 @@ container_list: - rancher-agent - rancher-server - # For some reason getting error "Device busy error" when trying to delete directory with root privileges and rancher-containers not anymore running. - # - role: cleanup-directories - # vars: - # directories_files_list_to_remove: - # - /var/lib/rancher/ + - role: cleanup-rancher + vars: + container_list_by_label: + - { 'label':'io.rancher.project.name', 'value':'healthcheck'} + - { 'label':'io.rancher.project.name', 'value':'kubernetes'} diff --git a/ansible/roles/rancher/tasks/rancher_server.yml b/ansible/roles/rancher/tasks/rancher_server.yml index 4cda3722..a0893b0b 100644 --- a/ansible/roles/rancher/tasks/rancher_server.yml +++ b/ansible/roles/rancher/tasks/rancher_server.yml @@ -55,7 +55,7 @@ account_key: "{{ key_public }}:{{ key_private }}" mode: access_control data: - account_id: 1a1 # default rancher admin account + account_id: 1a1 # default rancher admin account password: "{{ rancher.admin_password }}" when: "rancher.auth_enabled is defined and rancher.auth_enabled" diff --git a/ansible/test/bin/molecule.sh b/ansible/test/bin/molecule.sh index d983ca08..72dce6d9 100755 --- a/ansible/test/bin/molecule.sh +++ b/ansible/test/bin/molecule.sh @@ -42,7 +42,7 @@ MOLECULE_IMAGE=${MOLECULE_IMAGE:-molecule-dev} MOLECULE_IMAGE_VERSION=${MOLECULE_IMAGE_VERSION:-2.20.0} echo "Running molecule image: ${MOLECULE_IMAGE}:${MOLECULE_IMAGE_VERSION}" MOLECULE_CMD=${MOLECULE_CMD:-molecule} -docker run --rm -it \ +docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ${ROOT_DIR}:${CONTAINER_ROOT}:rw \ -w ${CONTAINER_ROOT}/${PROJECT_ROOT_IN_CONTAINER} \ diff --git a/ansible/test/images/docker/build-all.sh b/ansible/test/images/docker/build-all.sh index dd5db093..dcaaf82f 100755 --- a/ansible/test/images/docker/build-all.sh +++ b/ansible/test/images/docker/build-all.sh @@ -19,9 +19,9 @@ # COPYRIGHT NOTICE ENDS HERE BUILD_SCRIPT=${1:-build.sh} - +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" # Run all build scripts in direct subdirectories -for buildfile in $(find -mindepth 2 -maxdepth 2 -name ${BUILD_SCRIPT}); +for buildfile in $(find ${SCRIPTPATH} -mindepth 2 -maxdepth 2 -name ${BUILD_SCRIPT}); do pushd $(dirname ${buildfile}) . ${BUILD_SCRIPT} diff --git a/ansible/test/roles/cleanup-rancher/tasks/main.yml b/ansible/test/roles/cleanup-rancher/tasks/main.yml new file mode 100644 index 00000000..21b02988 --- /dev/null +++ b/ansible/test/roles/cleanup-rancher/tasks/main.yml @@ -0,0 +1,18 @@ +--- +# Remove containers spawned by Rancher Agent +- name: Get list of containers spawned by Rancher Agent + docker_list_containers: + label_name: "{{ item.label }}" + label_value: "{{ item.value }}" + loop: "{{ container_list_by_label }}" + register: docker_list_containers_var + +- name: set fact # save a list of containers found by previous task to orphaned_containers var + set_fact: orphaned_containers="{{ orphaned_containers|default([]) + item.containers }}" + loop: "{{ docker_list_containers_var.results }}" + +- name: Remove orphaned containers + docker_container: + name: "{{ item }}" + state: absent + loop: "{{ orphaned_containers }}" diff --git a/ansible/test/roles/prepare-docker/tasks/docker-packages.yml b/ansible/test/roles/prepare-docker/tasks/docker-packages.yml new file mode 100644 index 00000000..b7e76c55 --- /dev/null +++ b/ansible/test/roles/prepare-docker/tasks/docker-packages.yml @@ -0,0 +1,8 @@ +--- + +- name: Download docker related packages + command: yumdownloader --destdir="{{ rpm_dir }}" "{{ docker_ce_rpm }}" "{{ docker_ce_selinux_rpm }}" + +- name: Install docker related packages + yum: + name: "{{ rpm_dir + '/' + docker_ce_rpm + '.rpm'}},{{ rpm_dir + '/' + docker_ce_selinux_rpm + '.rpm' }}" diff --git a/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml b/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml index 26f89d64..f35ffeee 100644 --- a/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml +++ b/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml @@ -7,8 +7,16 @@ gpgcheck: true gpgkey: https://download.docker.com/linux/centos/gpg -- name: Install docker python bindings - import_tasks: python-bindings.yml +- name: Create rpm dir + file: + path: "{{ rpm_dir }}" + state: directory + +- name: Handle python2-docker dependency needed by Ansible's docker_* modules + import_tasks: python2-docker.yml + +- name: Handle docker-ce packages + import_tasks: docker-packages.yml - name: Fake dockerd on container import_tasks: docker-socket-override.yml diff --git a/ansible/test/roles/prepare-docker/tasks/python-bindings.yml b/ansible/test/roles/prepare-docker/tasks/python-bindings.yml deleted file mode 100644 index 7a66a328..00000000 --- a/ansible/test/roles/prepare-docker/tasks/python-bindings.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- name: Handle python2-docker dependency needed by Ansible's docker_* modules - import_tasks: python2-docker.yml diff --git a/ansible/test/roles/prepare-docker/tasks/python2-docker.yml b/ansible/test/roles/prepare-docker/tasks/python2-docker.yml index 9cb3b483..f091cf85 100644 --- a/ansible/test/roles/prepare-docker/tasks/python2-docker.yml +++ b/ansible/test/roles/prepare-docker/tasks/python2-docker.yml @@ -4,35 +4,13 @@ name: docker-python state: absent -- name: Create own-repo dir - file: - path: /root/own-repo - state: directory - - name: Download python2-docker rpm for Ansible (docker_container module dep) get_url: - url: https://cbs.centos.org/kojifiles/packages/python-docker/2.5.1/2.el7/noarch/python2-docker-2.5.1-2.el7.noarch.rpm - dest: /root/own-repo/ + url: "{{ python2_docker_rpm_url }}" + dest: "{{ rpm_dir }}" register: rpm -- name: Install createrepo - package: - name: createrepo - state: present - -- name: Run createrepo - command: createrepo /root/own-repo/ - when: rpm.changed - -- name: Create own-repo - yum_repository: - name: own-repo - description: Own repo for ansible deps - baseurl: file:///root/own-repo - enabled: true - gpgcheck: false - - name: Install docker python module package: - name: python2-docker + name: "{{ rpm_dir + '/' + python2_docker_rpm }}" state: present diff --git a/ansible/test/roles/prepare-docker/vars/main.yml b/ansible/test/roles/prepare-docker/vars/main.yml index c63c0dea..aabd65dc 100644 --- a/ansible/test/roles/prepare-docker/vars/main.yml +++ b/ansible/test/roles/prepare-docker/vars/main.yml @@ -2,6 +2,9 @@ docker_needed_repos: - /etc/yum.repos.d/CentOS-Base.repo.disabled - /etc/yum.repos.d/docker-ce.repo.disabled - - /etc/yum.repos.d/own-repo.repo.disabled - -offline_repo_file: /etc/yum.repos.d/onap.repo
\ No newline at end of file +offline_repo_file: /etc/yum.repos.d/onap.repo +rpm_dir: /root/rpm +python2_docker_rpm: python2-docker-2.5.1-2.el7.noarch.rpm +python2_docker_rpm_url: "https://cbs.centos.org/kojifiles/packages/python-docker/2.5.1/2.el7/noarch/{{ python2_docker_rpm }}" +docker_ce_rpm: docker-ce-17.03.2.ce-1.el7.centos.x86_64 +docker_ce_selinux_rpm: docker-ce-selinux-17.03.3.ce-1.el7.noarch diff --git a/build/data_lists/onap_3.0.2-docker_images.list b/build/data_lists/onap_3.0.2-docker_images.list index e652a12b..eba44517 100644..100755 --- a/build/data_lists/onap_3.0.2-docker_images.list +++ b/build/data_lists/onap_3.0.2-docker_images.list @@ -53,7 +53,7 @@ nexus3.onap.org:10001/onap/admportal-sdnc-image:1.4.4 nexus3.onap.org:10001/onap/appc-cdt-image:1.4.4 nexus3.onap.org:10001/onap/appc-image:1.4.4 nexus3.onap.org:10001/onap/babel:1.3.3 -nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.3.3 +nexus3.onap.org:10001/onap/ccsdk-ansible-server-image:0.3.4 nexus3.onap.org:10001/onap/ccsdk-apps-ms-neng:0.3.3 nexus3.onap.org:10001/onap/ccsdk-controllerblueprints:0.3.3 nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:0.3.3 @@ -111,10 +111,10 @@ nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.inventory-api:3.0.4 nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.policy-handler:4.4.0 nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.servicechange-handler:1.1.5 nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.1.1 -nexus3.onap.org:10001/onap/policy-apex-pdp:2.0.4 -nexus3.onap.org:10001/onap/policy-distribution:2.0.5 -nexus3.onap.org:10001/onap/policy-drools:1.3.6 -nexus3.onap.org:10001/onap/policy-pe:1.3.6 +nexus3.onap.org:10001/onap/policy-apex-pdp:2.0.5 +nexus3.onap.org:10001/onap/policy-distribution:2.0.6 +nexus3.onap.org:10001/onap/policy-drools:1.3.7 +nexus3.onap.org:10001/onap/policy-pe:1.3.7 nexus3.onap.org:10001/onap/pomba-aai-context-builder:1.3.2 nexus3.onap.org:10001/onap/pomba-context-aggregator:1.3.4 nexus3.onap.org:10001/onap/pomba-network-discovery-context-builder:1.3.1 @@ -133,7 +133,7 @@ nexus3.onap.org:10001/onap/sdc-init-elasticsearch:1.3.6 nexus3.onap.org:10001/onap/sdc-kibana:1.3.6 nexus3.onap.org:10001/onap/sdc-onboard-backend:1.3.6 nexus3.onap.org:10001/onap/sdc-onboard-cassandra-init:1.3.6 -nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.4.4 +nexus3.onap.org:10001/onap/sdnc-ansible-server-image:1.4.5 nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:1.4.4 nexus3.onap.org:10001/onap/sdnc-image:1.4.4 nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:1.4.4 @@ -182,7 +182,6 @@ nexus3.onap.org:10001/sonatype/nexus:2.14.8-01 nexus3.onap.org:10001/zookeeper:3.4 oomk8s/mariadb-client-init:3.0.0 oomk8s/readiness-check:2.0.0 -oomk8s/readiness-check:2.0.0 oomk8s/readiness-check:2.0.1 oomk8s/ubuntu-init:1.0.0 registry.hub.docker.com/library/busybox:latest @@ -217,4 +216,4 @@ rancher/net:v0.13.17 rancher/network-manager:v0.7.22 rancher/pause-amd64:3.0 rancher/server:v1.6.22 -rancher/tiller:v2.9.1
\ No newline at end of file +rancher/tiller:v2.9.1 |