diff --git a/.github/workflows/ansible.yml b/.github/workflows/ansible.yml
new file mode 100644
index 000000000..29c8d4fc1
--- /dev/null
+++ b/.github/workflows/ansible.yml
@@ -0,0 +1,16 @@
+name: Ansible Lint
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - name: Lint Ansible Playbook
+      uses: ansible/ansible-lint-action@master
+      with:
+        targets: |
+          playbooks/*
+          roles/*
+        args: "-r rules/"
diff --git a/.travis.yml b/.travis.yml
index 4956bffff..2ce81ce2b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,10 @@
-language: python
-python:
-  - 2.7
+rvm:
+  - "2.0.0"
 dist: bionic
-addons:
-  apt:
-    packages:
-      - ansible-lint
-      - ruby-bundler
 script:
   - |
     if git diff origin/master --name-only | grep -q "vagrant"; then
       cd vagrant
-      bundle install
+      bundle install --jobs=3 --retry=3
       bundle exec rake
     fi
-
-  - |
-    if git diff origin/master --name-only | grep -q "playbooks\|roles\|containers/roles"; then
-      ansible-lint -r rules/ playbooks/*
-      ansible-lint -r rules/ roles/*
-      ansible-lint -r rules/ containers/roles/*
-    fi