diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index af890d3e38b8a8548c7676acbb06b98de61afba5..0000000000000000000000000000000000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,41 +0,0 @@
----
-language: python
-python: "2.7"
-
-# Run jobs in VMs - sudo is required by ansible tests.
-sudo: required
-
-# Install ansible
-addons:
-  apt:
-    packages:
-      - gcc
-      - python-apt
-      - python-virtualenv
-      - realpath
-
-# Create a build matrix for the different test jobs.
-env:
-  matrix:
-    # Run python style checks.
-    - TOX_ENV=pep8
-    # Build documentation.
-    - TOX_ENV=docs
-    # Run python2.7 unit tests.
-    - TOX_ENV=py27
-    # Run ansible syntax checks.
-    - TOX_ENV=ansible-syntax
-    # Run ansible tests.
-    - TOX_ENV=ansible
-    # Run molecule tests.
-    - TOX_ENV=molecule
-
-install:
-  # Install tox in a virtualenv to ensure we have an up to date version.
-  - virtualenv venv
-  - venv/bin/pip install -U pip
-  - venv/bin/pip install tox
-
-script:
-  # Run the tox environment.
-  - venv/bin/tox -e ${TOX_ENV}
diff --git a/doc/source/development/testing.rst b/doc/source/development/testing.rst
index 9cdb7b8f7193e636d37f7d88f446e4ae2d767f38..38513f7c4fd666954e49d8c0d8486e569f1c4ea9 100644
--- a/doc/source/development/testing.rst
+++ b/doc/source/development/testing.rst
@@ -89,7 +89,7 @@ molecule
     Run Ansible tests for some Ansible roles using the molecule test framework.
 pep8
     Run style checks for all shell, python and documentation files.
-py27,py34
+py3
     Run python unit tests for kayobe python module.
 
 Writing Tests
diff --git a/requirements.txt b/requirements.txt
index 79e4c41b7171a2651729c1451db16a32fa62cca7..d400ad30541f540dcd3a7f18cda124a9597571fc 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,11 +1,6 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
 pbr>=2.0 # Apache-2.0
 ansible>=2.8.0,<2.10.0,!=2.8.9 # GPLv3
-cliff>=2.5.0,<2.15.0 # Apache
+cliff>=3.1.0 # Apache
 netaddr!=0.7.16,>=0.7.13 # BSD
 PyYAML>=3.10.0 # MIT
-setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,>=16.0 # PSF/ZPL
-selinux;python_version>='3' # MIT
+selinux # MIT
diff --git a/setup.cfg b/setup.cfg
index 02ef66126bc32843c124ecb991765d96dbf11b28..60d9a5cbd80aa621dacc7310f4fd8b8bd968959f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -6,6 +6,8 @@ description-file =
 author = OpenStack
 author-email = openstack-discuss@lists.openstack.org
 home-page = https://docs.openstack.org/kayobe/latest/
+python-requires = >=3.6
+license = Apache License, Version 2.0
 classifier =
     Environment :: OpenStack
     Intended Audience :: Information Technology
@@ -13,20 +15,17 @@ classifier =
     License :: OSI Approved :: Apache Software License
     Operating System :: POSIX :: Linux
     Programming Language :: Python
+    Programming Language :: Python :: Implementation :: CPython
+    Programming Language :: Python :: 3 :: Only
     Programming Language :: Python :: 3
     Programming Language :: Python :: 3.6
     Programming Language :: Python :: 3.7
 
-# In below section we have to include the roles directory explicitly
-# to Workaround PBR bug:
-#     source prefix replaced globally, see:
-#     https://bugs.launchpad.net/pbr/+bug/1810804
 [files]
 packages =
     kayobe
 data_files =
     share/kayobe/ansible = ansible/*
-    share/kayobe/ansible/roles = ansible/roles/*
     share/kayobe/doc = doc/*
     share/kayobe/etc_examples = etc/*
     share/kayobe = setup.cfg
diff --git a/setup.py b/setup.py
index 8577899d13a6f5e66db2169c784505468c2cf936..0ef354679c3026ebf3253a9efea056d014b3d93c 100644
--- a/setup.py
+++ b/setup.py
@@ -13,17 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
-# In python < 2.7.4, a lazy loading of package `pbr` will break
-# setuptools if some other modules registered functions in `atexit`.
-# solution from: http://bugs.python.org/issue15881#msg170215
-try:
-    import multiprocessing  # noqa
-except ImportError:
-    pass
-
 setuptools.setup(
     setup_requires=['pbr'],
     pbr=True)
diff --git a/tox.ini b/tox.ini
index a8519acfa4554af77f9c75e96ccbaaf16e3038b8..76c1f771c36b58edff1f3843e25c9a1eda29486c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -7,7 +7,6 @@ ignore_basepython_conflict = True
 [testenv]
 basepython = python3
 usedevelop = True
-install_command = pip install {opts} {packages}
 passenv =
     HOME
 whitelist_externals =