diff --git a/.ansible-core.metadata b/.ansible-core.metadata
new file mode 100644
index 0000000..7286dea
--- /dev/null
+++ b/.ansible-core.metadata
@@ -0,0 +1,4 @@
+c482edef8c65b0ebf62eb0eddab3c039ac1e4589 SOURCES/ansible-6c75cf5c83da044d1fd69bc444ce4de50d728d09.tar.gz
+d5b06047a8a5937c9433c8e0e88bcf2ccb6a4f84 SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
+f20e820c8fa08ff162ace90735a2a89c599f7166 SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+c17fd6000af4ccf32930c41e928fea1e38cb5d0a SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9ea2782
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+SOURCES/ansible-6c75cf5c83da044d1fd69bc444ce4de50d728d09.tar.gz
+SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
+SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
diff --git a/SOURCES/ansible-test-data-files.txt b/SOURCES/ansible-test-data-files.txt
new file mode 100644
index 0000000..9a7f880
--- /dev/null
+++ b/SOURCES/ansible-test-data-files.txt
@@ -0,0 +1 @@
+/usr/lib/python[0-9]+\.[0-9]+/site-packages/ansible_test/_data/.*
diff --git a/SPECS/ansible-core.spec b/SPECS/ansible-core.spec
new file mode 100644
index 0000000..f54d664
--- /dev/null
+++ b/SPECS/ansible-core.spec
@@ -0,0 +1,256 @@
+# We need this because we are no longer noarch, since our bundled deps might
+# conceivably need to compile arch-specific things. But we currently have no
+# useful debuginfo stuff.
+%global debug_package %{nil}
+
+# Disable shebang munging for specific paths.  These files are data files.
+# ansible-test munges the shebangs itself.
+%global __brp_mangle_shebangs_exclude_from_file %{SOURCE1}
+
+%global commitId 6c75cf5c83da044d1fd69bc444ce4de50d728d09
+%global python38_sitelib /usr/lib/python3.8/site-packages/
+
+# NOTE(pabelanger): Don't auto add pwsh as Requires for ansible-test. We do
+# not wish to package it.
+%global __requires_exclude ^/usr/bin/pwsh$
+
+# RHEL and Fedora add -s to the shebang line.  We do *not* use -s -E -S or -I
+# with ansible because it has many optional features which users need to
+# install libraries on their own to use.  For instance, paramiko for the
+# network connection plugins or winrm to talk to windows hosts.
+# Set this to nil to remove -s
+%define py_shbang_opts %{nil}
+%define py2_shbang_opts %{nil}
+%define py3_shbang_opts %{nil}
+
+%define vendor_path %{buildroot}%{python38_sitelib}/ansible/_vendor/
+%define vendor_pip /usr/bin/python3.8 -m pip install --no-deps -v --no-use-pep517 --no-binary :all: -t %{vendor_path}
+
+# These control which bundled dep versions we pin against
+%global packaging_version 20.4
+%global pyparsing_version 2.4.7
+%global straightplugin_version 1.4.1
+
+
+Name: ansible-core
+Summary: SSH-based configuration management, deployment, and task execution system
+Version: 2.12.2
+Release: 2%{?dist}
+ExcludeArch: i686
+
+Group: Development/Libraries
+License: GPLv3+
+Source0: ansible-%{commitId}.tar.gz
+Source1: ansible-test-data-files.txt
+
+# And bundled deps
+Source2: packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
+Source3: pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+
+# Deps to build man pages
+Source5: straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
+
+URL: http://ansible.com
+
+# We obsolete old ansible, and any version of ansible-base.
+Obsoletes: ansible < 2.10.0
+Obsoletes: ansible-base
+
+# ... and provide 'ansible' so that old packages still work without updated
+# spec files.
+# Provides: ansible
+
+# Bundled provides that are sprinkled throughout the codebase.
+Provides: bundled(python-backports-ssl_match_hostname) = 3.7.0.1
+Provides: bundled(python-distro) = 1.5.0
+Provides: bundled(python-selectors2) = 1.1.1
+Provides: bundled(python-six) = 1.13.0
+
+# Things we explicitly bundle via src rpm, and put in ansible._vendor
+Provides: bundled(python-packaging) = %{packaging_version}
+Provides: bundled(python-pyparsing) = %{pyparsing_version}
+Provides: bundled(python-straightplugin) = %{straightplugin_version}
+
+BuildRequires: python38-devel
+# BuildRequires: python38-docutils
+BuildRequires: python38-jinja2
+BuildRequires: python38-pip
+BuildRequires: python38-pyyaml
+BuildRequires: python38-resolvelib
+BuildRequires: python38-rpm-macros
+BuildRequires: python38-setuptools
+BuildRequires: python38-wheel
+
+Requires: git
+Requires: python38
+Requires: python38-jinja2
+Requires: python38-PyYAML
+Requires: python38-cryptography
+Requires: python38-resolvelib
+Requires: python38-six
+Requires: sshpass
+
+%description
+Ansible is a radically simple model-driven configuration management,
+multi-node deployment, and remote task execution system. Ansible works
+over SSH and does not require any software or daemons to be installed
+on remote nodes. Extension modules can be written in any language and
+are transferred to managed machines automatically.
+
+%package -n ansible-test
+Summary: Tool for testing ansible plugin and module code
+Requires: %{name} = %{version}-%{release}
+
+%description -n ansible-test
+Ansible is a radically simple model-driven configuration management,
+multi-node deployment, and remote task execution system. Ansible works
+over SSH and does not require any software or daemons to be installed
+on remote nodes. Extension modules can be written in any language and
+are transferred to managed machines automatically.
+
+This package installs the ansible-test command for testing modules and plugins
+developed for ansible.
+
+%prep
+%setup -q -T -b 2 -n packaging-ded06cedf6e20680eea0363fac894cb4a09e7831
+%setup -q -T -b 3 -n pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605
+%setup -q -T -b 5 -n straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed
+%setup -q -n ansible-%{commitId}
+
+# Fix all Python shebangs recursively in ansible-test
+# -p preserves timestamps
+# -n prevents creating ~backup files
+# -i specifies the interpreter for the shebang
+pathfix3.8.py -pni "%{__python3} %{py3_shbang_opts}" test/lib/ansible_test
+
+%build
+/usr/bin/python3.8 setup.py build
+
+%install
+/usr/bin/python3.8 setup.py install --root %{buildroot}
+
+# Handle bundled deps:
+%{vendor_pip} \
+  ../pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605/ \
+  ../packaging-ded06cedf6e20680eea0363fac894cb4a09e7831/
+
+# Create system directories that Ansible defines as default locations in
+# ansible/config/base.yml
+DATADIR_LOCATIONS='%{_datadir}/ansible/collections
+%{_datadir}/ansible/plugins/doc_fragments
+%{_datadir}/ansible/plugins/action
+%{_datadir}/ansible/plugins/become
+%{_datadir}/ansible/plugins/cache
+%{_datadir}/ansible/plugins/callback
+%{_datadir}/ansible/plugins/cliconf
+%{_datadir}/ansible/plugins/connection
+%{_datadir}/ansible/plugins/filter
+%{_datadir}/ansible/plugins/httpapi
+%{_datadir}/ansible/plugins/inventory
+%{_datadir}/ansible/plugins/lookup
+%{_datadir}/ansible/plugins/modules
+%{_datadir}/ansible/plugins/module_utils
+%{_datadir}/ansible/plugins/netconf
+%{_datadir}/ansible/roles
+%{_datadir}/ansible/plugins/strategy
+%{_datadir}/ansible/plugins/terminal
+%{_datadir}/ansible/plugins/test
+%{_datadir}/ansible/plugins/vars'
+
+UPSTREAM_DATADIR_LOCATIONS=$(grep -ri default lib/ansible/config/base.yml | tr ':' '\n' | grep '/usr/share/ansible')
+
+if [ "$SYSTEM_LOCATIONS" != "$UPSTREAM_SYSTEM_LOCATIONS" ] ; then
+	echo "The upstream Ansible datadir locations have changed.  Spec file needs to be updated"
+	exit 1
+fi
+
+mkdir -p %{buildroot}%{_datadir}/ansible/plugins/
+for location in $DATADIR_LOCATIONS ; do
+	mkdir %{buildroot}"$location"
+done
+mkdir -p %{buildroot}%{_sysconfdir}/ansible/
+mkdir -p %{buildroot}%{_sysconfdir}/ansible/roles/
+
+cp examples/hosts %{buildroot}%{_sysconfdir}/ansible/
+cp examples/ansible.cfg %{buildroot}%{_sysconfdir}/ansible/
+mkdir -p %{buildroot}/%{_mandir}/man1/
+## Build man pages
+#
+#mkdir /tmp/_vendor
+#/usr/bin/python3.8 -m pip install ../straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed -t /tmp/_vendor --no-build-isolation
+#
+## Remove plugins not needed, they bring in more dependencies
+#find hacking/build_library/build_ansible/command_plugins ! -name 'generate_man.py' -type f -exec rm -f {} +
+#
+#PYTHON=python3.8 PYTHONPATH=%{vendor_path}:/tmp/_vendor make docs
+#cp -v docs/man/man1/*.1 %{buildroot}/%{_mandir}/man1/
+#
+#cp -pr docs/docsite/rst .
+cp -p lib/ansible_core.egg-info/PKG-INFO .
+
+%files
+%defattr(-,root,root)
+%{_bindir}/ansible*
+%exclude %{_bindir}/ansible-test
+%config(noreplace) %{_sysconfdir}/ansible/
+%doc README.rst PKG-INFO COPYING
+# TODO(pabelanger): uncomment once we move back to tagged releases
+# %doc changelogs/CHANGELOG-v2.*.rst
+#%doc %{_mandir}/man1/ansible*
+%{_datadir}/ansible/
+%{python38_sitelib}/ansible*
+%exclude %{python38_sitelib}/ansible_test
+
+%files -n ansible-test
+%{_bindir}/ansible-test
+%{python38_sitelib}/ansible_test
+
+%changelog
+* Wed Feb 02 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.2-2
+- fix ansible tarball setup
+
+* Wed Feb 02 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.2-1
+- ansible-core 2.12.2 release
+- add gating and test files
+
+* Wed Jan 19 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.1-2
+- Remove Provides on ansible
+
+* Thu Dec 16 2021 Yanis Guenane <yguenane@redhat.com> - 2.12.1-1
+- ansible-core 2.12.1-1
+
+* Wed Jul 21 2021 Paul Belanger <pabelanger@redhat.com> - 2.11.3-2
+- Add git dependency for ansible-galaxy CLI command.
+
+* Tue Jul 20 2021 Yanis Guenane <yguenane@redhat.com> - 2.11.3-1
+- ansible-core 2.11.3-1
+
+* Fri Jul 02 2021 Satoe Imaishi <simaishi@redhat.com> - 2.11.2-2
+- Add man pages
+
+* Tue Jun 29 2021 Paul Belanger <pabelanger@redhat.com> - 2.11.2-1
+- ansible-core 2.11.2 released.
+- Drop bundled version of resolvelib in favor of
+  python38-resolvelib.
+
+* Wed Mar 31 2021 Rick Elrod <relrod@redhat.com> - 2.11.0b4-1
+- ansible-core 2.11.0 beta 4
+
+* Thu Mar 18 2021 Rick Elrod <relrod@redhat.com> - 2.11.0b2-3
+- Try adding a Provides for old ansible.
+
+* Thu Mar 18 2021 Rick Elrod <relrod@redhat.com> - 2.11.0b2-2
+- Try Obsoletes instead of Conflicts.
+
+* Thu Mar 18 2021 Rick Elrod <relrod@redhat.com> - 2.11.0b2-1
+- ansible-core 2.11.0 beta 2
+- Conflict with old ansible and ansible-base.
+
+* Thu Mar 11 2021 Rick Elrod <relrod@redhat.com> - 2.11.0b1-1
+- ansible-core 2.11.0 beta 1
+
+* Mon Nov 30 2020 Rick Elrod <relrod@redhat.com> - 2.11.0-1
+- ansible-core, beta
+
+* Wed Jun 10 2020 Rick Elrod <relrod@redhat.com> - 2.10.0-1
+- ansible-base, beta