diff --git a/changelogs/fragments/471.yaml b/changelogs/fragments/471.yaml
new file mode 100644
index 00000000..456a427c
--- /dev/null
+++ b/changelogs/fragments/471.yaml
@@ -0,0 +1,7 @@
+---
+minor_changes:
+ - Add ``pyproject.toml`` to ansible sdist to use the
+ ``setuptools.build_meta`` `PEP 517 `__
+ backend. Tools that still call ``setup.py`` directly will work the same as
+ they did before
+ (https://github.com/ansible-community/antsibull/pull/471).
diff --git a/src/antsibull/build_ansible_commands.py b/src/antsibull/build_ansible_commands.py
index 9959d949..e4cc7b24 100644
--- a/src/antsibull/build_ansible_commands.py
+++ b/src/antsibull/build_ansible_commands.py
@@ -151,6 +151,10 @@ def copy_boilerplate_files(package_dir: str) -> None:
with open(os.path.join(package_dir, 'README.rst'), 'wb') as f:
f.write(readme)
+ pyproject_toml = get_antsibull_data('pyproject.toml')
+ with open(os.path.join(package_dir, 'pyproject.toml'), 'wb') as f:
+ f.write(pyproject_toml)
+
def write_manifest(package_dir: str,
release_notes: t.Optional[ReleaseNotes] = None,
diff --git a/src/antsibull/data/pyproject.toml b/src/antsibull/data/pyproject.toml
new file mode 100644
index 00000000..f6906b22
--- /dev/null
+++ b/src/antsibull/data/pyproject.toml
@@ -0,0 +1,7 @@
+# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or
+# https://www.gnu.org/licenses/gpl-3.0.txt)
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2022 Maxwell G
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"