diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..efda5ae
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+SOURCES/ansible-collection-ansible-posix-1.3.0.tar.gz
+SOURCES/ansible-collection-community-general-4.4.0.tar.gz
+SOURCES/rhc-worker-playbook-0.1.8.tar.gz
diff --git a/.rhc-worker-playbook.metadata b/.rhc-worker-playbook.metadata
new file mode 100644
index 0000000..be9935f
--- /dev/null
+++ b/.rhc-worker-playbook.metadata
@@ -0,0 +1,3 @@
+7027d309191f35d3dafb3fc37d9fe25b195ef769 SOURCES/ansible-collection-ansible-posix-1.3.0.tar.gz
+1f333c73866dd59f120a3576ab701555d0e9bdf5 SOURCES/ansible-collection-community-general-4.4.0.tar.gz
+e1db71388a14032b902941426a0ab0dda71b2f43 SOURCES/rhc-worker-playbook-0.1.8.tar.gz
diff --git a/SOURCES/0001-fix-Execute-playbook-asynchronously.patch b/SOURCES/0001-fix-Execute-playbook-asynchronously.patch
new file mode 100644
index 0000000..4c59b30
--- /dev/null
+++ b/SOURCES/0001-fix-Execute-playbook-asynchronously.patch
@@ -0,0 +1,49 @@
+From 332d28d1bb636a5dc8ff5ddf3da8359a9a78b297 Mon Sep 17 00:00:00 2001
+From: Link Dupont
+Date: Wed, 5 May 2021 14:10:49 -0400
+Subject: [PATCH] fix: Execute playbook asynchronously
+
+Run the playbook code in a coroutine that's scheduled onto a new event loop. Return a protobuf.Receipt message in the WorkerService Send implementation.
+---
+ rhc_worker_playbook/server.py | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/rhc_worker_playbook/server.py b/rhc_worker_playbook/server.py
+index 985ea98..8fa393f 100644
+--- a/rhc_worker_playbook/server.py
++++ b/rhc_worker_playbook/server.py
+@@ -16,6 +16,7 @@ import time
+ import json
+ import uuid
+ import atexit
++import asyncio
+ from subprocess import Popen, PIPE
+ from requests import Request
+ from concurrent import futures
+@@ -135,9 +136,13 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer):
+ '''
+ Act on messages sent to the WorkerService
+ '''
+- # we have received it
+- yggdrasil_pb2.Receipt()
+
++ loop = asyncio.new_event_loop()
++ loop.run_until_complete(self._run_data(request))
++
++ return yggdrasil_pb2.Receipt()
++
++ async def _run_data(self, request):
+ # load configuration
+ config = _loadConfig()
+
+@@ -256,7 +261,6 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer):
+ _log("Posting events...")
+ response = self.dispatcher.Send(returnedEvents)
+ _log("Post complete.")
+- return
+
+ def serve():
+ # load config to get directive
+--
+2.35.1
+
diff --git a/SPECS/rhc-worker-playbook.spec b/SPECS/rhc-worker-playbook.spec
new file mode 100644
index 0000000..340b74f
--- /dev/null
+++ b/SPECS/rhc-worker-playbook.spec
@@ -0,0 +1,146 @@
+%define debug_package %{nil}
+%define community_general_version 4.4.0
+%define ansible_posix_version 1.3.0
+
+Name: rhc-worker-playbook
+Version: 0.1.8
+Release: 1%{?dist}
+Summary: Python worker for Red Hat connector that launches Ansible Runner
+License: GPLv2+
+URL: https://github.com/redhatinsights/rhc-worker-playbook
+Source: rhc-worker-playbook-0.1.8.tar.gz
+Source1: https://github.com/ansible-collections/community.general/archive/%{community_general_version}/ansible-collection-community-general-%{community_general_version}.tar.gz
+Source2: https://github.com/ansible-collections/ansible.posix/archive/%{ansible_posix_version}/ansible-collection-ansible-posix-%{ansible_posix_version}.tar.gz
+
+# Fixed upstream https://github.com/RedHatInsights/rhc-worker-playbook/commit/332d28d1bb636a5dc8ff5ddf3da8359a9a78b297
+Patch0001: 0001-fix-Execute-playbook-asynchronously.patch
+
+%{?__python3:Requires: %{__python3}}
+Requires: insights-client
+Requires: python3dist(requests)
+Requires: python3dist(pyyaml)
+Requires: ansible-core
+BuildRequires: rhc
+BuildRequires: pkgconfig
+BuildRequires: python3-devel
+BuildRequires: python3dist(pip)
+BuildRequires: python3dist(wheel)
+BuildRequires: python3dist(setuptools)
+BuildRequires: openssl-devel
+BuildRequires: c-ares-devel
+BuildRequires: zlib-devel
+BuildRequires: python3dist(cython)
+BuildRequires: gcc
+BuildRequires: gcc-c++
+
+ExclusiveArch: x86_64 s390x ppc64 ppc64le
+
+%description
+Python-based worker for Red Hat connect, used to launch Ansible playbooks via Ansible Runner.
+
+%prep
+%setup -q -a1 -a2 -n %{name}-%{version}
+%patch0001 -p1
+pushd community.general-%{community_general_version}
+rm -vr .github .azure-pipelines
+rm -rvf tests/ hacking/
+find -type f ! -executable -name '*.py' -print -exec sed -i -e '1{\@^#!.*@d}' '{}' +
+find -type f -name '.gitignore' -print -delete
+popd
+
+pushd ansible.posix-%{ansible_posix_version}
+rm -vr tests/{integration,utils} .github changelogs/fragments/.keep {test-,}requirements.txt shippable.yml
+rm -vr .azure-pipelines
+rm -rvf tests/
+find -type f ! -executable -name '*.py' -print -exec sed -i -e '1{\@^#!.*@d}' '{}' +
+find -type f -name '.gitignore' -print -delete
+popd
+
+%build
+export GRPC_PYTHON_BUILD_WITH_CYTHON=True
+export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True
+export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=True
+export GRPC_PYTHON_BUILD_SYSTEM_CARES=True
+export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=True
+# TODO(gchamoul): Remove workaround
+# once https://bugzilla.redhat.com/show_bug.cgi?id=2056959 is fixed
+#%define rhc_config_dir $(pkg-config rhc --variable workerconfdir)
+%define rhc_config_dir /etc/rhc/workers
+
+%define _lto_cflags %{nil}
+%set_build_flags
+%{__make} PREFIX=%{_prefix} LIBDIR=%{_libdir} CONFIG_DIR=%{rhc_config_dir} PYTHON_PKGDIR=%{python3_sitelib} installed-lib-dir
+%{make_build} build
+
+# Building the Ansible Collections
+pushd community.general-%{community_general_version}
+tar -cf %{_tmppath}/community-general-%{community_general_version}.tar.gz .
+popd
+
+pushd ansible.posix-%{ansible_posix_version}
+tar -cf %{_tmppath}/ansible-posix-%{ansible_posix_version}.tar.gz .
+popd
+
+%install
+%{make_install} PREFIX=%{_prefix} LIBDIR=%{_libdir} CONFIG_DIR=%{rhc_config_dir} PYTHON_PKGDIR=%{python3_sitelib}
+
+# Installing the Ansible Collections
+mkdir -p %{buildroot}%{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/community/general
+mkdir -p %{buildroot}%{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/ansible/posix
+
+pushd %{buildroot}%{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/community/general
+tar -xf %{_tmppath}/community-general-%{community_general_version}.tar.gz
+popd
+
+pushd %{buildroot}%{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/ansible/posix
+tar -xf %{_tmppath}/ansible-posix-%{ansible_posix_version}.tar.gz
+popd
+
+# Creating the logs directory for ansible-runner
+mkdir -p %{buildroot}%{_localstatedir}/log/rhc-worker-playbook/ansible/
+
+
+%files
+%{_libexecdir}/rhc/rhc-worker-playbook.worker
+%{python3_sitelib}/rhc_worker_playbook/
+%{python3_sitelib}/rhc_worker_playbook*.egg-info/
+%{_libdir}/rhc-worker-playbook/
+%{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/
+%{_localstatedir}/log/rhc-worker-playbook/ansible/
+%config(noreplace) %{_sysconfdir}/rhc/workers/rhc-worker-playbook.toml
+
+%doc
+
+%changelog
+* Mon Feb 21 2022 Gaël Chamoulaud - 0.1.8-1
+- Patch to fix Execute Playbook Asynchronously (RHBZ#2056862)
+
+* Thu Feb 17 2022 Alba Hita - 0.1.8-0
+- Fix: Bump ansible-runner to 2.1.1 and dependencies in vendor (RHBZ#2053212)
+- Upload new rhc-worker-playbook-0.1.8.tar.gz source
+
+* Thu Feb 03 2022 Gaël Chamoulaud - 0.1.7-0
+- Add Ansible community general and ansible.posix Collections
+- New Upstream Version
+
+* Mon Nov 1 2021 Link Dupont - 0.1.6-3
+- Disable LTO due to RHBZ#1893533
+
+* Thu Sep 23 2021 Link Dupont - 0.1.6-2
+- Ensure build flags are exported to the build environment
+
+* Thu Aug 26 2021 Link Dupont - 0.1.6-1
+- New upstream version
+
+* Fri Aug 6 2021 Link Dupont - 0.1.5^0.9ef03b90.wtree.0663ne
+- New upstream version
+
+* Mon Apr 19 2021 Jeremy Crafts - 0.1.5-1
+- Changes to playbook validation logic
+- Enhancements for logging to rhcd
+- Fix for subprocess environment
+
+* Thu Mar 25 2021 Jeremy Crafts - 0.1.4-1
+- Enhancements to playbook validation
+- Fixes for regular execution status updates
+- Configuration fixes