Molecule tests for docker role
Issue-ID: OOM-1759
Change-Id: I9e1ee7f248147b3f7229625c7a20fa84e8e67aac
Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com>
diff --git a/ansible/test/roles/prepare-docker/tasks/docker-socket-override.yml b/ansible/test/roles/prepare-docker/tasks/docker-socket-override.yml
new file mode 100644
index 0000000..0cabadf
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/docker-socket-override.yml
@@ -0,0 +1,13 @@
+---
+- name: Create docker.socket systemd dir for override
+ file:
+ path: /etc/systemd/system/docker.socket.d
+ state: directory
+
+- name: Fake dockerd dependent docker.socket service not to actually listen the docker socket as dockerd is not used in container only docker client
+ copy:
+ content: |
+ [Socket]
+ ListenStream=
+ ListenStream=/tmp/fake
+ dest: /etc/systemd/system/docker.socket.d/override.conf
diff --git a/ansible/test/roles/prepare-docker/tasks/enable-repos.yml b/ansible/test/roles/prepare-docker/tasks/enable-repos.yml
new file mode 100644
index 0000000..204bf03
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/enable-repos.yml
@@ -0,0 +1,13 @@
+---
+- name: Enable docker repos back for Molecule testing purposes
+ copy:
+ remote_src: yes
+ src: "{{ item }}"
+ dest: "{{ (item | splitext)[0] }}"
+ loop: "{{ docker_needed_repos }}"
+
+- name: Disable offline repo for molecule testing purposes
+ lineinfile:
+ path: "{{ offline_repo_file }}"
+ regexp: 'enabled = 1'
+ line: 'enabled = 0'
diff --git a/ansible/test/roles/prepare-docker/tasks/main.yml b/ansible/test/roles/prepare-docker/tasks/main.yml
new file mode 100644
index 0000000..e7d8706
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+- name: Check repositories
+ stat:
+ path: "{{ item }}"
+ loop: "{{ docker_needed_repos + [offline_repo_file] }}"
+ register: repos
+
+- name: Set fact for offline repos created
+ set_fact:
+ offline_repo_created: "{{ (repos.results | map(attribute='stat.exists') | list) is all }}"
+
+- debug:
+ var: offline_repo_created
+
+- name: Enable repos back (if package-repository role already setup offline onap repo) for molecule testing purposes to install docker
+ include_tasks: enable-repos.yml
+ when: offline_repo_created
+
+- name: Prepare docker repos normally
+ include_tasks: prepare-docker-repos.yml
+ when: not offline_repo_created
diff --git a/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml b/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml
new file mode 100644
index 0000000..26f89d6
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/prepare-docker-repos.yml
@@ -0,0 +1,15 @@
+---
+- name: Install Docker-CE repo
+ yum_repository:
+ name: docker-ce
+ description: Docker-ce YUM repo
+ baseurl: https://download.docker.com/linux/centos/7/x86_64/stable/
+ gpgcheck: true
+ gpgkey: https://download.docker.com/linux/centos/gpg
+
+- name: Install docker python bindings
+ import_tasks: python-bindings.yml
+
+- name: Fake dockerd on container
+ import_tasks: docker-socket-override.yml
+ when: ansible_env.container == 'docker'
diff --git a/ansible/test/roles/prepare-docker/tasks/python-bindings.yml b/ansible/test/roles/prepare-docker/tasks/python-bindings.yml
new file mode 100644
index 0000000..7a66a32
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/python-bindings.yml
@@ -0,0 +1,3 @@
+---
+- 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
new file mode 100644
index 0000000..9cb3b48
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/tasks/python2-docker.yml
@@ -0,0 +1,38 @@
+---
+- name: Remove docker-python that is conflicting with python2-docker
+ package:
+ 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/
+ 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
+ state: present
diff --git a/ansible/test/roles/prepare-docker/vars/main.yml b/ansible/test/roles/prepare-docker/vars/main.yml
new file mode 100644
index 0000000..c63c0de
--- /dev/null
+++ b/ansible/test/roles/prepare-docker/vars/main.yml
@@ -0,0 +1,7 @@
+---
+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