diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000000000000000000000000000000000000..980648144e0ca9280675586ceaa4a0c183179207
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,7 @@
+exclude_paths:
+  - molecule/default/create.yml
+skip_list:
+  - '602'
+  - '204'
+  - '208'
+  - '106'
diff --git a/.flake8 b/.flake8
index e44b81084185c2f2d2a5f93214c2749e3f95a172..7a5c81ef412ec35c96bb1189140ab844ce2ad79f 100644
--- a/.flake8
+++ b/.flake8
@@ -1,2 +1,2 @@
 [flake8]
-ignore = E501
+ignore = E501,W503,E203,E402
diff --git a/.yamllint b/.yamllint
index 3a2255e4656c4b4cf94ff9d60c2c4548246a2db0..8bb60ab5e335f057a608cb3cfc180bb83861b361 100644
--- a/.yamllint
+++ b/.yamllint
@@ -1,3 +1,4 @@
+---
 extends: default
 
 rules:
diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2
deleted file mode 100644
index 9f689d9e15f0fb865cb4389ca3f782976ce8fbc2..0000000000000000000000000000000000000000
--- a/molecule/default/Dockerfile.j2
+++ /dev/null
@@ -1,13 +0,0 @@
-# Molecule managed
-
-{% if item.registry is defined %}
-FROM {{ item.registry.url }}/{{ item.image }}
-{% else %}
-FROM {{ item.image }}
-{% endif %}
-
-RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
-    elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel python2-dnf bash && dnf clean all; \
-    elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
-    elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
-    elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi
diff --git a/molecule/default/create.yml b/molecule/default/create.yml
deleted file mode 100644
index d3b5d5626ab7ae08af54207f0f42dcad25005fea..0000000000000000000000000000000000000000
--- a/molecule/default/create.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-- name: Create
-  hosts: localhost
-  connection: local
-  gather_facts: false
-  no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
-  vars:
-    molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
-    molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
-    molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
-    molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}"
-  tasks:
-    - name: Create Dockerfiles from image names
-      template:
-        src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
-        dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
-      with_items: "{{ molecule_yml.platforms }}"
-      register: platforms
-
-    - name: Discover local Docker images
-      docker_image_facts:
-        name: "molecule_local/{{ item.item.name }}"
-      with_items: "{{ platforms.results }}"
-      register: docker_images
-
-    - name: Build an Ansible compatible image
-      docker_image:
-        path: "{{ molecule_ephemeral_directory }}"
-        name: "molecule_local/{{ item.item.image }}"
-        dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
-        force: "{{ item.item.force | default(true) }}"
-      with_items: "{{ platforms.results }}"
-      when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
-
-    - name: Create docker network(s)
-      docker_network:
-        name: "{{ item }}"
-        state: present
-      with_items: "{{ molecule_yml.platforms | molecule_get_docker_networks }}"
-
-    - name: Create molecule instance(s)
-      docker_container:
-        name: "{{ item.name }}"
-        hostname: "{{ item.name }}"
-        image: "molecule_local/{{ item.image }}"
-        state: started
-        recreate: false
-        log_driver: json-file
-        command: "{{ item.command | default('bash -c \"while true; do sleep 10000; done\"') }}"
-        privileged: "{{ item.privileged | default(omit) }}"
-        volumes: "{{ item.volumes | default(omit) }}"
-        capabilities: "{{ item.capabilities | default(omit) }}"
-        exposed_ports: "{{ item.exposed_ports | default(omit) }}"
-        published_ports: "{{ item.published_ports | default(omit) }}"
-        ulimits: "{{ item.ulimits | default(omit) }}"
-        networks: "{{ item.networks | default(omit) }}"
-        dns_servers: "{{ item.dns_servers | default(omit) }}"
-        tmpfs: "{{ item.tmpfs | default(omit) }}"
-      register: server
-      with_items: "{{ molecule_yml.platforms }}"
-      async: 7200
-      poll: 0
-
-    - name: Wait for instance(s) creation to complete
-      async_status:
-        jid: "{{ item.ansible_job_id }}"
-      register: docker_jobs
-      until: docker_jobs.finished
-      retries: 300
-      with_items: "{{ server.results }}"
diff --git a/molecule/default/destroy.yml b/molecule/default/destroy.yml
deleted file mode 100644
index ec4da497e315324c358449fac4e9f53e10938e26..0000000000000000000000000000000000000000
--- a/molecule/default/destroy.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-- name: Destroy
-  hosts: localhost
-  connection: local
-  gather_facts: false
-  no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
-  vars:
-    molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
-    molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}"
-  tasks:
-    - name: Destroy molecule instance(s)
-      docker_container:
-        name: "{{ item.name }}"
-        state: absent
-        force_kill: "{{ item.force_kill | default(true) }}"
-      register: server
-      with_items: "{{ molecule_yml.platforms }}"
-      async: 7200
-      poll: 0
-
-    - name: Wait for instance(s) deletion to complete
-      async_status:
-        jid: "{{ item.ansible_job_id }}"
-      register: docker_jobs
-      until: docker_jobs.finished
-      retries: 300
-      with_items: "{{ server.results }}"
-
-    - name: Delete docker network(s)
-      docker_network:
-        name: "{{ item }}"
-        state: absent
-      with_items: "{{ molecule_yml.platforms | molecule_get_docker_networks }}"
diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml
index 81c3ceb020706d04f61831e2e3eaa23ad86f3f17..6417ca50a7b3fac0d7cb772a18ea580c523dd5ec 100644
--- a/molecule/default/molecule.yml
+++ b/molecule/default/molecule.yml
@@ -3,12 +3,13 @@ dependency:
   name: galaxy
   options:
     role-file: roles/requirements.yml
-lint:
-  name: yamllint
+lint: |
+  set -e
+  yamllint .
+  ansible-lint
+  flake8
 provisioner:
   name: ansible
-  lint:
-    name: ansible-lint
   playbooks:
     converge: ../../playbook.yml
   inventory:
@@ -18,8 +19,6 @@ scenario:
   name: default
 verifier:
   name: testinfra
-  lint:
-    name: flake8
 driver:
   name: docker
 platforms: