diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 06:22:16 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 06:22:16 +0000 |
commit | 0c70278249c356e314434985d3a92b4105c88872 (patch) | |
tree | f7e16f44fb8fc7a54f84d9977711c87d9e435666 /ansible_collections/containers | |
parent | Adding debian version 10.0.1+dfsg-1. (diff) | |
download | ansible-0c70278249c356e314434985d3a92b4105c88872.tar.xz ansible-0c70278249c356e314434985d3a92b4105c88872.zip |
Merging upstream version 10.1.0+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/containers')
71 files changed, 5940 insertions, 1573 deletions
diff --git a/ansible_collections/containers/podman/CHANGELOG.rst b/ansible_collections/containers/podman/CHANGELOG.rst index 84fa3621b..59c7cc123 100644 --- a/ansible_collections/containers/podman/CHANGELOG.rst +++ b/ansible_collections/containers/podman/CHANGELOG.rst @@ -5,6 +5,93 @@ Ansible Podman modules and plugins Release Notes .. contents:: Topics +v1.15.2 +======= + +Release Summary +--------------- + +Inline Containerfile option for podman_image + +Minor Changes +------------- + +- Add option for inline Containerfile in podman_image + +v1.15.1 +======= + +Release Summary +--------------- + +Bugfixes for systemd generation + +Bugfixes +-------- + +- Fix idempotency for pods in case of systemd generation +- Fix idempotency for systemd generations + +v1.15.0 +======= + +Release Summary +--------------- + +Podman search module and bugfixes for Podman image + +Major Changes +------------- + +- Add podman search + +Bugfixes +-------- + +- Fix issue with pushing podman image to repo name and org + +New Modules +----------- + +- containers.podman.podman_search - Search for remote images using podman + +v1.14.0 +======= + +Release Summary +--------------- + +Idempotency redesign and a lot of new options + +Major Changes +------------- + +- Add mount and unmount for volumes +- Add multiple subnets for networks +- Add new options for podman_container +- Add new options to pod module +- Improve idempotency for networking in podman_container +- Redesign idempotency for Podman Pod module + +Minor Changes +------------- + +- Add autodiscovery for build context in podman_image +- Add docs, tests and more examples for podman_pod +- Add extra_args for podman_image push and pull +- Add idempotency for mounts and volumes in podman_container +- Add new functionality tests for podman_secret +- Add path and env options for podman_secret +- Add route, dns and ipam_driver to podman_network +- Create podman secret when skip_existing=True and it does not exist + +Bugfixes +-------- + +- Fix idempotency for pod with 0.0.0.0 +- Fix transports issues in podman_image +- fix(#747) set correct HealthCmd + v1.13.0 ======= diff --git a/ansible_collections/containers/podman/FILES.json b/ansible_collections/containers/podman/FILES.json index ebc8fb138..f5015daa5 100644 --- a/ansible_collections/containers/podman/FILES.json +++ b/ansible_collections/containers/podman/FILES.json @@ -8,6 +8,20 @@ "format": 1 }, { + "name": "README.md", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0b3c0bf86d855ce3b4341bf6f72a5ea3e6300c09ca88d793ca3b149175eaa30c", + "format": 1 + }, + { + "name": "CHANGELOG.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5ca0e2ce515d6d4a95053896aac7e644c6135e7aac6618a053c5af3912d5646a", + "format": 1 + }, + { "name": "docs", "ftype": "dir", "chksum_type": null, @@ -15,136 +29,143 @@ "format": 1 }, { - "name": "docs/_static", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "docs/podman_play_module.html", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "37b854782e2f442df7939135fd0de7f1bd11b7df93fa86b4b46d1c810d9fec04", "format": 1 }, { - "name": "docs/_static/pygments.css", + "name": "docs/podman_prune_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f6d5ca74e8fbc721d70c8db260ab4ac75b69316daa3854a4614d9f3b2ff0631", + "chksum_sha256": "753b3dabeac1e53df2e42e1940df972dc406d97364317358f1491f5a202e1dbc", "format": 1 }, { - "name": "docs/_static/minus.png", + "name": "docs/podman_containers_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "47e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc008", + "chksum_sha256": "99e13ff1d795cf549f7a74168db55a56041ded5fe530edcea23f7fcc9788ed20", "format": 1 }, { - "name": "docs/_static/documentation_options.js", + "name": "docs/podman_tag_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e2718b75af040caf95a8915192026ec541cc7ad4c73b0160b7c4c2f4564d7d4f", + "chksum_sha256": "8d7f93ba23f7bcf02b6803333685bd5265e4fe72b1e76b2f0fe0dfd9deb6794b", "format": 1 }, { - "name": "docs/_static/language_data.js", + "name": "docs/podman_login_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95b1d44e1ba5a3155d89f8427a3b2c981158f956bf48b9cdf0030265e8b7a609", + "chksum_sha256": "9c3bb198ce3a5722598a3a5bc33aa7f66d7c06bd9768646c34f3df071aae33d6", "format": 1 }, { - "name": "docs/_static/underscore-1.13.1.js", + "name": "docs/podman_save_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc10f799cd0f6b65f95c4012445497e5ba3cb9f51964a9468940b27bde98b487", + "chksum_sha256": "c99fa28fa3a30963799fd9c44c4c106bfe52776053e7d3c4722cfa63e64e4f52", "format": 1 }, { - "name": "docs/_static/jquery-3.6.0.js", + "name": "docs/search.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fe2bb5390a75e5d61e72c107cab528fc3c29a837d69aab7d200e1dbb5dcd239", + "chksum_sha256": "564edc064d26715602aa4c331924b56af296fe5a593f03b84dc0747c15e241c7", "format": 1 }, { - "name": "docs/_static/alabaster.css", + "name": "docs/podman_export_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13f494414f5bca3551442ddf4ad0e42e2403a8757304c1b9787b18ef539a2eac", + "chksum_sha256": "fb952b0a011de62c82f09264ef652563c6c8dce05d79e84b0509e0481dab514e", "format": 1 }, { - "name": "docs/_static/custom.css", + "name": "docs/podman_import_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "39f23a6561786e3cb4e33e4a96562a1305a8b74c0d45dc215a64018692cd5d4c", + "chksum_sha256": "8ce0f00fcc1856676065ec1d3b6ce0ca6413e9606b3785e6786a2dbfedbb02d1", "format": 1 }, { - "name": "docs/_static/underscore-1.3.1.js", + "name": "docs/.nojekyll", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f808f0aa32fbe90fb9c9c846917faff3fdd4e236c284b76c02dd33753dc90177", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "docs/_static/underscore.js", + "name": "docs/buildah_connection.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "218fb1c1fc72e9af6b866f430be2a67fa376392b4db2f4dbf32772671b6ae55c", + "chksum_sha256": "8a07dd0bd34f2076d2c0f20839eeca6fe9aec2af329e4c9bd0d874eaec5ff685", "format": 1 }, { - "name": "docs/_static/file.png", + "name": "docs/index.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e", + "chksum_sha256": "fea6b00dae1703b250bd9b6d4c512b90adb0a6cd935a9a0d4167ba653e2dc5f5", "format": 1 }, { - "name": "docs/_static/jquery-3.5.1.js", + "name": "docs/environment_variables.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37", + "chksum_sha256": "879bfbde687917cbafe3b2d1ede5979c327aee400372a741ceff8545162a4097", "format": 1 }, { - "name": "docs/_static/_sphinx_javascript_frameworks_compat.js", + "name": "docs/podman_container_exec_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f1e30341b31300bdc3af29ee4a64e0f40ed15492345387bb47542d9b9b4813c", + "chksum_sha256": "789c9263eebe83eb2671b0c5a1abb1fb551b0deb8542a671b106b755b47fce01", "format": 1 }, { - "name": "docs/_static/basic.css", + "name": "docs/podman_volume_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9980fa28cbdcd8d6b437edcb1a911e0e2a788d7fa0dfe6ea25a302d824a3094d", + "chksum_sha256": "2c69f055bb49ddb2ba3e0b2027baf10510ef61f08d0c8dcf69d632fe5a26f815", "format": 1 }, { - "name": "docs/_static/doctools.js", + "name": "docs/podman_secret_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3d62b81f63b0418a39a8f5a323203d88ddafc8c5226f86d311970025d86d7b6c", + "chksum_sha256": "f83fbfefa21682bc4c4b3f312fbbc5e181f74fd3bb9ad484bf025d042b4f47e1", "format": 1 }, { - "name": "docs/_static/plus.png", + "name": "docs/podman_search_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63", + "chksum_sha256": "fea1d458300947d1b73f1fa14381939d69e2422825bd79ef63d00be4bc98aaef", "format": 1 }, { - "name": "docs/_static/jquery.js", + "name": "docs/_static", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "docs/_static/jquery-3.6.0.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ff1523fb7389539c84c65aba19260648793bb4f5e29329d2ee8804bc37a3fe6e", + "chksum_sha256": "1fe2bb5390a75e5d61e72c107cab528fc3c29a837d69aab7d200e1dbb5dcd239", "format": 1 }, { - "name": "docs/_static/antsibull-minimal.css", + "name": "docs/_static/_sphinx_javascript_frameworks_compat.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dd914facd58095fed7317de336bdf32ac00ff3de539432463df397d2ae15a696", + "chksum_sha256": "2f1e30341b31300bdc3af29ee4a64e0f40ed15492345387bb47542d9b9b4813c", "format": 1 }, { @@ -155,262 +176,283 @@ "format": 1 }, { - "name": "docs/_static/searchtools.js", + "name": "docs/_static/underscore.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5b9facbcb36e5e15e409e2db42439fb8cbc1e43275e337a645bb3c76c3191b93", + "chksum_sha256": "218fb1c1fc72e9af6b866f430be2a67fa376392b4db2f4dbf32772671b6ae55c", "format": 1 }, { - "name": "docs/podman_secret_info_module.html", + "name": "docs/_static/basic.css", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afbe8b5e852d8ac13eda2acb5a4424bbe50e04775b182de9c73acdbd4e4572c3", + "chksum_sha256": "9980fa28cbdcd8d6b437edcb1a911e0e2a788d7fa0dfe6ea25a302d824a3094d", "format": 1 }, { - "name": "docs/podman_prune_module.html", + "name": "docs/_static/pygments.css", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "52583bf414f29d8a289f7844bb87e870e438eb4c680fe6efe3b84ac9b24919cf", + "chksum_sha256": "6f6d5ca74e8fbc721d70c8db260ab4ac75b69316daa3854a4614d9f3b2ff0631", "format": 1 }, { - "name": "docs/podman_container_exec_module.html", + "name": "docs/_static/custom.css", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3c7a400e7e16df1d1904f5dad17d5358e90a95e8ae611072a7cc4b2fd19b0f70", + "chksum_sha256": "39f23a6561786e3cb4e33e4a96562a1305a8b74c0d45dc215a64018692cd5d4c", "format": 1 }, { - "name": "docs/podman_unshare_become.html", + "name": "docs/_static/underscore-1.3.1.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6caccafc43ebbbeb0c043d2e8a2fa2c8736166a0f94a117514eed3be946685ec", + "chksum_sha256": "f808f0aa32fbe90fb9c9c846917faff3fdd4e236c284b76c02dd33753dc90177", "format": 1 }, { - "name": "docs/objects.inv", + "name": "docs/_static/doctools.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e8f308bf4441db6759e6d8a1b54535cf24e77f1ecee4d66caf6b5582f79efa7", + "chksum_sha256": "3d62b81f63b0418a39a8f5a323203d88ddafc8c5226f86d311970025d86d7b6c", "format": 1 }, { - "name": "docs/podman_image_info_module.html", + "name": "docs/_static/minus.png", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e8b61d10e778183647fd7b720d030addce99763e759ad1eb7daa14ece8b9913b", + "chksum_sha256": "47e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc008", "format": 1 }, { - "name": "docs/podman_secret_module.html", + "name": "docs/_static/jquery-3.5.1.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "62e01ebdfbc9e2a163c747e013c5aa3ec7219b3bb260147a929080d445f0dbbd", + "chksum_sha256": "416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37", "format": 1 }, { - "name": "docs/podman_network_info_module.html", + "name": "docs/_static/documentation_options.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b5763fa0a99790ef332056f61dc499b455de1a37349d006289427922aae21395", + "chksum_sha256": "e2718b75af040caf95a8915192026ec541cc7ad4c73b0160b7c4c2f4564d7d4f", "format": 1 }, { - "name": "docs/podman_image_module.html", + "name": "docs/_static/language_data.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b6b1b68675c355b8306fae41e7a399d1c203028b18aab10e2515c710f4a9a13", + "chksum_sha256": "95b1d44e1ba5a3155d89f8427a3b2c981158f956bf48b9cdf0030265e8b7a609", "format": 1 }, { - "name": "docs/podman_volume_module.html", + "name": "docs/_static/jquery.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9eb4b8acf3aecbd24f06e73c0b9d52370377032f5884327f4bb7de0483d2db2f", + "chksum_sha256": "ff1523fb7389539c84c65aba19260648793bb4f5e29329d2ee8804bc37a3fe6e", "format": 1 }, { - "name": "docs/podman_load_module.html", + "name": "docs/_static/underscore-1.13.1.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4532a90f7cba943ba79959f0cd05af85c790bdd51f30888de95861e60ab77bd0", + "chksum_sha256": "cc10f799cd0f6b65f95c4012445497e5ba3cb9f51964a9468940b27bde98b487", "format": 1 }, { - "name": "docs/podman_runlabel_module.html", + "name": "docs/_static/plus.png", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4089cfd62f3250303175edaac0e1b9ed017e7dcfa8ebd11c334862e5e4be6324", + "chksum_sha256": "54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63", "format": 1 }, { - "name": "docs/podman_play_module.html", + "name": "docs/_static/file.png", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ef65885a17acc3bfcabad46054472594f0fb7cc3968e8d25746bff6bf99722da", + "chksum_sha256": "5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e", "format": 1 }, { - "name": "docs/podman_container_module.html", + "name": "docs/_static/searchtools.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "538fd60bc9d58b266c163ed7ac7bcf3305dc787935222f7f2c4c9e112a4cf30b", + "chksum_sha256": "5b9facbcb36e5e15e409e2db42439fb8cbc1e43275e337a645bb3c76c3191b93", "format": 1 }, { - "name": "docs/podman_containers_module.html", + "name": "docs/_static/antsibull-minimal.css", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c929fa197c9e07d10d05101e6472dcdef409ced23a50da5918ec4841a4e50d08", + "chksum_sha256": "dd914facd58095fed7317de336bdf32ac00ff3de539432463df397d2ae15a696", "format": 1 }, { - "name": "docs/index.html", + "name": "docs/_static/alabaster.css", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a05292a1b3cd446a6ea3667d7519b521dc50c7efc04fd3b1af4d42dc219fe37d", + "chksum_sha256": "13f494414f5bca3551442ddf4ad0e42e2403a8757304c1b9787b18ef539a2eac", "format": 1 }, { - "name": "docs/podman_logout_module.html", + "name": "docs/objects.inv", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4d81428e5df90da2490fd620e3af3b1a1ddd347b086cee77dff057a580267002", + "chksum_sha256": "15cfb3114360d1921c6672d367731f86ad4c3fb0e5f87fc39eace64bdd129bff", "format": 1 }, { - "name": "docs/podman_save_module.html", + "name": "docs/podman_network_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5cf2070ca153d3bf60ea9e0440ffb1b72b847e32565a3fd8f953ca7de24a9586", + "chksum_sha256": "7c727e9c5434d145285aa871e47e8ca43e1cbe0a6a19c3f19f05fc6290e3d2bb", "format": 1 }, { - "name": "docs/genindex.html", + "name": "docs/podman_container_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "267654c6dfb8d96914725b0bd774e09c72dfdcfb065ae073f9fc732b01b543d0", + "chksum_sha256": "b27a42b534e504a4c46f59406f9301696a9c030170770f1c50589bd4a13f7a99", "format": 1 }, { - "name": "docs/podman_network_module.html", + "name": "docs/podman_volume_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "367a0a1343aa808bb256561200464764dc2b165271d028b1508d95b6b7251410", + "chksum_sha256": "91eb2bf2c0703276d058ee4d6a5216d59390f6ef6d92bb30bec545f0b38827e8", "format": 1 }, { - "name": "docs/buildah_connection.html", + "name": "docs/podman_network_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a2f915dd35461f1a8d9806999382c0976f9b1fe03e2fe7b3e1973e20a46157b1", + "chksum_sha256": "a6ab63e31ee548cfc0bf8523188b74ba331e8571f1306c27efb0d7eced311ea5", "format": 1 }, { "name": "docs/searchindex.js", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "668d68ce702cf98c3d9cbc91d08d64a1fda5060257ad8393f99b06fe0de1d9a7", + "chksum_sha256": "b8b751323801bbc009888980bb60145a262bfcd6ccb875b79101b64d92eb9741", "format": 1 }, { - "name": "docs/podman_container_info_module.html", + "name": "docs/podman_secret_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13dc267968457dd4b2271a4a03b497d80354ed3aadb843c4ce0a8829f7ae99e5", + "chksum_sha256": "18339efa195ab8bd4d43ecfb1f542297225b47cc1f7f2d7b84512f5856aa8f32", "format": 1 }, { - "name": "docs/podman_tag_module.html", + "name": "docs/podman_pod_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "176e3fedadbfe0c2bd801ac7b2ad9d90027b76d33a2cb28a2fef572e4e7846fc", + "chksum_sha256": "4459bf684e8f0fa3e6463005f31da4428cd749ca4f0dda727b9e8b8df6f7aecc", "format": 1 }, { - "name": "docs/environment_variables.html", + "name": "docs/podman_image_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "754ab0bc744fd2f640f433d8ec17c4520c35bf5985108501b479b3653fe3c0d0", + "chksum_sha256": "c8097aeb6c5f7a8ca4889635fdb53cb0835446368e2efe76cd7c5c2905781dfa", "format": 1 }, { - "name": "docs/podman_volume_info_module.html", + "name": "docs/podman_pod_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b8a2a6fad503cd6adb9160e77bb2f31118bf0daa6d977fa03759e28eb6c3f131", + "chksum_sha256": "cedeb049f61d24452f879b314f9ec6418c4bc91058f2750346a2dd94021b9b33", "format": 1 }, { - "name": "docs/search.html", + "name": "docs/podman_container_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "586d63e6da7c3da64b93d96964e37b0355b62674868eccb23e3478abe568727e", + "chksum_sha256": "cb0a2b1a2c5802a025c2ae2e4607bd62f8b3db5389c6356906308dd771b7f4f3", "format": 1 }, { - "name": "docs/podman_login_info_module.html", + "name": "docs/podman_login_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "94a726afed1d890e8b184d3084ca0c0070313a067b90dfdbc542b55ecdeea1ca", + "chksum_sha256": "c9d0954f1bebc9840a9f93a63c766c31685b0163892a1f3b6f392d4a21d16c82", "format": 1 }, { - "name": "docs/podman_login_module.html", + "name": "docs/podman_generate_systemd_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c66423dcc7cc34aed5e2d110a4a874fbd6540cc6f1612e86c33406c919bcf79c", + "chksum_sha256": "ed3114ebe0718d51cde4b7891a26446848ad8dac47d8aa523969444a8810c109", "format": 1 }, { - "name": "docs/podman_pod_info_module.html", + "name": "docs/podman_load_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a28ac5a8b511831dfa23f72c1f9bb344ef8ba447b35fa5324abb75d01c48c229", + "chksum_sha256": "e9b058cd610fce57ba8e6a8249ea01d26bdd0840f0b439ffbb981a8bb0c398cc", "format": 1 }, { - "name": "docs/podman_export_module.html", + "name": "docs/podman_runlabel_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "678fc32756bc2c3bfe8666d9b32144bcee1371e213e1885abea262bee7da0b86", + "chksum_sha256": "b278009a712accc1d299bd5fd3facdeb97d730c21c4da86f81b3849b8df6173b", "format": 1 }, { - "name": "docs/podman_import_module.html", + "name": "docs/podman_logout_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "efe1e379667f9f72c2d6b68dac89fce6a21b1c2bed58e6159a8da49fa343c7c0", + "chksum_sha256": "b268659490b3f6ed9d81c2702900932fa1ffe668713b40f37de424f26400c33a", "format": 1 }, { - "name": "docs/podman_generate_systemd_module.html", + "name": "docs/genindex.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a39b726dd24891ea2baed0fa82f0d6441a8de98ec924a34f1429d8f3b5c0db90", + "chksum_sha256": "07c7c57566f1a019de33dc9d9cc748814bacdde600e87776e86f84c43d0df78c", "format": 1 }, { - "name": "docs/podman_pod_module.html", + "name": "docs/podman_connection.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8df83296245cffb0523875e8045091ef06d9052f1c0193d48c4e4f6fb43ff3fb", + "chksum_sha256": "d7fd9142e3e6e3d968ab802c054f71039b28f6ade5ae9f63ec2134aa18a5abaa", "format": 1 }, { - "name": "docs/.nojekyll", + "name": "docs/podman_image_info_module.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "ebd8ebec750431a9e266d29e3ec3df339f0fdc78ac18f7bf115cac5206a0cf4d", "format": 1 }, { - "name": "docs/podman_connection.html", + "name": "docs/podman_unshare_become.html", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "163a4dd0ca2c99c1d58fe2e2400f9c4b3b431feb5913408185a6d175ad5f23e7", + "chksum_sha256": "c605d51a6585bea6690be038bc9b60f23da5c1622a4a5612f2afadb189a30e1e", + "format": 1 + }, + { + "name": "changelogs", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "changelogs/config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "72cc16b684890f4595ab75ffdd6f80f5ae19bc84cbb2d82606bc840eb7842209", + "format": 1 + }, + { + "name": "changelogs/changelog.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5e8b8d66f8f6e186308dde34bfd8c70f85887e338ace88337fa02c3b95826af6", "format": 1 }, { @@ -421,31 +463,31 @@ "format": 1 }, { - "name": "ansible-collection-containers-podman.spec", + "name": "CODE-OF-CONDUCT.md", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "78cf0e2fef0e96de69fd18ab38b358a03a22a5ce2e0ecafbd149407d6bcafb47", + "chksum_sha256": "5b42ff686c8d61fc9879d2512a9fa01f8810a7274318e7952ad3322eeea02f11", "format": 1 }, { - "name": "setup.py", + "name": "COPYING", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "85ef52c56819164efc5178d25aa03a432cdb8431ad0c99255802ce19a1719602", + "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986", "format": 1 }, { - "name": "README.md", + "name": "galaxy.yml.in", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0b3c0bf86d855ce3b4341bf6f72a5ea3e6300c09ca88d793ca3b149175eaa30c", + "chksum_sha256": "ba21f50b97b7f801dd811f96d4941327fccab34b13311e9bfcc5facfeec16999", "format": 1 }, { - "name": "CODE-OF-CONDUCT.md", + "name": "ansible-collection-containers-podman.spec", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5b42ff686c8d61fc9879d2512a9fa01f8810a7274318e7952ad3322eeea02f11", + "chksum_sha256": "78cf0e2fef0e96de69fd18ab38b358a03a22a5ce2e0ecafbd149407d6bcafb47", "format": 1 }, { @@ -456,10 +498,38 @@ "format": 1 }, { - "name": "COPYING", + "name": "meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "meta/runtime.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986", + "chksum_sha256": "f07aa47b7583a6a8420798081029b8cdfb09cbf5564acff6f49b6c3237102618", + "format": 1 + }, + { + "name": "setup.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "df77e31936daa4f2509685b9442e8518931651064d466d9f6e0b597ebf92d6cd", + "format": 1 + }, + { + "name": "setup.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "85ef52c56819164efc5178d25aa03a432cdb8431ad0c99255802ce19a1719602", + "format": 1 + }, + { + "name": "test-requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9b72b7289eba420f51eb614c54f609181bb26e96caef2abf06c02339a77d2e08", "format": 1 }, { @@ -477,178 +547,178 @@ "format": 1 }, { - "name": "plugins/connection/buildah.py", + "name": "plugins/connection/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2dd2825640c5a1d888fe78dcde28734278e8329dc69af136c70b1bb0fb308208", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/connection/__init__.py", + "name": "plugins/connection/podman.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "fd66ec667402f515bab568f0b6b0f12bde1d122ac58ba86d722c97b12364b3ce", "format": 1 }, { - "name": "plugins/connection/podman.py", + "name": "plugins/connection/buildah.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fd66ec667402f515bab568f0b6b0f12bde1d122ac58ba86d722c97b12364b3ce", + "chksum_sha256": "2dd2825640c5a1d888fe78dcde28734278e8329dc69af136c70b1bb0fb308208", "format": 1 }, { - "name": "plugins/modules", + "name": "plugins/module_utils", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/modules/podman_generate_systemd.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "262b7b1263967adfa45d98192ac38169e51026db3b60eac7b365dc81bbd7b784", + "name": "plugins/module_utils/podman", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/modules/podman_login_info.py", + "name": "plugins/module_utils/podman/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e8f615071a379d21b8f012a60c24036c4812239faf8e6aea2be6e5ca21bbcc4f", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/podman_export.py", + "name": "plugins/module_utils/podman/podman_pod_lib.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "48a73c06e5fe4b1f1d4cd70262d32559a13e73eda7012ea5c074fdbabbc2470a", + "chksum_sha256": "2ef09fa47a01c25fd211af52b995af2890af2d8936cc48c92a6504c14f7110f6", "format": 1 }, { - "name": "plugins/modules/podman_network_info.py", + "name": "plugins/module_utils/podman/quadlet.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9beb6e0c733ca304f38f95116dfd89569df21a68428039ef59ec9650314c5222", + "chksum_sha256": "303760220f493bef6b31dd3c04037c8cd85983c02e467e7602d48907b538e6db", "format": 1 }, { - "name": "plugins/modules/podman_image_info.py", + "name": "plugins/module_utils/podman/common.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "30d4db967b76884039d8ccaaf99f098e86b85efd9bef6bc0ceea4b8292905e6b", + "chksum_sha256": "bdc5d5dea059a7973e77768d29bd985be5ca111e906daf0634b190a4cc25019b", "format": 1 }, { - "name": "plugins/modules/podman_container_info.py", + "name": "plugins/module_utils/podman/podman_container_lib.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0ccb2118efb225624f13e01c499eec274d0d864fd151cca94e0128e994d4b5e", + "chksum_sha256": "cf8a413c68acb6f67119215646d47c17f29d0f1797d0140ef5d3b1c1c6440919", "format": 1 }, { - "name": "plugins/modules/podman_pod.py", + "name": "plugins/module_utils/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "32d5458b844ee1798d4abdc5384dc9b1056bd3a3585e6e38b48bfd3bd0ea43f5", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/podman_container.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ada302bbc6c4378e586edc7f0e2c0d9e78b161f325b7d886bfa9ee4deeb41882", + "name": "plugins/become", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/modules/podman_prune.py", + "name": "plugins/become/podman_unshare.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "214aa5244363a5d1e8423c82a770e5c02f7dfc331b8756607a567995e6d6ec50", + "chksum_sha256": "2dab878a68742976acd46a1310a37e9e0777b1953f86ee31dd9e0a29e9dfc3f3", "format": 1 }, { - "name": "plugins/modules/podman_secret.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6b19a2f4453349e74339f952ca4d86512b55e792c3ed8d991ec7a681ec1de850", + "name": "plugins/modules", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/modules/podman_tag.py", + "name": "plugins/modules/podman_network.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f748d6640b2cd18ac2caaf0a9d74917c1f139649df48dd514a11d8a1e7abc7cf", + "chksum_sha256": "6b283630c55a99cd1092641455e47355ddd7eee92003e6749452c9637e57c53d", "format": 1 }, { - "name": "plugins/modules/__init__.py", + "name": "plugins/modules/podman_image.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "b9cdd5378b676ee4395117d2835b59ddf1b97c33192e0eed36bd550162df47e9", "format": 1 }, { - "name": "plugins/modules/podman_logout.py", + "name": "plugins/modules/podman_network_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7cc7da9cf123ffb9180e98f2fe5704f628831d44014efd25c48cedd1c28a9b7c", + "chksum_sha256": "9beb6e0c733ca304f38f95116dfd89569df21a68428039ef59ec9650314c5222", "format": 1 }, { - "name": "plugins/modules/podman_load.py", + "name": "plugins/modules/podman_secret_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "96694bda39431f44186d599db567446d72debdf52a4a5c51f5fd66fa515229fc", + "chksum_sha256": "d6254c8325c6ff5fffb632062f7401d8a1a94d5f1786691e88bee07fe26734f9", "format": 1 }, { - "name": "plugins/modules/podman_save.py", + "name": "plugins/modules/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ddb55cc96d2a174a1f2e61fcd22a435b11394d53199bd2afeca374139a43be2c", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/podman_runlabel.py", + "name": "plugins/modules/podman_save.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3e5ca7f03d9703edab8219fac8d24bdecd88a1da007ace8985bb12e6ddd7c4da", + "chksum_sha256": "ddb55cc96d2a174a1f2e61fcd22a435b11394d53199bd2afeca374139a43be2c", "format": 1 }, { - "name": "plugins/modules/podman_pod_info.py", + "name": "plugins/modules/podman_container.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dae42675e5739995587997d9d2475219339f222053a99a121f28270444f717b9", + "chksum_sha256": "27f57a836884bcbabb4be6c6310ee369c2a2c1b072adb42df5305fbaabac6265", "format": 1 }, { - "name": "plugins/modules/podman_container_exec.py", + "name": "plugins/modules/podman_container_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "936c9c3ff873c18d2283dd352e6dbaaf46c228678db474dd88eb9df1e824d833", + "chksum_sha256": "c0ccb2118efb225624f13e01c499eec274d0d864fd151cca94e0128e994d4b5e", "format": 1 }, { - "name": "plugins/modules/podman_login.py", + "name": "plugins/modules/podman_search.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1414953f8525bcfa294fb57d70565a02ede619e29ef256d88c34bdb6b2712fb3", + "chksum_sha256": "3726a722b4d8a583b96d80e7ac2506dc1e4a5e73e41be06c0053257d1fc0273d", "format": 1 }, { - "name": "plugins/modules/podman_play.py", + "name": "plugins/modules/podman_prune.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fef01d23b5083bd5687f63d23e3e692fe0230f73e9a59da523fd8ce8be3509d", + "chksum_sha256": "214aa5244363a5d1e8423c82a770e5c02f7dfc331b8756607a567995e6d6ec50", "format": 1 }, { - "name": "plugins/modules/podman_containers.py", + "name": "plugins/modules/podman_secret.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "166b573ae344ccf93b2e33703fc8d8eeb1cd5e251eba40a95ba037cad4716b7a", + "chksum_sha256": "c76daac7a399f6a0881fdfdf1370981ebf313c1065707bb3492d6a092a1e61e1", "format": 1 }, { @@ -659,318 +729,283 @@ "format": 1 }, { - "name": "plugins/modules/podman_volume_info.py", + "name": "plugins/modules/podman_login.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eb8cf9d38d438d24589d547458f4c0ba8341f687eb8a1ded30de1fc0b8933c83", + "chksum_sha256": "1414953f8525bcfa294fb57d70565a02ede619e29ef256d88c34bdb6b2712fb3", "format": 1 }, { - "name": "plugins/modules/podman_secret_info.py", + "name": "plugins/modules/podman_export.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d6254c8325c6ff5fffb632062f7401d8a1a94d5f1786691e88bee07fe26734f9", + "chksum_sha256": "48a73c06e5fe4b1f1d4cd70262d32559a13e73eda7012ea5c074fdbabbc2470a", "format": 1 }, { - "name": "plugins/modules/podman_network.py", + "name": "plugins/modules/podman_tag.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "28e23bfd5e1a689ec64ecd78dc5c2ade91064cc8db4523e2a3c84b3f0a527f09", + "chksum_sha256": "f748d6640b2cd18ac2caaf0a9d74917c1f139649df48dd514a11d8a1e7abc7cf", "format": 1 }, { - "name": "plugins/modules/podman_volume.py", + "name": "plugins/modules/podman_login_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b6807a2c1cbb53a163eb761017d9cc4af0e22a7b151c78e73be0d1cdf6822d61", + "chksum_sha256": "e8f615071a379d21b8f012a60c24036c4812239faf8e6aea2be6e5ca21bbcc4f", "format": 1 }, { - "name": "plugins/modules/podman_image.py", + "name": "plugins/modules/podman_logout.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "61096d944871085194097913b73ad99565cb445245366fa19067f3a279e6fe56", - "format": 1 - }, - { - "name": "plugins/module_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "plugins/module_utils/podman", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "7cc7da9cf123ffb9180e98f2fe5704f628831d44014efd25c48cedd1c28a9b7c", "format": 1 }, { - "name": "plugins/module_utils/podman/podman_pod_lib.py", + "name": "plugins/modules/podman_container_exec.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0c5f4b77c737bc856aef858fe0515bcc2351dec0b1beacff3772a441a280d2fe", + "chksum_sha256": "936c9c3ff873c18d2283dd352e6dbaaf46c228678db474dd88eb9df1e824d833", "format": 1 }, { - "name": "plugins/module_utils/podman/quadlet.py", + "name": "plugins/modules/podman_containers.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5574a455e924ea0eb4d8dd50cb0e04d86ee0ad3507826626be66bec766863c60", + "chksum_sha256": "166b573ae344ccf93b2e33703fc8d8eeb1cd5e251eba40a95ba037cad4716b7a", "format": 1 }, { - "name": "plugins/module_utils/podman/common.py", + "name": "plugins/modules/podman_generate_systemd.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0faf94fa1606dc1a67c73def618c0e4c366ef60ff26723d1613c1f157cc5bb32", + "chksum_sha256": "262b7b1263967adfa45d98192ac38169e51026db3b60eac7b365dc81bbd7b784", "format": 1 }, { - "name": "plugins/module_utils/podman/__init__.py", + "name": "plugins/modules/podman_load.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "96694bda39431f44186d599db567446d72debdf52a4a5c51f5fd66fa515229fc", "format": 1 }, { - "name": "plugins/module_utils/podman/podman_container_lib.py", + "name": "plugins/modules/podman_volume_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a80171364990a53ad52201232c9bee988d2f02a91f0883e862c533a06b5730a", + "chksum_sha256": "eb8cf9d38d438d24589d547458f4c0ba8341f687eb8a1ded30de1fc0b8933c83", "format": 1 }, { - "name": "plugins/module_utils/__init__.py", + "name": "plugins/modules/podman_pod_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "dae42675e5739995587997d9d2475219339f222053a99a121f28270444f717b9", "format": 1 }, { - "name": "plugins/become", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/modules/podman_runlabel.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3e5ca7f03d9703edab8219fac8d24bdecd88a1da007ace8985bb12e6ddd7c4da", "format": 1 }, { - "name": "plugins/become/podman_unshare.py", + "name": "plugins/modules/podman_play.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2dab878a68742976acd46a1310a37e9e0777b1953f86ee31dd9e0a29e9dfc3f3", + "chksum_sha256": "1fef01d23b5083bd5687f63d23e3e692fe0230f73e9a59da523fd8ce8be3509d", "format": 1 }, { - "name": "meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/modules/podman_image_info.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "30d4db967b76884039d8ccaaf99f098e86b85efd9bef6bc0ceea4b8292905e6b", "format": 1 }, { - "name": "meta/runtime.yml", + "name": "plugins/modules/podman_pod.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f07aa47b7583a6a8420798081029b8cdfb09cbf5564acff6f49b6c3237102618", + "chksum_sha256": "9f0612814899a80c4797f81bb66e08efae400b77e4aac4bb212f3b204d4586a3", "format": 1 }, { - "name": "setup.cfg", + "name": "plugins/modules/podman_volume.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "df77e31936daa4f2509685b9442e8518931651064d466d9f6e0b597ebf92d6cd", + "chksum_sha256": "79e029a8c9ebf1985f1a371351a10df60a70c36448ef7bb38cbdf1cb18e09124", "format": 1 }, { - "name": "changelogs", + "name": "tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "changelogs/config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "72cc16b684890f4595ab75ffdd6f80f5ae19bc84cbb2d82606bc840eb7842209", + "name": "tests/integration", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "changelogs/changelog.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7a25ebd33b1475eaf97acf3e5ba1b50461aabd200f501a6130f0aae1cc2e2e74", + "name": "tests/integration/targets", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "galaxy.yml.in", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ba21f50b97b7f801dd811f96d4941327fccab34b13311e9bfcc5facfeec16999", + "name": "tests/integration/targets/podman_load", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "CHANGELOG.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "37440385853bd43f5b71ba017515bd1c7c68ac45c0429cfaae320b3661c75de1", + "name": "tests/integration/targets/podman_load/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "test-requirements.txt", + "name": "tests/integration/targets/podman_load/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b72b7289eba420f51eb614c54f609181bb26e96caef2abf06c02339a77d2e08", + "chksum_sha256": "078d5ae2eb9bf74046e34c6e7c003e87bb6e08f1a6fd49fcf5d6bb2174bae393", "format": 1 }, { - "name": "tests", + "name": "tests/integration/targets/podman_play", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/sanity", + "name": "tests/integration/targets/podman_play/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/sanity/ignore-2.12.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "name": "tests/integration/targets/podman_play/tasks/files", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/sanity/ignore-2.9.txt", + "name": "tests/integration/targets/podman_play/tasks/files/play1.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "1031804932a82f741e8cddaa397e73554e4784a790a3d4493d1b5c8f5f6bbf7e", "format": 1 }, { - "name": "tests/sanity/ignore-2.15.txt", + "name": "tests/integration/targets/podman_play/tasks/files/play-root1.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "049f1ad67c57e019423f28c77ca8cec13e714ae8727fedfde71792ec56131344", "format": 1 }, { - "name": "tests/sanity/ignore-2.13.txt", + "name": "tests/integration/targets/podman_play/tasks/files/kube-buil-test.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "c813ffc1f16f8324acbbaad0cf5ad7ee00e0ebd47f314b9ad74f24fd9e2177b0", "format": 1 }, { - "name": "tests/sanity/ignore-2.17.txt", + "name": "tests/integration/targets/podman_play/tasks/files/play3.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "c92c31b3ad0cd9992a6a9e391d07d69b2b9f3cc39b410e1cbc710bda40323b3d", "format": 1 }, { - "name": "tests/sanity/requirements.txt", + "name": "tests/integration/targets/podman_play/tasks/files/play-root3.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "471c16a6346df1b74757306a436cbab143fe65c30e6f9cda1f5c7179d6012b73", + "chksum_sha256": "3e26cb69976a1b7d1f79a5dafc74e368d9297bb63b29c1c213d5bbddc0e62bf3", "format": 1 }, { - "name": "tests/sanity/ignore-2.11.txt", + "name": "tests/integration/targets/podman_play/tasks/files/play-pod.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "28fd560a9ff59811770316563e3320dbd77ed04c2c2dd9d698c54870fbcaafb4", "format": 1 }, { - "name": "tests/sanity/ignore-2.10.txt", + "name": "tests/integration/targets/podman_play/tasks/files/envdata.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "d5ebdb092f5473ae5174dfbac83b6623343326f308d02eea8fb58fbb7b42d264", "format": 1 }, { - "name": "tests/sanity/ignore-2.18.txt", + "name": "tests/integration/targets/podman_play/tasks/files/multi-yaml.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "984f73601cc75a5052b22b3d9a670ea93e7cc0c4f3fe2fb89f4f341392fb8af6", "format": 1 }, { - "name": "tests/sanity/ignore-2.16.txt", + "name": "tests/integration/targets/podman_play/tasks/files/Containerfile", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "c0268928bf1b6b6307404eff5d25e292b78239d330dc585c87d810db40307609", "format": 1 }, { - "name": "tests/sanity/ignore-2.14.txt", + "name": "tests/integration/targets/podman_play/tasks/root-play.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "chksum_sha256": "65c0fccbaf7c464b539f895addc0cf3e7536f9cb8b9f7d8e28725a90d345326b", "format": 1 }, { - "name": "tests/.gitignore", + "name": "tests/integration/targets/podman_play/tasks/play-with-build.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600", - "format": 1 - }, - { - "name": "tests/unit", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/unit/plugins/modules", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "dbfd032b6d71ce241ee643cfcaa09997efc32ef57a0f4494982f43caad353678", "format": 1 }, { - "name": "tests/unit/plugins/modules/test_container_lib.py", + "name": "tests/integration/targets/podman_play/tasks/play-with-options.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "08beb5d507944be15d2c0e01081fa99c43d522e813d5ecde2b038d71132e2d7d", + "chksum_sha256": "fcf6f0e7a8768422425a667d29e28c831e4f284102ab3b62d8c7eb4b0fca6083", "format": 1 }, { - "name": "tests/unit/plugins/modules/test_common.py", + "name": "tests/integration/targets/podman_play/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "79b1c212210b13bb60b8d97b140351ce088707f3574b8fc61b076e827e050891", + "chksum_sha256": "164bc510cd1be9cb89f2d4845154d7f5854149ca347cdd4f2a115e70316c10f2", "format": 1 }, { - "name": "tests/integration", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/podman_play/tasks/play-multi-yaml.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "099247fe1f2666caf7035895336008b05e7e773353747c18015d36d795d9afaa", "format": 1 }, { - "name": "tests/integration/targets", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { @@ -988,17 +1023,17 @@ "format": 1 }, { - "name": "tests/integration/targets/podman_pod/tasks/main.yml", + "name": "tests/integration/targets/podman_pod/tasks/resource-limit.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c065036caae1e7933a92eead273136e4ebc1340257766746ad8d4954269bc10", + "chksum_sha256": "e18d34a46646071490b1deed714332f62bd5e1493ebdefb4891126cb3221ff1d", "format": 1 }, { "name": "tests/integration/targets/podman_pod/tasks/root-pod.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "32a941c1ab343de12be5b6b942885697a47a90e70b4ba8b8f6b41830fd748be7", + "chksum_sha256": "d05ccfd693dfcfdff20c1e073d771c05e7f0d2ff026902c23abbc5da0c112e60", "format": 1 }, { @@ -1009,584 +1044,507 @@ "format": 1 }, { - "name": "tests/integration/targets/podman_pod/tasks/net-pod.yml", + "name": "tests/integration/targets/podman_pod/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a0f34f0ea7dc20a24b1a0bd29ef7b71fc5b145fd6ee364cea413c01cc858c30d", + "chksum_sha256": "ad501d98456446f3316f11a4f18aaa9501da1f90a08aa2c795424600487b9c40", "format": 1 }, { - "name": "tests/integration/targets/podman_pod/tasks/resource-limit.yml", + "name": "tests/integration/targets/podman_pod/tasks/idempotency.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c401b840f46b7d047ffff490a03eb414be614b23f41ac053bf85b2b9e2eaef44", + "chksum_sha256": "f02a7b07d8e3666e73781bfc9f9e3f26a0eda27a748c966b750ed8bd1ae0e88a", "format": 1 }, { - "name": "tests/integration/targets/podman_containers", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/podman_pod/tasks/net-pod.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a0f34f0ea7dc20a24b1a0bd29ef7b71fc5b145fd6ee364cea413c01cc858c30d", "format": 1 }, { - "name": "tests/integration/targets/podman_containers/tasks", + "name": "tests/integration/targets/podman_network", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_containers/tasks/main.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "f0693a6b04d4dc0d91ff26d5c155f0dde26d8b54d38bad24379b4b45115572ba", + "name": "tests/integration/targets/podman_network/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_containers/tasks/root-multi.yml", + "name": "tests/integration/targets/podman_network/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "99e92a4d72c87817aa74687d7a9fc99da5adbeeaffb04fa8da55cac88d2082ad", + "chksum_sha256": "3d3ee9ff231e105ebbfc37678d8519cd1a90046dd41116f834d9544b86eca503", "format": 1 }, { - "name": "tests/integration/targets/podman_import", + "name": "tests/integration/targets/podman_secret_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_import/tasks", + "name": "tests/integration/targets/podman_secret_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_import/tasks/main.yml", + "name": "tests/integration/targets/podman_secret_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aee5d8c4cdcd8ca56109a6fcc93be0dcce03ebc65cf6c8d606b1e195ad7bc37a", + "chksum_sha256": "3181d366cf3f25687ff6cceaf0677803bedc1d64e6b766fa66d5882c89240674", "format": 1 }, { - "name": "tests/integration/targets/podman_container_exec", + "name": "tests/integration/targets/podman_save", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container_exec/tasks", + "name": "tests/integration/targets/podman_save/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container_exec/tasks/main.yml", + "name": "tests/integration/targets/podman_save/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0e0ddeed9ec3f80a8dbe98de6b8ca92d6906a8ed8b4e732b57d7aa56ea603766", + "chksum_sha256": "18dd5ac7950abeb6dcfdb97f4b9b6e00aeacd1be3b41dae762cca6e237bbbf93", "format": 1 }, { - "name": "tests/integration/targets/podman_export", + "name": "tests/integration/targets/podman_image_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_export/tasks", + "name": "tests/integration/targets/podman_image_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_export/tasks/main.yml", + "name": "tests/integration/targets/podman_image_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "608c9d218d3e66b53ad1b5f2b3d6c295ca109edf2d82b08eccc3d8840278f4ab", + "chksum_sha256": "2e2b22b24c5afbaf5f7565c37a37cd0294bb0be58d758a75fca3cf7828f283ac", "format": 1 }, { - "name": "tests/integration/targets/podman_container", + "name": "tests/integration/targets/podman_prune", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container/tasks", + "name": "tests/integration/targets/podman_prune/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container/tasks/main.yml", + "name": "tests/integration/targets/podman_prune/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "75e7c7c41efe6771b55a034dbeeb25b2ecfb16df84db581e3ba58a16f8192fbb", + "chksum_sha256": "ea735326ddf2a4077cab00b44e2c064c686d90d5d55e0c373a02c045aaabddf4", "format": 1 }, { - "name": "tests/integration/targets/podman_image", + "name": "tests/integration/targets/podman_runlabel", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_image/tasks", + "name": "tests/integration/targets/podman_runlabel/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_image/tasks/main.yml", + "name": "tests/integration/targets/podman_runlabel/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0d8f32e61e6e8357c8a08b3ec698a9a599b10b9dfdb0a03cef829d22b5eb177d", + "chksum_sha256": "0beafe98862363c62951e9c1a1398446a78b4e00aee1c91a7343e38eb5380fb0", "format": 1 }, { - "name": "tests/integration/targets/podman_image/files", + "name": "tests/integration/targets/podman_runlabel/files", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_image/files/Containerfile", + "name": "tests/integration/targets/podman_runlabel/files/Dockerfile", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec6bc9968ca494ec22fcb0bed27fc12ddf2241fea1fe58d0d8a4f0b33487b506", + "chksum_sha256": "4afccdec25a964d39944882c25dbb0df6f0f844cfcfb72bbd89bb505167d1241", "format": 1 }, { - "name": "tests/integration/targets/connection", + "name": "tests/integration/targets/podman_runlabel/files/testinstall.sh", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6450871e198c27b65e85883b3ca93b78f63261667b2332689d7f5b01fd293077", + "format": 1 + }, + { + "name": "tests/integration/targets/podman_secret", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/connection/create-nonroot-user.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "7af8e41655a36f526418cadf93e37da7117cc67761e34ab9c41b68ac8c00a268", + "name": "tests/integration/targets/podman_secret/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/connection/test_connection.yml", + "name": "tests/integration/targets/podman_secret/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3b9bd8af9cbdf99e7d47189d08b57d0eb5030fde078c88a3387d2af701ae85a8", + "chksum_sha256": "2c52c682319e7f943068ed557d1e60962ec793e1883c0cdbbc03df3e5eedb4e0", "format": 1 }, { - "name": "tests/integration/targets/podman_volume", + "name": "tests/integration/targets/podman_import", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_volume/tasks", + "name": "tests/integration/targets/podman_import/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_volume/tasks/main.yml", + "name": "tests/integration/targets/podman_import/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "02a99c50e7aebf79d8a7d254f9c2c25f03bfa7f940b3593907d0b26bd018880e", + "chksum_sha256": "aee5d8c4cdcd8ca56109a6fcc93be0dcce03ebc65cf6c8d606b1e195ad7bc37a", "format": 1 }, { - "name": "tests/integration/targets/podman_container_info", + "name": "tests/integration/targets/podman_generate_systemd", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container_info/tasks", + "name": "tests/integration/targets/podman_generate_systemd/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_container_info/tasks/main.yml", + "name": "tests/integration/targets/podman_generate_systemd/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f753b105c6b8ca293911422dc3372b82e98ba5b3f7065cac0a20976933a0c03f", + "chksum_sha256": "e8a7e30fe0a898ba81b62400058b9bab61da64e588148084ddb14911943d2b8b", "format": 1 }, { - "name": "tests/integration/targets/podman_volume_info", + "name": "tests/integration/targets/connection", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_volume_info/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/connection/test_connection.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3b9bd8af9cbdf99e7d47189d08b57d0eb5030fde078c88a3387d2af701ae85a8", "format": 1 }, { - "name": "tests/integration/targets/podman_volume_info/tasks/main.yml", + "name": "tests/integration/targets/connection/create-nonroot-user.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d951a17810a5d38195f5b6b9f2b61997be78c33f425b3d6c8424250d658d4115", + "chksum_sha256": "7af8e41655a36f526418cadf93e37da7117cc67761e34ab9c41b68ac8c00a268", "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel", + "name": "tests/integration/targets/podman_search", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel/tasks", + "name": "tests/integration/targets/podman_search/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel/tasks/main.yml", + "name": "tests/integration/targets/podman_search/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0beafe98862363c62951e9c1a1398446a78b4e00aee1c91a7343e38eb5380fb0", + "chksum_sha256": "b1a8962f4a6a36c9c67325449fb05ac7bb71bb016e2612657d3a498295e08a5b", "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel/files", + "name": "tests/integration/targets/connection_buildah", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel/files/testinstall.sh", + "name": "tests/integration/targets/connection_buildah/runme.sh", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6450871e198c27b65e85883b3ca93b78f63261667b2332689d7f5b01fd293077", + "chksum_sha256": "b4d64b01f03eb7aa81f3fbe7202c816188bc8432fedccb5251feeb330f7c16e4", "format": 1 }, { - "name": "tests/integration/targets/podman_runlabel/files/Dockerfile", + "name": "tests/integration/targets/connection_buildah/test_connection.inventory", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4afccdec25a964d39944882c25dbb0df6f0f844cfcfb72bbd89bb505167d1241", + "chksum_sha256": "5012fc0a2af812b87b675f31cd605ecf8d80fe32667b6ed20ea51fe0c8685742", "format": 1 }, { - "name": "tests/integration/targets/podman_image_info", + "name": "tests/integration/targets/podman_login", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_image_info/tasks", + "name": "tests/integration/targets/podman_login/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_image_info/tasks/main.yml", + "name": "tests/integration/targets/podman_login/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2e2b22b24c5afbaf5f7565c37a37cd0294bb0be58d758a75fca3cf7828f283ac", + "chksum_sha256": "5156c546ca2b45f035ae5b28a7220e06c4fb8051f93a6077e0308b06cafa15b3", "format": 1 }, { - "name": "tests/integration/targets/podman_load", + "name": "tests/integration/targets/podman_tag", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_load/tasks", + "name": "tests/integration/targets/podman_tag/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_load/tasks/main.yml", + "name": "tests/integration/targets/podman_tag/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "078d5ae2eb9bf74046e34c6e7c003e87bb6e08f1a6fd49fcf5d6bb2174bae393", + "chksum_sha256": "2d0f2ae65dac8386961528eb33d02de73fe60026cb5566ffa68b4467b7c45678", "format": 1 }, { - "name": "tests/integration/targets/podman_play", + "name": "tests/integration/targets/podman_volume", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks", + "name": "tests/integration/targets/podman_volume/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks/main.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "164bc510cd1be9cb89f2d4845154d7f5854149ca347cdd4f2a115e70316c10f2", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/play-with-build.yml", + "name": "tests/integration/targets/podman_volume/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dbfd032b6d71ce241ee643cfcaa09997efc32ef57a0f4494982f43caad353678", + "chksum_sha256": "0bb81579b5e53043c413e615d9beb0a55f8606d89e6fa5cf7a1a63b598df38a2", "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks/files", + "name": "tests/integration/targets/podman_image", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks/files/play-root3.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3e26cb69976a1b7d1f79a5dafc74e368d9297bb63b29c1c213d5bbddc0e62bf3", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/play1.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1031804932a82f741e8cddaa397e73554e4784a790a3d4493d1b5c8f5f6bbf7e", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/Containerfile", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c0268928bf1b6b6307404eff5d25e292b78239d330dc585c87d810db40307609", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/play3.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c92c31b3ad0cd9992a6a9e391d07d69b2b9f3cc39b410e1cbc710bda40323b3d", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/kube-buil-test.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c813ffc1f16f8324acbbaad0cf5ad7ee00e0ebd47f314b9ad74f24fd9e2177b0", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/play-pod.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "28fd560a9ff59811770316563e3320dbd77ed04c2c2dd9d698c54870fbcaafb4", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/envdata.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d5ebdb092f5473ae5174dfbac83b6623343326f308d02eea8fb58fbb7b42d264", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/multi-yaml.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "984f73601cc75a5052b22b3d9a670ea93e7cc0c4f3fe2fb89f4f341392fb8af6", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/files/play-root1.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "049f1ad67c57e019423f28c77ca8cec13e714ae8727fedfde71792ec56131344", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_play/tasks/play-with-options.yml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "fcf6f0e7a8768422425a667d29e28c831e4f284102ab3b62d8c7eb4b0fca6083", + "name": "tests/integration/targets/podman_image/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks/root-play.yml", + "name": "tests/integration/targets/podman_image/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "65c0fccbaf7c464b539f895addc0cf3e7536f9cb8b9f7d8e28725a90d345326b", + "chksum_sha256": "c9910a4f7ed79f2cdbd13eb9b32427539a00f4c12849e3a6f0870351de97cce0", "format": 1 }, { - "name": "tests/integration/targets/podman_play/tasks/play-multi-yaml.yml", + "name": "tests/integration/targets/podman_image/tasks/idem_push.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "099247fe1f2666caf7035895336008b05e7e773353747c18015d36d795d9afaa", - "format": 1 - }, - { - "name": "tests/integration/targets/podman_logout", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "fc8551f226392dd186bbebefb3dc336ef5b0ce3d2ac2708ba6bb09a4706fee64", "format": 1 }, { - "name": "tests/integration/targets/podman_logout/tasks", + "name": "tests/integration/targets/podman_image/files", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_logout/tasks/main.yml", + "name": "tests/integration/targets/podman_image/files/Containerfile", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2e1c3fcd8cd0d917e7faad2dc447381ec2ccff2bc3a57b02060cd965ffbb45c1", + "chksum_sha256": "ec6bc9968ca494ec22fcb0bed27fc12ddf2241fea1fe58d0d8a4f0b33487b506", "format": 1 }, { - "name": "tests/integration/targets/connection_buildah", + "name": "tests/integration/targets/connection_podman", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/connection_buildah/test_connection.inventory", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "5012fc0a2af812b87b675f31cd605ecf8d80fe32667b6ed20ea51fe0c8685742", - "format": 1 - }, - { - "name": "tests/integration/targets/connection_buildah/runme.sh", + "name": "tests/integration/targets/connection_podman/runme.sh", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4d64b01f03eb7aa81f3fbe7202c816188bc8432fedccb5251feeb330f7c16e4", + "chksum_sha256": "06a213f3e9c159069f1fd055653438f8487d1b8939ee735a0025b151ef2a4626", "format": 1 }, { - "name": "tests/integration/targets/__init__.py", + "name": "tests/integration/targets/connection_podman/test_connection.inventory", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "05ecc4306d853f3a6057303bbcc0750d7fbb86e044cd135faf01c35ad06b6d25", "format": 1 }, { - "name": "tests/integration/targets/podman_tag", + "name": "tests/integration/targets/podman_pod_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_tag/tasks", + "name": "tests/integration/targets/podman_pod_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_tag/tasks/main.yml", + "name": "tests/integration/targets/podman_pod_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2d0f2ae65dac8386961528eb33d02de73fe60026cb5566ffa68b4467b7c45678", + "chksum_sha256": "f04166aa3908442835ca6e7f747429d54cdeb8bcbf272e3977de79f3ad653271", "format": 1 }, { - "name": "tests/integration/targets/podman_login_info", + "name": "tests/integration/targets/podman_volume_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_login_info/tasks", + "name": "tests/integration/targets/podman_volume_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_login_info/tasks/main.yml", + "name": "tests/integration/targets/podman_volume_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "21ef50fdd0d92d39240b082c1f9ba3782478e615863d3e8d9a0960b175b8158e", + "chksum_sha256": "d951a17810a5d38195f5b6b9f2b61997be78c33f425b3d6c8424250d658d4115", "format": 1 }, { - "name": "tests/integration/targets/podman_network_info", + "name": "tests/integration/targets/podman_logout", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_network_info/tasks", + "name": "tests/integration/targets/podman_logout/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_network_info/tasks/main.yml", + "name": "tests/integration/targets/podman_logout/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5d60cdf4f76199919395dd477e7feb32d8ebbb4b736d0a13052290a3fcb5e5e3", + "chksum_sha256": "2e1c3fcd8cd0d917e7faad2dc447381ec2ccff2bc3a57b02060cd965ffbb45c1", "format": 1 }, { - "name": "tests/integration/targets/podman_pod_info", + "name": "tests/integration/targets/podman_export", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_pod_info/tasks", + "name": "tests/integration/targets/podman_export/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_pod_info/tasks/main.yml", + "name": "tests/integration/targets/podman_export/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f04166aa3908442835ca6e7f747429d54cdeb8bcbf272e3977de79f3ad653271", + "chksum_sha256": "608c9d218d3e66b53ad1b5f2b3d6c295ca109edf2d82b08eccc3d8840278f4ab", "format": 1 }, { @@ -1604,24 +1562,24 @@ "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/main.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aa7ee1e6dad1b84726df6521d749c31263b9d6d2cb7c5ab38b04ddf8fadb58f9", + "chksum_sha256": "01a8f61e9177ce7fc22f776030737398365effde88cb567f916a23ff93f052d1", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_network_aliases.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/root-podman-network.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "04c6bf4fd56edcc1a49a47e98f448c89cf8e90e1d7d67db9997f0af94ef09dc6", + "chksum_sha256": "ab1cc0f347537ab4403395b2b2b43f815fe49c7ae35b88b498931fdcb33abd75", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_pods.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "407d946210fd0801b2626b36ca0921299c75d644ff508caeac1cc2fa49ef6c50", + "chksum_sha256": "53d129901494fa24a8075ade0576e2536ae3cbfc5d8fb8d116a10978594a6a49", "format": 1 }, { @@ -1632,80 +1590,87 @@ "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_networks.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3a0f1de00361a8381b06934149d6433afd307d010d7396be307f7d7f6f27a52e", + "chksum_sha256": "f41df0c66fb7820bc442c4e377471942973b8e90ce266a67fcb87173c73859e7", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "36f44ffaa058046e62d0e53be0f7edf8232d9145ec44a948c64c15d0c0c3cd23", + "chksum_sha256": "d0d89918194de3212ecfe1934bb34c21ec228048703470880007d2521fb83db9", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ed7d2ee3e9e352efc0266c2264469b3f759f1630562794c98f5da83949506bec", + "chksum_sha256": "63719f6d21b5a56e4a7de0a0f6bb236bc3fb1a7a64cb6f0aa93d75be187a022b", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_pods.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "53d129901494fa24a8075ade0576e2536ae3cbfc5d8fb8d116a10978594a6a49", + "chksum_sha256": "6ddc4448c079d01f96c5acd62b09a2a8d58906e4186b42cd39b4c50e847d6aac", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_networks.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "23d729589e61ae790bd81b281f89b48b443b830cf3a6932eb0bdf4289289f677", + "chksum_sha256": "3a0f1de00361a8381b06934149d6433afd307d010d7396be307f7d7f6f27a52e", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_network_aliases.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc446d64740817d2b04de867ac5e17e3118a4191e332f1c4bc493a34bc58b298", + "chksum_sha256": "04c6bf4fd56edcc1a49a47e98f448c89cf8e90e1d7d67db9997f0af94ef09dc6", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_systemd.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "272808017955d5ef59448a1b9ce1bb98d18bce0b1e4b658d1fe6c5b4fcdc884b", + "chksum_sha256": "a2f2829caef8339de258439e928c1a2d8ea16421d0099da8dd6fdd036ba8c5e6", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/root-podman-network.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab1cc0f347537ab4403395b2b2b43f815fe49c7ae35b88b498931fdcb33abd75", + "chksum_sha256": "e1337d6faa4cfac0bd54de02973b2ac42f21fdfa89d578266a067a34d6a87840", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_bool_list_dict.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f7ccc04c97fb27dfdf4462cc73f74e244c76759ce0a5b4b7d785e6f8a50b7a56", + "chksum_sha256": "6bc8ca04d68777522b76a2d419efb593e20d3ebaab67635355a2395921b644fa", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "262e884e0b4a561fbc57726f13763e3b07a92786386c9a5c7ccd13270e38b475", + "chksum_sha256": "6d33125ca125b9e4f765246e2d47ee48e633e4916ea6383c1d41f3fe4ca5ce44", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml", + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_systemd.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5e330c3f7359aaf7e6e3379db977b909e04bcec89b894f1f8f0d44dfebdecffd", + "chksum_sha256": "272808017955d5ef59448a1b9ce1bb98d18bce0b1e4b658d1fe6c5b4fcdc884b", + "format": 1 + }, + { + "name": "tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d224090cd361155825706088a76172956d222c51141781f7d51c26356c1b4958", "format": 1 }, { @@ -1723,185 +1688,276 @@ "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/files/start.sh", + "name": "tests/integration/targets/podman_container_idempotency/files/Dockerfile", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb80ab18f5df29c7c77f8acea5285af4f0f4d1ddac161801d0ff26ac242c2d86", + "chksum_sha256": "002a8a2bf46c5da32a3583bc93c08347c6f7e16c51cd5abdf562d77df313da5c", "format": 1 }, { - "name": "tests/integration/targets/podman_container_idempotency/files/Dockerfile", + "name": "tests/integration/targets/podman_container_idempotency/files/start.sh", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "002a8a2bf46c5da32a3583bc93c08347c6f7e16c51cd5abdf562d77df313da5c", + "chksum_sha256": "bb80ab18f5df29c7c77f8acea5285af4f0f4d1ddac161801d0ff26ac242c2d86", "format": 1 }, { - "name": "tests/integration/targets/podman_secret", + "name": "tests/integration/targets/podman_containers", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_secret/tasks", + "name": "tests/integration/targets/podman_containers/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_secret/tasks/main.yml", + "name": "tests/integration/targets/podman_containers/tasks/root-multi.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b9b9415b024f3f617149c74d980afccb22e7223dac8bb673465504507ca4e2aa", + "chksum_sha256": "99e92a4d72c87817aa74687d7a9fc99da5adbeeaffb04fa8da55cac88d2082ad", "format": 1 }, { - "name": "tests/integration/targets/podman_network", + "name": "tests/integration/targets/podman_containers/tasks/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f0693a6b04d4dc0d91ff26d5c155f0dde26d8b54d38bad24379b4b45115572ba", + "format": 1 + }, + { + "name": "tests/integration/targets/podman_container_exec", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_network/tasks", + "name": "tests/integration/targets/podman_container_exec/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_network/tasks/main.yml", + "name": "tests/integration/targets/podman_container_exec/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8415501667bf5315c747424b0ffbe15b3283803e26f52d78d7de13836bba1e90", + "chksum_sha256": "0e0ddeed9ec3f80a8dbe98de6b8ca92d6906a8ed8b4e732b57d7aa56ea603766", "format": 1 }, { - "name": "tests/integration/targets/podman_login", + "name": "tests/integration/targets/podman_login_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_login/tasks", + "name": "tests/integration/targets/podman_login_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_login/tasks/main.yml", + "name": "tests/integration/targets/podman_login_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5156c546ca2b45f035ae5b28a7220e06c4fb8051f93a6077e0308b06cafa15b3", + "chksum_sha256": "21ef50fdd0d92d39240b082c1f9ba3782478e615863d3e8d9a0960b175b8158e", "format": 1 }, { - "name": "tests/integration/targets/podman_save", + "name": "tests/integration/targets/podman_container_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_save/tasks", + "name": "tests/integration/targets/podman_container_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_save/tasks/main.yml", + "name": "tests/integration/targets/podman_container_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "18dd5ac7950abeb6dcfdb97f4b9b6e00aeacd1be3b41dae762cca6e237bbbf93", + "chksum_sha256": "f753b105c6b8ca293911422dc3372b82e98ba5b3f7065cac0a20976933a0c03f", "format": 1 }, { - "name": "tests/integration/targets/podman_secret_info", + "name": "tests/integration/targets/podman_container", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_secret_info/tasks", + "name": "tests/integration/targets/podman_container/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_secret_info/tasks/main.yml", + "name": "tests/integration/targets/podman_container/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3181d366cf3f25687ff6cceaf0677803bedc1d64e6b766fa66d5882c89240674", + "chksum_sha256": "75e7c7c41efe6771b55a034dbeeb25b2ecfb16df84db581e3ba58a16f8192fbb", "format": 1 }, { - "name": "tests/integration/targets/podman_generate_systemd", + "name": "tests/integration/targets/podman_network_info", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_generate_systemd/tasks", + "name": "tests/integration/targets/podman_network_info/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_generate_systemd/tasks/main.yml", + "name": "tests/integration/targets/podman_network_info/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e8a7e30fe0a898ba81b62400058b9bab61da64e588148084ddb14911943d2b8b", + "chksum_sha256": "5d60cdf4f76199919395dd477e7feb32d8ebbb4b736d0a13052290a3fcb5e5e3", "format": 1 }, { - "name": "tests/integration/targets/connection_podman", + "name": "tests/.gitignore", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600", + "format": 1 + }, + { + "name": "tests/unit", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/connection_podman/test_connection.inventory", + "name": "tests/unit/plugins", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/modules", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/modules/test_container_lib.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "05ecc4306d853f3a6057303bbcc0750d7fbb86e044cd135faf01c35ad06b6d25", + "chksum_sha256": "fe86470d10790cb360f699533fdd2155097240ac4c7530648a81c62642a92b6d", "format": 1 }, { - "name": "tests/integration/targets/connection_podman/runme.sh", + "name": "tests/unit/plugins/modules/test_common.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06a213f3e9c159069f1fd055653438f8487d1b8939ee735a0025b151ef2a4626", + "chksum_sha256": "79b1c212210b13bb60b8d97b140351ce088707f3574b8fc61b076e827e050891", "format": 1 }, { - "name": "tests/integration/targets/podman_prune", + "name": "tests/sanity", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/podman_prune/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/sanity/ignore-2.16.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", "format": 1 }, { - "name": "tests/integration/targets/podman_prune/tasks/main.yml", + "name": "tests/sanity/ignore-2.12.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea735326ddf2a4077cab00b44e2c064c686d90d5d55e0c373a02c045aaabddf4", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.11.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.18.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.9.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.13.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.15.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.14.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.10.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.17.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fc6067f750369421d81d68b9f2d30afe4eb13f9d0963eaa1aa07a8c924556b", + "format": 1 + }, + { + "name": "tests/sanity/requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "471c16a6346df1b74757306a436cbab143fe65c30e6f9cda1f5c7179d6012b73", "format": 1 } ], diff --git a/ansible_collections/containers/podman/MANIFEST.json b/ansible_collections/containers/podman/MANIFEST.json index ac80755e7..15749ba5a 100644 --- a/ansible_collections/containers/podman/MANIFEST.json +++ b/ansible_collections/containers/podman/MANIFEST.json @@ -2,7 +2,7 @@ "collection_info": { "namespace": "containers", "name": "podman", - "version": "1.13.0", + "version": "1.15.2", "authors": [ "Sagi Shnaidman <sshnaidm@redhat.com>", "Ansible team" @@ -28,7 +28,7 @@ "name": "FILES.json", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c7ca356d6a22a0996ed4045ff5711e5cf96cd60a62009e0da6f63fea100d538f", + "chksum_sha256": "edb1850aa75bf5e77e1c7bf9f3bcbd65ebb410ccbd8cfce2b7ee8ab5b36759af", "format": 1 }, "format": 1 diff --git a/ansible_collections/containers/podman/changelogs/changelog.yaml b/ansible_collections/containers/podman/changelogs/changelog.yaml index bb58cacf4..6e9c6ae4d 100644 --- a/ansible_collections/containers/podman/changelogs/changelog.yaml +++ b/ansible_collections/containers/podman/changelogs/changelog.yaml @@ -290,6 +290,55 @@ releases: - Add quadlet support for Podman modules release_summary: Quadlet support for Podman release_date: '2024-04-22' + 1.14.0: + changes: + bugfixes: + - Fix idempotency for pod with 0.0.0.0 + - Fix transports issues in podman_image + - fix(#747) set correct HealthCmd + major_changes: + - Add mount and unmount for volumes + - Add multiple subnets for networks + - Add new options for podman_container + - Add new options to pod module + - Improve idempotency for networking in podman_container + - Redesign idempotency for Podman Pod module + minor_changes: + - Add autodiscovery for build context in podman_image + - Add docs, tests and more examples for podman_pod + - Add extra_args for podman_image push and pull + - Add idempotency for mounts and volumes in podman_container + - Add new functionality tests for podman_secret + - Add path and env options for podman_secret + - Add route, dns and ipam_driver to podman_network + - Create podman secret when skip_existing=True and it does not exist + release_summary: Idempotency redesign and a lot of new options + release_date: '2024-05-30' + 1.15.0: + changes: + bugfixes: + - Fix issue with pushing podman image to repo name and org + major_changes: + - Add podman search + release_summary: Podman search module and bugfixes for Podman image + modules: + - description: Search for remote images using podman + name: podman_search + namespace: '' + release_date: '2024-06-03' + 1.15.1: + changes: + bugfixes: + - Fix idempotency for pods in case of systemd generation + - Fix idempotency for systemd generations + release_summary: Bugfixes for systemd generation + release_date: '2024-06-07' + 1.15.2: + changes: + minor_changes: + - Add option for inline Containerfile in podman_image + release_summary: Inline Containerfile option for podman_image + release_date: '2024-06-11' 1.2.0: changes: minor_changes: diff --git a/ansible_collections/containers/podman/docs/buildah_connection.html b/ansible_collections/containers/podman/docs/buildah_connection.html index 28b73f8bf..0da9548d6 100644 --- a/ansible_collections/containers/podman/docs/buildah_connection.html +++ b/ansible_collections/containers/podman/docs/buildah_connection.html @@ -37,7 +37,7 @@ <h1>containers.podman.buildah connection – Interact with an existing buildah container<a class="headerlink" href="#containers-podman-buildah-connection-interact-with-an-existing-buildah-container" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This connection plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This connection plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> @@ -156,6 +156,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/environment_variables.html b/ansible_collections/containers/podman/docs/environment_variables.html index 2fc11f2c2..c0389b3d4 100644 --- a/ansible_collections/containers/podman/docs/environment_variables.html +++ b/ansible_collections/containers/podman/docs/environment_variables.html @@ -124,6 +124,7 @@ Environment variables used by the ansible-core configuration are documented in < <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/genindex.html b/ansible_collections/containers/podman/docs/genindex.html index 312e433c8..e2700a3a2 100644 --- a/ansible_collections/containers/podman/docs/genindex.html +++ b/ansible_collections/containers/podman/docs/genindex.html @@ -132,6 +132,7 @@ <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/index.html b/ansible_collections/containers/podman/docs/index.html index 8880530d7..a489a75f7 100644 --- a/ansible_collections/containers/podman/docs/index.html +++ b/ansible_collections/containers/podman/docs/index.html @@ -34,7 +34,7 @@ <section id="containers-podman"> <span id="plugins-in-containers-podman"></span><h1>Containers.Podman<a class="headerlink" href="#containers-podman" title="Permalink to this heading">¶</a></h1> -<p>Collection version 1.13.0</p> +<p>Collection version 1.15.2</p> <nav class="contents local" id="contents"> <ul class="simple"> <li><p><a class="reference internal" href="#description" id="id1">Description</a></p></li> @@ -87,6 +87,7 @@ <li><p><a class="reference internal" href="podman_prune_module.html#ansible-collections-containers-podman-podman-prune-module"><span class="std std-ref">podman_prune module</span></a> – Allows to prune various podman objects</p></li> <li><p><a class="reference internal" href="podman_runlabel_module.html#ansible-collections-containers-podman-podman-runlabel-module"><span class="std std-ref">podman_runlabel module</span></a> – Run given label from given image</p></li> <li><p><a class="reference internal" href="podman_save_module.html#ansible-collections-containers-podman-podman-save-module"><span class="std std-ref">podman_save module</span></a> – Saves podman image to tar file</p></li> +<li><p><a class="reference internal" href="podman_search_module.html#ansible-collections-containers-podman-podman-search-module"><span class="std std-ref">podman_search module</span></a> – Search for remote images using podman</p></li> <li><p><a class="reference internal" href="podman_secret_module.html#ansible-collections-containers-podman-podman-secret-module"><span class="std std-ref">podman_secret module</span></a> – Manage podman secrets</p></li> <li><p><a class="reference internal" href="podman_secret_info_module.html#ansible-collections-containers-podman-podman-secret-info-module"><span class="std std-ref">podman_secret_info module</span></a> – Gather info about podman secrets</p></li> <li><p><a class="reference internal" href="podman_tag_module.html#ansible-collections-containers-podman-podman-tag-module"><span class="std std-ref">podman_tag module</span></a> – Add an additional name to a local image</p></li> @@ -155,6 +156,7 @@ <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/objects.inv b/ansible_collections/containers/podman/docs/objects.inv Binary files differindex e51191bf4..3ae60a5a5 100644 --- a/ansible_collections/containers/podman/docs/objects.inv +++ b/ansible_collections/containers/podman/docs/objects.inv diff --git a/ansible_collections/containers/podman/docs/podman_connection.html b/ansible_collections/containers/podman/docs/podman_connection.html index d5a6f2b6f..f6875f2d8 100644 --- a/ansible_collections/containers/podman/docs/podman_connection.html +++ b/ansible_collections/containers/podman/docs/podman_connection.html @@ -36,7 +36,7 @@ <h1>containers.podman.podman connection – Interact with an existing podman container<a class="headerlink" href="#containers-podman-podman-connection-interact-with-an-existing-podman-container" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This connection plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This connection plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> @@ -188,6 +188,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_container_exec_module.html b/ansible_collections/containers/podman/docs/podman_container_exec_module.html index f93c89afd..13ed78687 100644 --- a/ansible_collections/containers/podman/docs/podman_container_exec_module.html +++ b/ansible_collections/containers/podman/docs/podman_container_exec_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_container_exec module – Executes a command in a running container.<a class="headerlink" href="#containers-podman-podman-container-exec-module-executes-a-command-in-a-running-container" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -307,6 +307,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_container_info_module.html b/ansible_collections/containers/podman/docs/podman_container_info_module.html index 516979249..a32520bc7 100644 --- a/ansible_collections/containers/podman/docs/podman_container_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_container_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_container_info module – Gather facts about containers using podman<a class="headerlink" href="#containers-podman-podman-container-info-module-gather-facts-about-containers-using-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -198,6 +198,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_container_module.html b/ansible_collections/containers/podman/docs/podman_container_module.html index 6cb5f17ee..422aeca7a 100644 --- a/ansible_collections/containers/podman/docs/podman_container_module.html +++ b/ansible_collections/containers/podman/docs/podman_container_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_container module – Manage podman containers<a class="headerlink" href="#containers-podman-podman-container-module-manage-podman-containers" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -85,6 +85,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-arch"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-arch"><strong>arch</strong></p> +<a class="ansibleOptionLink" href="#parameter-arch" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the architecture for the container. Override the architecture, defaults to hosts, of the image to be pulled. For example, arm.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-attach"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-attach"><strong>attach</strong></p> <a class="ansibleOptionLink" href="#parameter-attach" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> @@ -97,28 +104,28 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-authfile"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-authfile"><strong>authfile</strong></p> <a class="ansibleOptionLink" href="#parameter-authfile" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path of the authentication file. Default is ``${XDG_RUNTIME_DIR}/containers/auth.json`` (Not available for remote commands) You can also override the default path of the authentication file by setting the ``REGISTRY_AUTH_FILE`` environment variable. ``export REGISTRY_AUTH_FILE=path``</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-blkio_weight"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-blkio-weight"><strong>blkio_weight</strong></p> <a class="ansibleOptionLink" href="#parameter-blkio_weight" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Block IO weight (relative weight) accepts a weight value between 10 and 1000</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-blkio_weight_device"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-blkio-weight-device"><strong>blkio_weight_device</strong></p> <a class="ansibleOptionLink" href="#parameter-blkio_weight_device" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Block IO weight (relative device weight, format DEVICE_NAME[:]WEIGHT).</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cap_add"></div> <div class="ansibleOptionAnchor" id="parameter-capabilities"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-capabilities"><span id="ansible-collections-containers-podman-podman-container-module-parameter-cap-add"></span><strong>cap_add</strong></p> <a class="ansibleOptionLink" href="#parameter-cap_add" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: capabilities</span></p> @@ -127,13 +134,20 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>List of capabilities to add to the container.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cap_drop"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cap-drop"><strong>cap_drop</strong></p> <a class="ansibleOptionLink" href="#parameter-cap_drop" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>List of capabilities to drop from the container.</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-cgroup_conf"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cgroup-conf"><strong>cgroup_conf</strong></p> +<a class="ansibleOptionLink" href="#parameter-cgroup_conf" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>When running on cgroup v2, specify the cgroup file to write to and its value.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cgroup_parent"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cgroup-parent"><strong>cgroup_parent</strong></p> <a class="ansibleOptionLink" href="#parameter-cgroup_parent" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> @@ -156,90 +170,97 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-chrootdirs"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-chrootdirs"><strong>chrootdirs</strong></p> +<a class="ansibleOptionLink" href="#parameter-chrootdirs" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Path to a directory inside the container that is treated as a chroot directory.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cidfile"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cidfile"><strong>cidfile</strong></p> <a class="ansibleOptionLink" href="#parameter-cidfile" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Write the container ID to the file</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cmd_args"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cmd-args"><strong>cmd_args</strong></p> <a class="ansibleOptionLink" href="#parameter-cmd_args" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Any additional command options you want to pass to podman command itself, for example <code class="docutils literal notranslate"><span class="pre">--log-level=debug</span></code> or <code class="docutils literal notranslate"><span class="pre">--syslog</span></code>. This is NOT command to run in container, but rather options for podman itself. For container command please use <em>command</em> option.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-command"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-command"><strong>command</strong></p> <a class="ansibleOptionLink" href="#parameter-command" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">any</span></p> </div></td> <td><div class="ansible-option-cell"><p>Override command of container. Can be a string or a list.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-conmon_pidfile"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-conmon-pidfile"><strong>conmon_pidfile</strong></p> <a class="ansibleOptionLink" href="#parameter-conmon_pidfile" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Write the pid of the conmon process to a file. conmon runs in a separate process than Podman, so this is necessary when using systemd to restart Podman containers.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpu_period"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpu-period"><strong>cpu_period</strong></p> <a class="ansibleOptionLink" href="#parameter-cpu_period" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit the CPU CFS (Completely Fair Scheduler) period</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpu_quota"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpu-quota"><strong>cpu_quota</strong></p> <a class="ansibleOptionLink" href="#parameter-cpu_quota" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit the CPU CFS (Completely Fair Scheduler) quota</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpu_rt_period"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpu-rt-period"><strong>cpu_rt_period</strong></p> <a class="ansibleOptionLink" href="#parameter-cpu_rt_period" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit the CPU real-time period in microseconds. Limit the container’s Real Time CPU usage. This flag tell the kernel to restrict the container’s Real Time CPU usage to the period you specify.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpu_rt_runtime"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpu-rt-runtime"><strong>cpu_rt_runtime</strong></p> <a class="ansibleOptionLink" href="#parameter-cpu_rt_runtime" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit the CPU real-time runtime in microseconds. This flag tells the kernel to limit the amount of time in a given CPU period Real Time tasks may consume.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpu_shares"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpu-shares"><strong>cpu_shares</strong></p> <a class="ansibleOptionLink" href="#parameter-cpu_shares" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>CPU shares (relative weight)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpus"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpus"><strong>cpus</strong></p> <a class="ansibleOptionLink" href="#parameter-cpus" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Number of CPUs. The default is 0.0 which means no limit.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpuset_cpus"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpuset-cpus"><strong>cpuset_cpus</strong></p> <a class="ansibleOptionLink" href="#parameter-cpuset_cpus" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>CPUs in which to allow execution (0-3, 0,1)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-cpuset_mems"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-cpuset-mems"><strong>cpuset_mems</strong></p> <a class="ansibleOptionLink" href="#parameter-cpuset_mems" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Memory nodes (MEMs) in which to allow execution (0-3, 0,1). Only effective on NUMA systems.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-debug"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-debug"><strong>debug</strong></p> <a class="ansibleOptionLink" href="#parameter-debug" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -251,6 +272,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-decryption_key"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-decryption-key"><strong>decryption_key</strong></p> +<a class="ansibleOptionLink" href="#parameter-decryption_key" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The “key-passphrase” to be used for decryption of images. Key can point to keys and/or certificates.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-delete_depend"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-delete-depend"><strong>delete_depend</strong></p> <a class="ansibleOptionLink" href="#parameter-delete_depend" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -309,34 +337,41 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-device_cgroup_rule"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-device-cgroup-rule"><strong>device_cgroup_rule</strong></p> +<a class="ansibleOptionLink" href="#parameter-device_cgroup_rule" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Add a rule to the cgroup allowed devices list. The rule is expected to be in the format specified in the Linux kernel documentation admin-guide/cgroup-v1/devices.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-device_read_bps"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-device-read-bps"><strong>device_read_bps</strong></p> <a class="ansibleOptionLink" href="#parameter-device_read_bps" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit read rate (bytes per second) from a device (e.g. device-read-bps /dev/sda:1mb)</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-device_read_iops"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-device-read-iops"><strong>device_read_iops</strong></p> <a class="ansibleOptionLink" href="#parameter-device_read_iops" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit read rate (IO per second) from a device (e.g. device-read-iops /dev/sda:1000)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-device_write_bps"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-device-write-bps"><strong>device_write_bps</strong></p> <a class="ansibleOptionLink" href="#parameter-device_write_bps" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit write rate (bytes per second) to a device (e.g. device-write-bps /dev/sda:1mb)</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-device_write_iops"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-device-write-iops"><strong>device_write_iops</strong></p> <a class="ansibleOptionLink" href="#parameter-device_write_iops" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Limit write rate (IO per second) to a device (e.g. device-write-iops /dev/sda:1000)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-dns"></div> <div class="ansibleOptionAnchor" id="parameter-dns_servers"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-dns-servers"><span id="ansible-collections-containers-podman-podman-container-module-parameter-dns"></span><strong>dns</strong></p> <a class="ansibleOptionLink" href="#parameter-dns" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: dns_servers</span></p> @@ -345,7 +380,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Set custom DNS servers</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-dns_option"></div> <div class="ansibleOptionAnchor" id="parameter-dns_opts"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-dns-opts"><span id="ansible-collections-containers-podman-podman-container-module-parameter-dns-option"></span><strong>dns_option</strong></p> <a class="ansibleOptionLink" href="#parameter-dns_option" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: dns_opts</span></p> @@ -354,7 +389,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Set custom DNS options</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-dns_search"></div> <div class="ansibleOptionAnchor" id="parameter-dns_search_domains"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-dns-search-domains"><span id="ansible-collections-containers-podman-podman-container-module-parameter-dns-search"></span><strong>dns_search</strong></p> <a class="ansibleOptionLink" href="#parameter-dns_search" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: dns_search_domains</span></p> @@ -363,21 +398,21 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Set custom DNS search domains (Use dns_search with ‘’ if you don’t wish to set the search domain)</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-entrypoint"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-entrypoint"><strong>entrypoint</strong></p> <a class="ansibleOptionLink" href="#parameter-entrypoint" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Overwrite the default ENTRYPOINT of the image</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-env"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-env"><strong>env</strong></p> <a class="ansibleOptionLink" href="#parameter-env" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set environment variables. This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-env_file"></div> <div class="ansibleOptionAnchor" id="parameter-env_files"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-env-files"><span id="ansible-collections-containers-podman-podman-container-module-parameter-env-file"></span><strong>env_file</strong></p> <a class="ansibleOptionLink" href="#parameter-env_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: env_files</span></p> @@ -386,7 +421,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Read in a line delimited file of environment variables. Doesn’t support idempotency. If users changes the file with environment variables it’s on them to recreate the container. The file must be present on the REMOTE machine where actual podman is running, not on the controller machine where Ansible is executing. If you need to copy the file from controller to remote machine, use the copy or slurp module.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-env_host"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-env-host"><strong>env_host</strong></p> <a class="ansibleOptionLink" href="#parameter-env_host" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -398,6 +433,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-env_merge"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-env-merge"><strong>env_merge</strong></p> +<a class="ansibleOptionLink" href="#parameter-env_merge" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Preprocess default environment variables for the containers</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-etc_hosts"></div> <div class="ansibleOptionAnchor" id="parameter-add_hosts"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-etc-hosts"><span id="ansible-collections-containers-podman-podman-container-module-parameter-add-hosts"></span><strong>etc_hosts</strong></p> @@ -592,6 +634,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-gpus"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-gpus"><strong>gpus</strong></p> +<a class="ansibleOptionLink" href="#parameter-gpus" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>GPU devices to add to the container.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-group_add"></div> <div class="ansibleOptionAnchor" id="parameter-groups"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-groups"><span id="ansible-collections-containers-podman-podman-container-module-parameter-group-add"></span><strong>group_add</strong></p> <a class="ansibleOptionLink" href="#parameter-group_add" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: groups</span></p> @@ -600,16 +649,62 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Add additional groups to run as</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-group_entry"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-group-entry"><strong>group_entry</strong></p> +<a class="ansibleOptionLink" href="#parameter-group_entry" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Customize the entry that is written to the /etc/group file within the container when –user is used.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck"><strong>healthcheck</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +<div class="ansibleOptionAnchor" id="parameter-health_startup_cmd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-health-startup-cmd"><strong>health_startup_cmd</strong></p> +<a class="ansibleOptionLink" href="#parameter-health_startup_cmd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> -<td><div class="ansible-option-cell"><p>Set or alter a healthcheck command for a container.</p> +<td><div class="ansible-option-cell"><p>Set a startup healthcheck command for a container.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-health_startup_interval"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-health-startup-interval"><strong>health_startup_interval</strong></p> +<a class="ansibleOptionLink" href="#parameter-health_startup_interval" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set an interval for the startup healthcheck.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-health_startup_retries"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-health-startup-retries"><strong>health_startup_retries</strong></p> +<a class="ansibleOptionLink" href="#parameter-health_startup_retries" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The number of attempts allowed before the startup healthcheck restarts the container. If set to 0, the container is never restarted. The default is 0.</p> </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck_failure_action"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-failure-action"><strong>healthcheck_failure_action</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck_failure_action" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +<div class="ansibleOptionAnchor" id="parameter-health_startup_success"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-health-startup-success"><strong>health_startup_success</strong></p> +<a class="ansibleOptionLink" href="#parameter-health_startup_success" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The number of successful runs required before the startup healthcheck succeeds and the regular healthcheck begins. A value of 0 means that any success begins the regular healthcheck. The default is 0.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-health_startup_timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-health-startup-timeout"><strong>health_startup_timeout</strong></p> +<a class="ansibleOptionLink" href="#parameter-health_startup_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The maximum time a startup healthcheck command has to complete before it is marked as failed.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck"></div> +<div class="ansibleOptionAnchor" id="parameter-health_cmd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-cmd"></span><strong>healthcheck</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_cmd</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set or alter a healthcheck command for a container.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck_failure_action"></div> +<div class="ansibleOptionAnchor" id="parameter-health_on_failure"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-failure-action"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-on-failure"></span><strong>healthcheck_failure_action</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck_failure_action" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_on_failure</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>The action to be taken when the container is considered unhealthy. The action must be one of “none”, “kill”, “restart”, or “stop”. The default policy is “none”.</p> <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> @@ -621,48 +716,63 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck_interval"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-interval"><strong>healthcheck_interval</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck_interval" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck_interval"></div> +<div class="ansibleOptionAnchor" id="parameter-health_interval"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-interval"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-interval"></span><strong>healthcheck_interval</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck_interval" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_interval</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set an interval for the healthchecks (a value of disable results in no automatic timer setup) (default “30s”)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck_retries"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-retries"><strong>healthcheck_retries</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck_retries" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck_retries"></div> +<div class="ansibleOptionAnchor" id="parameter-health_retries"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-retries"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-retries"></span><strong>healthcheck_retries</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck_retries" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_retries</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>The number of retries allowed before a healthcheck is considered to be unhealthy. The default value is 3.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck_start_period"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-start-period"><strong>healthcheck_start_period</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck_start_period" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck_start_period"></div> +<div class="ansibleOptionAnchor" id="parameter-health_start_period"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-start-period"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-start-period"></span><strong>healthcheck_start_period</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck_start_period" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_start_period</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>The initialization time needed for a container to bootstrap. The value can be expressed in time format like 2m3s. The default value is 0s</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-healthcheck_timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-timeout"><strong>healthcheck_timeout</strong></p> -<a class="ansibleOptionLink" href="#parameter-healthcheck_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-healthcheck_timeout"></div> +<div class="ansibleOptionAnchor" id="parameter-health_timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-healthcheck-timeout"><span id="ansible-collections-containers-podman-podman-container-module-parameter-health-timeout"></span><strong>healthcheck_timeout</strong></p> +<a class="ansibleOptionLink" href="#parameter-healthcheck_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: health_timeout</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>The maximum time allowed to complete the healthcheck before an interval is considered failed. Like start-period, the value can be expressed in a time format such as 1m22s. The default value is 30s</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-hooks_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-hooks-dir"><strong>hooks_dir</strong></p> <a class="ansibleOptionLink" href="#parameter-hooks_dir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Each .json file in the path configures a hook for Podman containers. For more details on the syntax of the JSON files and the semantics of hook injection, see oci-hooks(5). Can be set multiple times.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-hostname"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-hostname"><strong>hostname</strong></p> <a class="ansibleOptionLink" href="#parameter-hostname" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Container host name. Sets the container host name that is available inside the container.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-hostuser"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-hostuser"><strong>hostuser</strong></p> +<a class="ansibleOptionLink" href="#parameter-hostuser" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Add a user account to /etc/passwd from the host to the container. The Username or UID must exist on the host system.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-http_proxy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-http-proxy"><strong>http_proxy</strong></p> <a class="ansibleOptionLink" href="#parameter-http_proxy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -721,13 +831,25 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-init_ctr"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-init-ctr"><strong>init_ctr</strong></p> +<a class="ansibleOptionLink" href="#parameter-init_ctr" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>(Pods only). When using pods, create an init style container, which is run after the infra container is started but before regular pod containers are started.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"once"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"always"</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-init_path"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-init-path"><strong>init_path</strong></p> <a class="ansibleOptionLink" href="#parameter-init_path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to the container-init binary.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-interactive"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-interactive"><strong>interactive</strong></p> <a class="ansibleOptionLink" href="#parameter-interactive" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -739,13 +861,20 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ip"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-ip"><strong>ip</strong></p> <a class="ansibleOptionLink" href="#parameter-ip" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Specify a static IP address for the container, for example ‘10.88.64.128’. Can only be used if no additional CNI networks to join were specified via ‘network:’, and if the container is not joining another container’s network namespace via ‘network container:<name|id>’. The address must be within the default CNI network’s pool (default 10.88.0.0/16).</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-ip6"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-ip6"><strong>ip6</strong></p> +<a class="ansibleOptionLink" href="#parameter-ip6" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Specify a static IPv6 address for the container</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ipc"></div> <div class="ansibleOptionAnchor" id="parameter-ipc_mode"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-ipc-mode"><span id="ansible-collections-containers-podman-podman-container-module-parameter-ipc"></span><strong>ipc</strong></p> @@ -902,13 +1031,27 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-network_aliases"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-network-aliases"><strong>network_aliases</strong></p> -<a class="ansibleOptionLink" href="#parameter-network_aliases" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +<div class="ansibleOptionAnchor" id="parameter-network_aliases"></div> +<div class="ansibleOptionAnchor" id="parameter-network_alias"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-network-aliases"><span id="ansible-collections-containers-podman-podman-container-module-parameter-network-alias"></span><strong>network_aliases</strong></p> +<a class="ansibleOptionLink" href="#parameter-network_aliases" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: network_alias</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Add network-scoped alias for the container. A container will only have access to aliases on the first network that it joins. This is a limitation that will be removed in a later release.</p> </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-no_healthcheck"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-no-healthcheck"><strong>no_healthcheck</strong></p> +<a class="ansibleOptionLink" href="#parameter-no_healthcheck" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Disable any defined healthchecks for container.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-no_hosts"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-no-hosts"><strong>no_hosts</strong></p> <a class="ansibleOptionLink" href="#parameter-no_hosts" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -920,7 +1063,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-oom_kill_disable"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-oom-kill-disable"><strong>oom_kill_disable</strong></p> <a class="ansibleOptionLink" href="#parameter-oom_kill_disable" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -932,14 +1075,47 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-oom_score_adj"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-oom-score-adj"><strong>oom_score_adj</strong></p> <a class="ansibleOptionLink" href="#parameter-oom_score_adj" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Tune the host’s OOM preferences for containers (accepts -1000 to 1000)</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-os"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-os"><strong>os</strong></p> +<a class="ansibleOptionLink" href="#parameter-os" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Override the OS, defaults to hosts, of the image to be pulled. For example, windows.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-passwd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-passwd"><strong>passwd</strong></p> +<a class="ansibleOptionLink" href="#parameter-passwd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Allow Podman to add entries to /etc/passwd and /etc/group when used in conjunction with the –user option. This is used to override the Podman provided user setup in favor of entrypoint configurations such as libnss-extrausers.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-passwd_entry"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-passwd-entry"><strong>passwd_entry</strong></p> +<a class="ansibleOptionLink" href="#parameter-passwd_entry" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Customize the entry that is written to the /etc/passwd file within the container when –passwd is used.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-personality"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-personality"><strong>personality</strong></p> +<a class="ansibleOptionLink" href="#parameter-personality" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Personality sets the execution domain via Linux personality(2).</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pid"></div> <div class="ansibleOptionAnchor" id="parameter-pid_mode"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pid-mode"><span id="ansible-collections-containers-podman-podman-container-module-parameter-pid"></span><strong>pid</strong></p> <a class="ansibleOptionLink" href="#parameter-pid" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: pid_mode</span></p> @@ -948,6 +1124,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Set the PID mode for the container</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-pid_file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pid-file"><strong>pid_file</strong></p> +<a class="ansibleOptionLink" href="#parameter-pid_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>When the pidfile location is specified, the container process’ PID is written to the pidfile.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pids_limit"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pids-limit"><strong>pids_limit</strong></p> <a class="ansibleOptionLink" href="#parameter-pids_limit" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> @@ -956,12 +1139,40 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-platform"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-platform"><strong>platform</strong></p> +<a class="ansibleOptionLink" href="#parameter-platform" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Specify the platform for selecting the image.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pod"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pod"><strong>pod</strong></p> <a class="ansibleOptionLink" href="#parameter-pod" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run container in an existing pod. If you want podman to make the pod for you, prefix the pod name with “new:”</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-pod_id_file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pod-id-file"><strong>pod_id_file</strong></p> +<a class="ansibleOptionLink" href="#parameter-pod_id_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Run container in an existing pod and read the pod’s ID from the specified file. When a container is run within a pod which has an infra-container, the infra-container starts first.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-preserve_fd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-preserve-fd"><strong>preserve_fd</strong></p> +<a class="ansibleOptionLink" href="#parameter-preserve_fd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Pass down to the process the additional file descriptors specified in the comma separated list.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-preserve_fds"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-preserve-fds"><strong>preserve_fds</strong></p> +<a class="ansibleOptionLink" href="#parameter-preserve_fds" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Pass down to the process N additional file descriptors (in addition to 0, 1, 2). The total FDs are 3\+N.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-privileged"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-privileged"><strong>privileged</strong></p> <a class="ansibleOptionLink" href="#parameter-privileged" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -998,26 +1209,47 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-pull"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-pull"><strong>pull</strong></p> +<a class="ansibleOptionLink" href="#parameter-pull" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Pull image policy. The default is ‘missing’.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"missing"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"always"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"never"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"newer"</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-quadlet-dir"><strong>quadlet_dir</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_dir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to the directory to write quadlet file in. By default, it will be set as <code class="docutils literal notranslate"><span class="pre">/etc/containers/systemd/</span></code> for root user, <code class="docutils literal notranslate"><span class="pre">~/.config/containers/systemd/</span></code> for non-root users.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_filename"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-quadlet-filename"><strong>quadlet_filename</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_filename" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Name of quadlet file to write. By default it takes <code class="docutils literal notranslate"><span class="pre">name</span></code> value.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_options"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-quadlet-options"><strong>quadlet_options</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_options" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Options for the quadlet file. Provide missing in usual container args options as a list of lines to add.</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-rdt_class"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-rdt-class"><strong>rdt_class</strong></p> +<a class="ansibleOptionLink" href="#parameter-rdt_class" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Rdt-class sets the class of service (CLOS or COS) for the container to run in. Requires root.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-read_only"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-read-only"><strong>read_only</strong></p> <a class="ansibleOptionLink" href="#parameter-read_only" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -1076,6 +1308,20 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-retry"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-retry"><strong>retry</strong></p> +<a class="ansibleOptionLink" href="#parameter-retry" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Number of times to retry pulling or pushing images between the registry and local storage in case of failure. Default is 3.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-retry_delay"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-retry-delay"><strong>retry_delay</strong></p> +<a class="ansibleOptionLink" href="#parameter-retry_delay" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Duration of delay between retry attempts when pulling or pushing images between the registry and local storage in case of failure.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-rm"></div> <div class="ansibleOptionAnchor" id="parameter-remove"></div> <div class="ansibleOptionAnchor" id="parameter-auto_remove"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-rm"><span id="ansible-collections-containers-podman-podman-container-module-parameter-remove"></span><span id="ansible-collections-containers-podman-podman-container-module-parameter-auto-remove"></span><strong>rm</strong></p> @@ -1091,6 +1337,18 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-rmi"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-rmi"><strong>rmi</strong></p> +<a class="ansibleOptionLink" href="#parameter-rmi" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>After exit of the container, remove the image unless another container is using it. Implies –rm on the new container. The default is false.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-rootfs"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-rootfs"><strong>rootfs</strong></p> <a class="ansibleOptionLink" href="#parameter-rootfs" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -1102,13 +1360,20 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-sdnotify"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-sdnotify"><strong>sdnotify</strong></p> <a class="ansibleOptionLink" href="#parameter-sdnotify" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Determines how to use the NOTIFY_SOCKET, as passed with systemd and Type=notify. Can be container, conmon, ignore.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-seccomp_policy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-seccomp-policy"><strong>seccomp_policy</strong></p> +<a class="ansibleOptionLink" href="#parameter-seccomp_policy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Specify the policy to select the seccomp profile.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-secrets"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-secrets"><strong>secrets</strong></p> <a class="ansibleOptionLink" href="#parameter-secrets" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> @@ -1131,6 +1396,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-shm_size_systemd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-shm-size-systemd"><strong>shm_size_systemd</strong></p> +<a class="ansibleOptionLink" href="#parameter-shm_size_systemd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Size of systemd-specific tmpfs mounts such as /run, /run/lock, /var/log/journal and /tmp.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-sig_proxy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-sig-proxy"><strong>sig_proxy</strong></p> <a class="ansibleOptionLink" href="#parameter-sig_proxy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -1142,7 +1414,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-state"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-state"><strong>state</strong></p> <a class="ansibleOptionLink" href="#parameter-state" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -1163,55 +1435,62 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-stop_signal"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-stop-signal"><strong>stop_signal</strong></p> <a class="ansibleOptionLink" href="#parameter-stop_signal" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Signal to stop a container. Default is SIGTERM.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-stop_time"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-stop-time"><strong>stop_time</strong></p> <a class="ansibleOptionLink" href="#parameter-stop_time" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Seconds to wait before forcibly stopping the container. Use -1 for infinite wait. Applies to “stopped” status.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-stop_timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-stop-timeout"><strong>stop_timeout</strong></p> <a class="ansibleOptionLink" href="#parameter-stop_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-cell"><p>Timeout (in seconds) to stop a container. Default is 10.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-subgidname"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-subgidname"><strong>subgidname</strong></p> <a class="ansibleOptionLink" href="#parameter-subgidname" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run the container in a new user namespace using the map with ‘name’ in the /etc/subgid file.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-subuidname"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-subuidname"><strong>subuidname</strong></p> <a class="ansibleOptionLink" href="#parameter-subuidname" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run the container in a new user namespace using the map with ‘name’ in the /etc/subuid file.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-sysctl"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-sysctl"><strong>sysctl</strong></p> <a class="ansibleOptionLink" href="#parameter-sysctl" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Configure namespaced kernel parameters at runtime</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-systemd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-systemd"><strong>systemd</strong></p> <a class="ansibleOptionLink" href="#parameter-systemd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run container in systemd mode. The default is true.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-timeout"><strong>timeout</strong></p> +<a class="ansibleOptionLink" href="#parameter-timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Maximum time (in seconds) a container is allowed to run before conmon sends it the kill signal. By default containers run until they exit or are stopped by “podman stop”.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-timezone"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-timezone"><strong>timezone</strong></p> <a class="ansibleOptionLink" href="#parameter-timezone" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> @@ -1220,13 +1499,25 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-tls_verify"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-tls-verify"><strong>tls_verify</strong></p> +<a class="ansibleOptionLink" href="#parameter-tls_verify" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Require HTTPS and verify certificates when pulling images.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-tmpfs"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-tmpfs"><strong>tmpfs</strong></p> <a class="ansibleOptionLink" href="#parameter-tmpfs" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Create a tmpfs mount. For example tmpfs “/tmp” “rw,size=787448k,mode=1777”</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-tty"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-tty"><strong>tty</strong></p> <a class="ansibleOptionLink" href="#parameter-tty" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -1238,14 +1529,14 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-uidmap"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-uidmap"><strong>uidmap</strong></p> <a class="ansibleOptionLink" href="#parameter-uidmap" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run the container in a new user namespace using the supplied mapping.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ulimit"></div> <div class="ansibleOptionAnchor" id="parameter-ulimits"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-ulimits"><span id="ansible-collections-containers-podman-podman-container-module-parameter-ulimit"></span><strong>ulimit</strong></p> <a class="ansibleOptionLink" href="#parameter-ulimit" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: ulimits</span></p> @@ -1254,6 +1545,32 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Ulimit options</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-umask"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-umask"><strong>umask</strong></p> +<a class="ansibleOptionLink" href="#parameter-umask" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the umask inside the container. Defaults to 0022. Remote connections use local containers.conf for defaults.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-unsetenv"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-unsetenv"><strong>unsetenv</strong></p> +<a class="ansibleOptionLink" href="#parameter-unsetenv" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Unset default environment variables for the container.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-unsetenv_all"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-unsetenv-all"><strong>unsetenv_all</strong></p> +<a class="ansibleOptionLink" href="#parameter-unsetenv_all" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Unset all default environment variables for the container.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-user"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-user"><strong>user</strong></p> <a class="ansibleOptionLink" href="#parameter-user" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> @@ -1278,6 +1595,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-variant"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-variant"><strong>variant</strong></p> +<a class="ansibleOptionLink" href="#parameter-variant" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Use VARIANT instead of the default architecture variant of the container image.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-volume"></div> <div class="ansibleOptionAnchor" id="parameter-volumes"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-volumes"><span id="ansible-collections-containers-podman-podman-container-module-parameter-volume"></span><strong>volume</strong></p> <a class="ansibleOptionLink" href="#parameter-volume" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: volumes</span></p> @@ -1286,14 +1610,14 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Create a bind mount. If you specify, volume /HOST-DIR:/CONTAINER-DIR, podman bind mounts /HOST-DIR in the host to /CONTAINER-DIR in the podman container.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-volumes_from"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-volumes-from"><strong>volumes_from</strong></p> <a class="ansibleOptionLink" href="#parameter-volumes_from" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Mount volumes from the specified container(s).</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-workdir"></div> <div class="ansibleOptionAnchor" id="parameter-working_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-container-module-parameter-working-dir"><span id="ansible-collections-containers-podman-podman-container-module-parameter-workdir"></span><strong>workdir</strong></p> <a class="ansibleOptionLink" href="#parameter-workdir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: working_dir</span></p> @@ -1494,6 +1818,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_containers_module.html b/ansible_collections/containers/podman/docs/podman_containers_module.html index adc0dca87..53914c128 100644 --- a/ansible_collections/containers/podman/docs/podman_containers_module.html +++ b/ansible_collections/containers/podman/docs/podman_containers_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_containers module – Manage podman containers in a batch<a class="headerlink" href="#containers-podman-podman-containers-module-manage-podman-containers-in-a-batch" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -168,6 +168,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_export_module.html b/ansible_collections/containers/podman/docs/podman_export_module.html index b5e525aa4..c74c58a05 100644 --- a/ansible_collections/containers/podman/docs/podman_export_module.html +++ b/ansible_collections/containers/podman/docs/podman_export_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_export module – Export a podman container<a class="headerlink" href="#containers-podman-podman-export-module-export-a-podman-container" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -185,6 +185,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_generate_systemd_module.html b/ansible_collections/containers/podman/docs/podman_generate_systemd_module.html index daec06e3f..cad291774 100644 --- a/ansible_collections/containers/podman/docs/podman_generate_systemd_module.html +++ b/ansible_collections/containers/podman/docs/podman_generate_systemd_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_generate_systemd module – Generate systemd unit from a pod or a container<a class="headerlink" href="#containers-podman-podman-generate-systemd-module-generate-systemd-unit-from-a-pod-or-a-container" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -427,6 +427,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_image_info_module.html b/ansible_collections/containers/podman/docs/podman_image_info_module.html index b64277209..0f493199d 100644 --- a/ansible_collections/containers/podman/docs/podman_image_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_image_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_image_info module – Gather info about images using podman<a class="headerlink" href="#containers-podman-podman-image-info-module-gather-info-about-images-using-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> @@ -187,6 +187,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_image_module.html b/ansible_collections/containers/podman/docs/podman_image_module.html index 941b06dfa..218526333 100644 --- a/ansible_collections/containers/podman/docs/podman_image_module.html +++ b/ansible_collections/containers/podman/docs/podman_image_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_image module – Pull images for use by podman<a class="headerlink" href="#containers-podman-podman-image-module-pull-images-for-use-by-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> @@ -117,6 +117,15 @@ To check whether it is installed, run <code class="code docutils literal notrans </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-build/container_file"></div> +<div class="ansibleOptionAnchor" id="parameter-build_args/container_file"></div> +<div class="ansibleOptionAnchor" id="parameter-buildargs/container_file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-container-file"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-container-file"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-container-file"></span><strong>container_file</strong></p> +<a class="ansibleOptionLink" href="#parameter-build/container_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Content of the Containerfile to use for building the image. Mutually exclusive with the <code class="docutils literal notranslate"><span class="pre">file</span></code> option which is path to the existing Containerfile.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/extra_args"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/extra_args"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/extra_args"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-extra-args"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-extra-args"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-extra-args"></span><strong>extra_args</strong></p> @@ -125,16 +134,16 @@ To check whether it is installed, run <code class="code docutils literal notrans <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Extra args to pass to build, if executed. Does not idempotently check for new build args.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/file"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/file"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-file"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-file"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-file"></span><strong>file</strong></p> <a class="ansibleOptionLink" href="#parameter-build/file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> -<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Path to the Containerfile if it is not in the build context directory.</p> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Path to the Containerfile if it is not in the build context directory. Mutually exclusive with the <code class="docutils literal notranslate"><span class="pre">container_file</span></code> option.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/force_rm"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/force_rm"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/force_rm"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-force-rm"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-force-rm"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-force-rm"></span><strong>force_rm</strong></p> @@ -148,7 +157,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/format"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/format"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/format"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-format"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-format"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-format"></span><strong>format</strong></p> @@ -162,7 +171,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/rm"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/rm"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/rm"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-rm"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-rm"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-rm"></span><strong>rm</strong></p> @@ -176,7 +185,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/target"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/target"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/target"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-target"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-target"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-target"></span><strong>target</strong></p> @@ -185,7 +194,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Specify the target build stage to build.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-build/volume"></div> <div class="ansibleOptionAnchor" id="parameter-build_args/volume"></div> <div class="ansibleOptionAnchor" id="parameter-buildargs/volume"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-buildargs-volume"><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-args-volume"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-build-volume"></span><strong>volume</strong></p> @@ -194,14 +203,14 @@ To check whether it is installed, run <code class="code docutils literal notrans <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Specify multiple volume / mount options to mount one or more mounts to a container.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ca_cert_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-ca-cert-dir"><strong>ca_cert_dir</strong></p> <a class="ansibleOptionLink" href="#parameter-ca_cert_dir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to directory containing TLS certificates and keys to use.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-executable"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-executable"><strong>executable</strong></p> <a class="ansibleOptionLink" href="#parameter-executable" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -209,7 +218,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">"podman"</span></code></p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-force"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-force"><strong>force</strong></p> <a class="ansibleOptionLink" href="#parameter-force" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -222,28 +231,28 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-name"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-name"><strong>name</strong></p> <a class="ansibleOptionLink" href="#parameter-name" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> </div></td> <td><div class="ansible-option-cell"><p>Name of the image to pull, push, or delete. It may contain a tag using the format <code class="docutils literal notranslate"><span class="pre">image:tag</span></code>.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-password"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-password"><strong>password</strong></p> <a class="ansibleOptionLink" href="#parameter-password" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Password to use when authenticating to remote registries.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-path"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-path"><strong>path</strong></p> <a class="ansibleOptionLink" href="#parameter-path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to the build context directory.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pull"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-pull"><strong>pull</strong></p> <a class="ansibleOptionLink" href="#parameter-pull" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -255,6 +264,13 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-pull_extra_args"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-pull-extra-args"><strong>pull_extra_args</strong></p> +<a class="ansibleOptionLink" href="#parameter-pull_extra_args" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Extra arguments to pass to the pull command.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-push"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push"><strong>push</strong></p> <a class="ansibleOptionLink" href="#parameter-push" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -297,10 +313,17 @@ To check whether it is installed, run <code class="code docutils literal notrans </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-push_args/extra_args"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push-args-extra-args"><strong>extra_args</strong></p> +<a class="ansibleOptionLink" href="#parameter-push_args/extra_args" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Extra args to pass to push, if executed. Does not idempotently check for new push args.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-push_args/format"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push-args-format"><strong>format</strong></p> <a class="ansibleOptionLink" href="#parameter-push_args/format" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> -<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Manifest type to use when pushing an image using the ‘dir’ transport (default is manifest type of source).</p> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Manifest type to use when pushing an image using the ‘dir’ transport (default is manifest type of source)</p> <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> <ul class="simple"> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"oci"</span></code></p></li> @@ -309,7 +332,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-push_args/remove_signatures"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push-args-remove-signatures"><strong>remove_signatures</strong></p> <a class="ansibleOptionLink" href="#parameter-push_args/remove_signatures" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -321,21 +344,22 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-push_args/sign_by"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push-args-sign-by"><strong>sign_by</strong></p> <a class="ansibleOptionLink" href="#parameter-push_args/sign_by" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Path to a key file to use to sign the image.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-push_args/transport"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-push-args-transport"><strong>transport</strong></p> <a class="ansibleOptionLink" href="#parameter-push_args/transport" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> -<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Transport to use when pushing in image. If no transport is set, will attempt to push to a remote registry.</p> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Transport to use when pushing in image. If no transport is set, will attempt to push to a remote registry</p> <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> <ul class="simple"> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"dir"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"docker"</span></code></p></li> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"docker-archive"</span></code></p></li> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"docker-daemon"</span></code></p></li> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"oci-archive"</span></code></p></li> @@ -343,28 +367,28 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-quadlet-dir"><strong>quadlet_dir</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_dir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to the directory to write quadlet file in. By default, it will be set as <code class="docutils literal notranslate"><span class="pre">/etc/containers/systemd/</span></code> for root user, <code class="docutils literal notranslate"><span class="pre">~/.config/containers/systemd/</span></code> for non-root users.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_filename"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-quadlet-filename"><strong>quadlet_filename</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_filename" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Name of quadlet file to write. By default it takes image name without prefixes and tags.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_options"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-quadlet-options"><strong>quadlet_options</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_options" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Options for the quadlet file. Provide missing in usual network args options as a list of lines to add.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-state"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-state"><strong>state</strong></p> <a class="ansibleOptionLink" href="#parameter-state" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -378,7 +402,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-tag"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-tag"><strong>tag</strong></p> <a class="ansibleOptionLink" href="#parameter-tag" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -386,14 +410,14 @@ To check whether it is installed, run <code class="code docutils literal notrans <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">"latest"</span></code></p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-username"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-username"><strong>username</strong></p> <a class="ansibleOptionLink" href="#parameter-username" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>username to use when authenticating to remote registries.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-validate_certs"></div> <div class="ansibleOptionAnchor" id="parameter-tlsverify"></div> <div class="ansibleOptionAnchor" id="parameter-tls_verify"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-image-module-parameter-validate-certs"><span id="ansible-collections-containers-podman-podman-image-module-parameter-tlsverify"></span><span id="ansible-collections-containers-podman-podman-image-module-parameter-tls-verify"></span><strong>validate_certs</strong></p> @@ -516,6 +540,15 @@ To check whether it is installed, run <code class="code docutils literal notrans <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">nginx</span> <span class="w"> </span><span class="nt">arch</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">amd64</span> +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Build a container from file inline</span> +<span class="w"> </span><span class="nt">containers.podman.podman_image</span><span class="p">:</span> +<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mycustom_image</span> +<span class="w"> </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">build</span> +<span class="w"> </span><span class="nt">build</span><span class="p">:</span> +<span class="w"> </span><span class="nt">container_file</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|-</span> +<span class="w"> </span><span class="no">FROM alpine:latest</span> +<span class="w"> </span><span class="no">CMD echo "Hello, World!"</span> + <span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Create a quadlet file for an image</span> <span class="w"> </span><span class="nt">containers.podman.podman_image</span><span class="p">:</span> <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker.io/library/alpine:latest</span> @@ -546,7 +579,7 @@ To check whether it is installed, run <code class="code docutils literal notrans </div></td> <td><div class="ansible-option-cell"><p>Image inspection results for the image that was pulled, pushed, or built.</p> <p class="ansible-option-line"><strong class="ansible-option-returned-bold">Returned:</strong> success</p> -<p class="ansible-option-line ansible-option-sample"><strong class="ansible-option-sample-bold">Sample:</strong> <code class="ansible-option-sample docutils literal notranslate"><span class="pre">[{"Annotations":</span> <span class="pre">{},</span> <span class="pre">"Architecture":</span> <span class="pre">"amd64",</span> <span class="pre">"Author":</span> <span class="pre">"",</span> <span class="pre">"Comment":</span> <span class="pre">"from</span> <span class="pre">Bitnami</span> <span class="pre">with</span> <span class="pre">love",</span> <span class="pre">"ContainerConfig":</span> <span class="pre">{"Cmd":</span> <span class="pre">["/run.sh"],</span> <span class="pre">"Entrypoint":</span> <span class="pre">["/app-entrypoint.sh"],</span> <span class="pre">"Env":</span> <span class="pre">["PATH=/opt/bitnami/java/bin:/opt/bitnami/wildfly/bin:/opt/bitnami/nami/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",</span> <span class="pre">"IMAGE_OS=debian-9",</span> <span class="pre">"NAMI_VERSION=1.0.0-1",</span> <span class="pre">"GPG_KEY_SERVERS_LIST=ha.pool.sks-keyservers.net",</span> <span class="pre">"TINI_VERSION=v0.13.2",</span> <span class="pre">"TINI_GPG_KEY=595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7",</span> <span class="pre">"GOSU_VERSION=1.10",</span> <span class="pre">"GOSU_GPG_KEY=B42F6819007F00F88E364FD4036A9C25BF357DD4",</span> <span class="pre">"BITNAMI_IMAGE_VERSION=16.0.0-debian-9-r27",</span> <span class="pre">"BITNAMI_PKG_CHMOD=-R</span> <span class="pre">g+rwX",</span> <span class="pre">"BITNAMI_PKG_EXTRA_DIRS=/home/wildfly",</span> <span class="pre">"HOME=/",</span> <span class="pre">"BITNAMI_APP_NAME=wildfly",</span> <span class="pre">"NAMI_PREFIX=/.nami",</span> <span class="pre">"WILDFLY_HOME=/home/wildfly",</span> <span class="pre">"WILDFLY_JAVA_HOME=",</span> <span class="pre">"WILDFLY_JAVA_OPTS=",</span> <span class="pre">"WILDFLY_MANAGEMENT_HTTP_PORT_NUMBER=9990",</span> <span class="pre">"WILDFLY_PASSWORD=bitnami",</span> <span class="pre">"WILDFLY_PUBLIC_CONSOLE=true",</span> <span class="pre">"WILDFLY_SERVER_AJP_PORT_NUMBER=8009",</span> <span class="pre">"WILDFLY_SERVER_HTTP_PORT_NUMBER=8080",</span> <span class="pre">"WILDFLY_SERVER_INTERFACE=0.0.0.0",</span> <span class="pre">"WILDFLY_USERNAME=user",</span> <span class="pre">"WILDFLY_WILDFLY_HOME=/home/wildfly",</span> <span class="pre">"WILDFLY_WILDFLY_OPTS=-Dwildfly.as.deployment.ondemand=false"],</span> <span class="pre">"ExposedPorts":</span> <span class="pre">{"8080/tcp":</span> <span class="pre">{},</span> <span class="pre">"9990/tcp":</span> <span class="pre">{}},</span> <span class="pre">"Labels":</span> <span class="pre">{"maintainer":</span> <span class="pre">"Bitnami</span> <span class="pre"><containers@bitnami.com>"},</span> <span class="pre">"User":</span> <span class="pre">"1001"},</span> <span class="pre">"Created":</span> <span class="pre">"2019-04-10T05:48:03.553887623Z",</span> <span class="pre">"Digest":</span> <span class="pre">"sha256:5a8ab28e314c2222de3feaf6dac94a0436a37fc08979d2722c99d2bef2619a9b",</span> <span class="pre">"GraphDriver":</span> <span class="pre">{"Data":</span> <span class="pre">{"LowerDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/142c1beadf1bb09fbd929465ec98c9dca3256638220450efb4214727d0d0680e/diff:/var/lib/containers/s",</span> <span class="pre">"MergedDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/merged",</span> <span class="pre">"UpperDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/diff",</span> <span class="pre">"WorkDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/work"},</span> <span class="pre">"Name":</span> <span class="pre">"overlay"},</span> <span class="pre">"History":</span> <span class="pre">[{"comment":</span> <span class="pre">"from</span> <span class="pre">Bitnami</span> <span class="pre">with</span> <span class="pre">love",</span> <span class="pre">"created":</span> <span class="pre">"2019-04-09T22:27:40.659377677Z"},</span> <span class="pre">{"created":</span> <span class="pre">"2019-04-09T22:38:53.86336555Z",</span> <span class="pre">"created_by":</span> <span class="pre">"/bin/sh</span> <span class="pre">-c</span> <span class="pre">#(nop)</span>  <span class="pre">LABEL</span> <span class="pre">maintainer=Bitnami</span> <span class="pre"><containers@bitnami.com>",</span> <span class="pre">"empty_layer":</span> <span class="pre">true},</span> <span class="pre">{"created":</span> <span class="pre">"2019-04-09T22:38:54.022778765Z",</span> <span class="pre">"created_by":</span> <span class="pre">"/bin/sh</span> <span class="pre">-c</span> <span class="pre">#(nop)</span>  <span class="pre">ENV</span> <span class="pre">IMAGE_OS=debian-9",</span> <span class="pre">"empty_layer":</span> <span class="pre">true}],</span> <span class="pre">"Id":</span> <span class="pre">"ace34da54e4af2145e1ad277005adb235a214e4dfe1114c2db9ab460b840f785",</span> <span class="pre">"Labels":</span> <span class="pre">{"maintainer":</span> <span class="pre">"Bitnami</span> <span class="pre"><containers@bitnami.com>"},</span> <span class="pre">"ManifestType":</span> <span class="pre">"application/vnd.docker.distribution.manifest.v1+prettyjws",</span> <span class="pre">"Os":</span> <span class="pre">"linux",</span> <span class="pre">"Parent":</span> <span class="pre">"",</span> <span class="pre">"RepoDigests":</span> <span class="pre">["quay.io/bitnami/wildfly@sha256:5a8ab28e314c2222de3feaf6dac94a0436a37fc08979d2722c99d2bef2619a9b"],</span> <span class="pre">"RepoTags":</span> <span class="pre">["quay.io/bitnami/wildfly:latest"],</span> <span class="pre">"RootFS":</span> <span class="pre">{"Layers":</span> <span class="pre">["",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">""],</span> <span class="pre">"Type":</span> <span class="pre">"layers"},</span> <span class="pre">"Size":</span> <span class="pre">466180019,</span> <span class="pre">"User":</span> <span class="pre">"1001",</span> <span class="pre">"Version":</span> <span class="pre">"18.09.3",</span> <span class="pre">"VirtualSize":</span> <span class="pre">466180019}]</span></code></p> +<p class="ansible-option-line ansible-option-sample"><strong class="ansible-option-sample-bold">Sample:</strong> <code class="ansible-option-sample docutils literal notranslate"><span class="pre">[{"Annotations":</span> <span class="pre">{},</span> <span class="pre">"Architecture":</span> <span class="pre">"amd64",</span> <span class="pre">"Author":</span> <span class="pre">"",</span> <span class="pre">"Comment":</span> <span class="pre">"from</span> <span class="pre">Bitnami</span> <span class="pre">with</span> <span class="pre">love",</span> <span class="pre">"ContainerConfig":</span> <span class="pre">{"Cmd":</span> <span class="pre">["/run.sh"],</span> <span class="pre">"Entrypoint":</span> <span class="pre">["/app-entrypoint.sh"],</span> <span class="pre">"Env":</span> <span class="pre">["PATH=/opt/bitnami/java/bin:/opt/bitnami/wildfly/bin:/opt/bitnami/nami/bin:...",</span> <span class="pre">"IMAGE_OS=debian-9",</span> <span class="pre">"NAMI_VERSION=1.0.0-1",</span> <span class="pre">"GPG_KEY_SERVERS_LIST=ha.pool.sks-keyservers.net",</span> <span class="pre">"TINI_VERSION=v0.13.2",</span> <span class="pre">"TINI_GPG_KEY=595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7",</span> <span class="pre">"GOSU_VERSION=1.10",</span> <span class="pre">"GOSU_GPG_KEY=B42F6819007F00F88E364FD4036A9C25BF357DD4",</span> <span class="pre">"BITNAMI_IMAGE_VERSION=16.0.0-debian-9-r27",</span> <span class="pre">"BITNAMI_PKG_CHMOD=-R</span> <span class="pre">g+rwX",</span> <span class="pre">"BITNAMI_PKG_EXTRA_DIRS=/home/wildfly",</span> <span class="pre">"HOME=/",</span> <span class="pre">"BITNAMI_APP_NAME=wildfly",</span> <span class="pre">"NAMI_PREFIX=/.nami",</span> <span class="pre">"WILDFLY_HOME=/home/wildfly",</span> <span class="pre">"WILDFLY_JAVA_HOME=",</span> <span class="pre">"WILDFLY_JAVA_OPTS=",</span> <span class="pre">"WILDFLY_MANAGEMENT_HTTP_PORT_NUMBER=9990",</span> <span class="pre">"WILDFLY_PASSWORD=bitnami",</span> <span class="pre">"WILDFLY_PUBLIC_CONSOLE=true",</span> <span class="pre">"WILDFLY_SERVER_AJP_PORT_NUMBER=8009",</span> <span class="pre">"WILDFLY_SERVER_HTTP_PORT_NUMBER=8080",</span> <span class="pre">"WILDFLY_SERVER_INTERFACE=0.0.0.0",</span> <span class="pre">"WILDFLY_USERNAME=user",</span> <span class="pre">"WILDFLY_WILDFLY_HOME=/home/wildfly",</span> <span class="pre">"WILDFLY_WILDFLY_OPTS=-Dwildfly.as.deployment.ondemand=false"],</span> <span class="pre">"ExposedPorts":</span> <span class="pre">{"8080/tcp":</span> <span class="pre">{},</span> <span class="pre">"9990/tcp":</span> <span class="pre">{}},</span> <span class="pre">"Labels":</span> <span class="pre">{"maintainer":</span> <span class="pre">"Bitnami</span> <span class="pre"><containers@bitnami.com>"},</span> <span class="pre">"User":</span> <span class="pre">"1001"},</span> <span class="pre">"Created":</span> <span class="pre">"2019-04-10T05:48:03.553887623Z",</span> <span class="pre">"Digest":</span> <span class="pre">"sha256:5a8ab28e314c2222de3feaf6dac94a0436a37fc08979d2722c99d2bef2619a9b",</span> <span class="pre">"GraphDriver":</span> <span class="pre">{"Data":</span> <span class="pre">{"LowerDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/142c1beadf1bb09fbd929465e..../diff:/var/lib/containers/s",</span> <span class="pre">"MergedDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/merged",</span> <span class="pre">"UpperDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/diff",</span> <span class="pre">"WorkDir":</span> <span class="pre">"/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/work"},</span> <span class="pre">"Name":</span> <span class="pre">"overlay"},</span> <span class="pre">"History":</span> <span class="pre">[{"comment":</span> <span class="pre">"from</span> <span class="pre">Bitnami</span> <span class="pre">with</span> <span class="pre">love",</span> <span class="pre">"created":</span> <span class="pre">"2019-04-09T22:27:40.659377677Z"},</span> <span class="pre">{"created":</span> <span class="pre">"2019-04-09T22:38:53.86336555Z",</span> <span class="pre">"created_by":</span> <span class="pre">"/bin/sh</span> <span class="pre">-c</span> <span class="pre">#(nop)</span>  <span class="pre">LABEL</span> <span class="pre">maintainer=Bitnami</span> <span class="pre"><containers@bitnami.com>",</span> <span class="pre">"empty_layer":</span> <span class="pre">true},</span> <span class="pre">{"created":</span> <span class="pre">"2019-04-09T22:38:54.022778765Z",</span> <span class="pre">"created_by":</span> <span class="pre">"/bin/sh</span> <span class="pre">-c</span> <span class="pre">#(nop)</span>  <span class="pre">ENV</span> <span class="pre">IMAGE_OS=debian-9",</span> <span class="pre">"empty_layer":</span> <span class="pre">true}],</span> <span class="pre">"Id":</span> <span class="pre">"ace34da54e4af2145e1ad277005adb235a214e4dfe1114c2db9ab460b840f785",</span> <span class="pre">"Labels":</span> <span class="pre">{"maintainer":</span> <span class="pre">"Bitnami</span> <span class="pre"><containers@bitnami.com>"},</span> <span class="pre">"ManifestType":</span> <span class="pre">"application/vnd.docker.distribution.manifest.v1+prettyjws",</span> <span class="pre">"Os":</span> <span class="pre">"linux",</span> <span class="pre">"Parent":</span> <span class="pre">"",</span> <span class="pre">"RepoDigests":</span> <span class="pre">["quay.io/bitnami/wildfly@sha256:5a8ab28e314c2222de3feaf6dac94a0436a37fc08979d2722c99d2bef2619a9b"],</span> <span class="pre">"RepoTags":</span> <span class="pre">["quay.io/bitnami/wildfly:latest"],</span> <span class="pre">"RootFS":</span> <span class="pre">{"Layers":</span> <span class="pre">["",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">"",</span> <span class="pre">""],</span> <span class="pre">"Type":</span> <span class="pre">"layers"},</span> <span class="pre">"Size":</span> <span class="pre">466180019,</span> <span class="pre">"User":</span> <span class="pre">"1001",</span> <span class="pre">"Version":</span> <span class="pre">"18.09.3",</span> <span class="pre">"VirtualSize":</span> <span class="pre">466180019}]</span></code></p> </div></td> </tr> </tbody> @@ -606,6 +639,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_import_module.html b/ansible_collections/containers/podman/docs/podman_import_module.html index b7140a6b9..c7ff14bd0 100644 --- a/ansible_collections/containers/podman/docs/podman_import_module.html +++ b/ansible_collections/containers/podman/docs/podman_import_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_import module – Import Podman container from a tar file.<a class="headerlink" href="#containers-podman-podman-import-module-import-podman-container-from-a-tar-file" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -206,6 +206,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_load_module.html b/ansible_collections/containers/podman/docs/podman_load_module.html index 256597ef5..851da1a40 100644 --- a/ansible_collections/containers/podman/docs/podman_load_module.html +++ b/ansible_collections/containers/podman/docs/podman_load_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_load module – Load image from a tar file.<a class="headerlink" href="#containers-podman-podman-load-module-load-image-from-a-tar-file" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -180,6 +180,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_login_info_module.html b/ansible_collections/containers/podman/docs/podman_login_info_module.html index 9b18049cd..24498f73b 100644 --- a/ansible_collections/containers/podman/docs/podman_login_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_login_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_login_info module – Return the logged-in user if any for a given registry<a class="headerlink" href="#containers-podman-podman-login-info-module-return-the-logged-in-user-if-any-for-a-given-registry" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -190,6 +190,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_login_module.html b/ansible_collections/containers/podman/docs/podman_login_module.html index 61adafae2..6116da049 100644 --- a/ansible_collections/containers/podman/docs/podman_login_module.html +++ b/ansible_collections/containers/podman/docs/podman_login_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_login module – Login to a container registry using podman<a class="headerlink" href="#containers-podman-podman-login-module-login-to-a-container-registry-using-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -204,6 +204,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_logout_module.html b/ansible_collections/containers/podman/docs/podman_logout_module.html index 9d0295c50..57c7c482d 100644 --- a/ansible_collections/containers/podman/docs/podman_logout_module.html +++ b/ansible_collections/containers/podman/docs/podman_logout_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_logout module – Log out of a container registry using podman<a class="headerlink" href="#containers-podman-podman-logout-module-log-out-of-a-container-registry-using-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -198,6 +198,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_network_info_module.html b/ansible_collections/containers/podman/docs/podman_network_info_module.html index cb8f98328..c53da9ae0 100644 --- a/ansible_collections/containers/podman/docs/podman_network_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_network_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_network_info module – Gather info about podman networks<a class="headerlink" href="#containers-podman-podman-network-info-module-gather-info-about-podman-networks" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -182,6 +182,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_network_module.html b/ansible_collections/containers/podman/docs/podman_network_module.html index daaf3bc22..0075d7951 100644 --- a/ansible_collections/containers/podman/docs/podman_network_module.html +++ b/ansible_collections/containers/podman/docs/podman_network_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_network module – Manage podman networks<a class="headerlink" href="#containers-podman-podman-network-module-manage-podman-networks" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -102,13 +102,20 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-dns"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-dns"><strong>dns</strong></p> +<a class="ansibleOptionLink" href="#parameter-dns" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set network-scoped DNS resolver/nameserver for containers in this network. If not set, the host servers from /etc/resolv.conf is used.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-driver"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-driver"><strong>driver</strong></p> <a class="ansibleOptionLink" href="#parameter-driver" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Driver to manage the network (default “bridge”)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-executable"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-executable"><strong>executable</strong></p> <a class="ansibleOptionLink" href="#parameter-executable" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -116,7 +123,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">"podman"</span></code></p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-force"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-force"><strong>force</strong></p> <a class="ansibleOptionLink" href="#parameter-force" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -128,21 +135,21 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-gateway"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-gateway"><strong>gateway</strong></p> <a class="ansibleOptionLink" href="#parameter-gateway" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>IPv4 or IPv6 gateway for the subnet</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-interface_name"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-interface-name"><strong>interface_name</strong></p> <a class="ansibleOptionLink" href="#parameter-interface_name" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>For bridge, it uses the bridge interface name. For macvlan, it is the parent device on the host (it is the same as ‘opt.parent’)</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-internal"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-internal"><strong>internal</strong></p> <a class="ansibleOptionLink" href="#parameter-internal" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -154,18 +161,31 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ip_range"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-ip-range"><strong>ip_range</strong></p> <a class="ansibleOptionLink" href="#parameter-ip_range" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Allocate container IP from range</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-ipam_driver"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-ipam-driver"><strong>ipam_driver</strong></p> +<a class="ansibleOptionLink" href="#parameter-ipam_driver" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the ipam driver (IP Address Management Driver) for the network. When unset podman chooses an ipam driver automatically based on the network driver</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"host-local"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"dhcp"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"none"</span></code></p></li> +</ul> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-ipv6"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-ipv6"><strong>ipv6</strong></p> <a class="ansibleOptionLink" href="#parameter-ipv6" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> -<td><div class="ansible-option-cell"><p>Enable IPv6 (Dual Stack) networking. You must pass a IPv6 subnet. The subnet option must be used with the ipv6 option.</p> +<td><div class="ansible-option-cell"><p>Enable IPv6 (Dual Stack) networking. You must pass a IPv6 subnet. The subnet option must be used with the ipv6 option. Idempotency is not supported because it generates subnets randomly.</p> <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> <ul class="simple"> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> @@ -188,6 +208,34 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-net_config"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-net-config"><strong>net_config</strong></p> +<a class="ansibleOptionLink" href="#parameter-net_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=dictionary</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>List of dictionaries with network configuration. Each dictionary should contain ‘subnet’ and ‘gateway’ keys. ‘ip_range’ is optional.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-net_config/gateway"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-net-config-gateway"><strong>gateway</strong></p> +<a class="ansibleOptionLink" href="#parameter-net_config/gateway" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> +</div></td> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Gateway for the subnet</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-net_config/ip_range"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-net-config-ip-range"><strong>ip_range</strong></p> +<a class="ansibleOptionLink" href="#parameter-net_config/ip_range" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Allocate container IP from range</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-net_config/subnet"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-net-config-subnet"><strong>subnet</strong></p> +<a class="ansibleOptionLink" href="#parameter-net_config/subnet" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> +</div></td> +<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Subnet in CIDR format</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-opt"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-opt"><strong>opt</strong></p> <a class="ansibleOptionLink" href="#parameter-opt" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> @@ -275,6 +323,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-route"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-route"><strong>route</strong></p> +<a class="ansibleOptionLink" href="#parameter-route" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>A static route in the format <destination in CIDR notation>,<gateway>,<route metric (optional)>. This route will be added to every container in this network.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-state"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-state"><strong>state</strong></p> <a class="ansibleOptionLink" href="#parameter-state" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -287,7 +342,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-subnet"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-network-module-parameter-subnet"><strong>subnet</strong></p> <a class="ansibleOptionLink" href="#parameter-subnet" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -399,6 +454,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_play_module.html b/ansible_collections/containers/podman/docs/podman_play_module.html index 30a3654c8..d05c146f8 100644 --- a/ansible_collections/containers/podman/docs/podman_play_module.html +++ b/ansible_collections/containers/podman/docs/podman_play_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_play module – Play kubernetes YAML file using podman<a class="headerlink" href="#containers-podman-podman-play-module-play-kubernetes-yaml-file-using-podman" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -406,6 +406,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_pod_info_module.html b/ansible_collections/containers/podman/docs/podman_pod_info_module.html index d93a4370c..61cf7fb14 100644 --- a/ansible_collections/containers/podman/docs/podman_pod_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_pod_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_pod_info module – Gather info about podman pods<a class="headerlink" href="#containers-podman-podman-pod-info-module-gather-info-about-podman-pods" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -182,6 +182,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_pod_module.html b/ansible_collections/containers/podman/docs/podman_pod_module.html index 6cd068f33..47accd99a 100644 --- a/ansible_collections/containers/podman/docs/podman_pod_module.html +++ b/ansible_collections/containers/podman/docs/podman_pod_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_pod module – Manage Podman pods<a class="headerlink" href="#containers-podman-podman-pod-module-manage-podman-pods" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -175,8 +175,10 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> -<div class="ansibleOptionAnchor" id="parameter-dns_opt"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-dns-opt"><strong>dns_opt</strong></p> -<a class="ansibleOptionLink" href="#parameter-dns_opt" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +<div class="ansibleOptionAnchor" id="parameter-dns_opt"></div> +<div class="ansibleOptionAnchor" id="parameter-dns_option"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-dns-option"><span id="ansible-collections-containers-podman-podman-pod-module-parameter-dns-opt"></span><strong>dns_opt</strong></p> +<a class="ansibleOptionLink" href="#parameter-dns_opt" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: dns_option</span></p> +<p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set custom DNS options in the /etc/resolv.conf file that will be shared between all containers in the pod.</p> </div></td> @@ -197,6 +199,18 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-exit_policy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-exit-policy"><strong>exit_policy</strong></p> +<a class="ansibleOptionLink" href="#parameter-exit_policy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the exit policy of the pod when the last container exits. Supported policies are stop and continue</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"stop"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"continue"</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd"><strong>generate_systemd</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> @@ -204,21 +218,21 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">{}</span></code></p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/after"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-after"><strong>after</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/after" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Add the systemd unit after (After=) option, that ordering dependencies between the list of dependencies and this service.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/container_prefix"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-container-prefix"><strong>container_prefix</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/container_prefix" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Set the systemd unit name prefix for containers. The default is “container”.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/names"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-names"><strong>names</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/names" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -230,7 +244,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/new"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-new"><strong>new</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/new" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -242,7 +256,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/no_header"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-no-header"><strong>no_header</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/no_header" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -254,28 +268,28 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/path"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-path"><strong>path</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Specify a path to the directory where unit files will be generated. Required for this option. If it doesn’t exist, the directory will be created.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/pod_prefix"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-pod-prefix"><strong>pod_prefix</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/pod_prefix" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Set the systemd unit name prefix for pods. The default is “pod”.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/requires"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-requires"><strong>requires</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/requires" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Set the systemd unit requires (Requires=) option. Similar to wants, but declares a stronger requirement dependency.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/restart_policy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-restart-policy"><strong>restart_policy</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/restart_policy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -292,28 +306,28 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/restart_sec"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-restart-sec"><strong>restart_sec</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/restart_sec" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Set the systemd service restartsec value.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/separator"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-separator"><strong>separator</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/separator" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Set the systemd unit name separator between the name/id of a container/pod and the prefix. The default is “-” (dash).</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/start_timeout"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-start-timeout"><strong>start_timeout</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/start_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Override the default start timeout for the container with the given value.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/stop_timeout"></div> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/time"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-time"><span id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-stop-timeout"></span><strong>stop_timeout</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/stop_timeout" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: time</span></p> @@ -322,20 +336,27 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Override the default stop timeout for the container with the given value. Called `time` before version 4.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-generate_systemd/wants"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-generate-systemd-wants"><strong>wants</strong></p> <a class="ansibleOptionLink" href="#parameter-generate_systemd/wants" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Add the systemd unit wants (Wants=) option, that this service is (weak) dependent on.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-gidmap"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-gidmap"><strong>gidmap</strong></p> <a class="ansibleOptionLink" href="#parameter-gidmap" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>GID map for the user namespace. Using this flag will run the container with user namespace enabled. It conflicts with the `userns` and `subgidname` flags.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-gpus"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-gpus"><strong>gpus</strong></p> +<a class="ansibleOptionLink" href="#parameter-gpus" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>GPU devices to add to the container (‘all’ to pass all GPUs).</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-hostname"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-hostname"><strong>hostname</strong></p> <a class="ansibleOptionLink" href="#parameter-hostname" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> @@ -391,27 +412,34 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-ip6"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-ip6"><strong>ip6</strong></p> +<a class="ansibleOptionLink" href="#parameter-ip6" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set a static IPv6 for the pod’s shared network.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-label"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-label"><strong>label</strong></p> <a class="ansibleOptionLink" href="#parameter-label" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Add metadata to a pod, pass dictionary of label keys and values.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-label_file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-label-file"><strong>label_file</strong></p> <a class="ansibleOptionLink" href="#parameter-label_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Read in a line delimited file of labels.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-mac_address"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-mac-address"><strong>mac_address</strong></p> <a class="ansibleOptionLink" href="#parameter-mac_address" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set a static MAC address for the pod’s shared network.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-memory"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-memory"><strong>memory</strong></p> <a class="ansibleOptionLink" href="#parameter-memory" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -419,7 +447,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <p>A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes).</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-memory_swap"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-memory-swap"><strong>memory_swap</strong></p> <a class="ansibleOptionLink" href="#parameter-memory_swap" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -427,21 +455,21 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <p>A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes).</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-name"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-name"><strong>name</strong></p> <a class="ansibleOptionLink" href="#parameter-name" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> </div></td> <td><div class="ansible-option-cell"><p>Assign a name to the pod.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-network"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-network"><strong>network</strong></p> <a class="ansibleOptionLink" href="#parameter-network" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set network mode for the pod. Supported values are bridge (the default), host (do not create a network namespace, all containers in the pod will use the host’s network), or a list of names of CNI networks to join.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-network_alias"></div> <div class="ansibleOptionAnchor" id="parameter-network_aliases"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-network-aliases"><span id="ansible-collections-containers-podman-podman-pod-module-parameter-network-alias"></span><strong>network_alias</strong></p> <a class="ansibleOptionLink" href="#parameter-network_alias" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: network_aliases</span></p> @@ -450,7 +478,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Add a network-scoped alias for the pod, setting the alias for all networks that the pod joins. To set a name only for a specific network, use the alias option as described under the -`network` option. Network aliases work only with the bridge networking mode. This option can be specified multiple times.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-no_hosts"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-no-hosts"><strong>no_hosts</strong></p> <a class="ansibleOptionLink" href="#parameter-no_hosts" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -462,21 +490,21 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pid"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-pid"><strong>pid</strong></p> <a class="ansibleOptionLink" href="#parameter-pid" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set the PID mode for the pod. The default is to create a private PID namespace for the pod. Requires the PID namespace to be shared via `share` option.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-pod_id_file"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-pod-id-file"><strong>pod_id_file</strong></p> <a class="ansibleOptionLink" href="#parameter-pod_id_file" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Write the pod ID to the file.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-publish"></div> <div class="ansibleOptionAnchor" id="parameter-ports"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-publish"><span id="ansible-collections-containers-podman-podman-pod-module-parameter-ports"></span><strong>publish</strong></p> <a class="ansibleOptionLink" href="#parameter-publish" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: ports</span></p> @@ -485,28 +513,28 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Publish a port or range of ports from the pod to the host.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_dir"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-quadlet-dir"><strong>quadlet_dir</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_dir" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> </div></td> <td><div class="ansible-option-cell"><p>Path to the directory to write quadlet file in. By default, it will be set as <code class="docutils literal notranslate"><span class="pre">/etc/containers/systemd/</span></code> for root user, <code class="docutils literal notranslate"><span class="pre">~/.config/containers/systemd/</span></code> for non-root users.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_filename"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-quadlet-filename"><strong>quadlet_filename</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_filename" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Name of quadlet file to write. By default it takes <em>name</em> value.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-quadlet_options"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-quadlet-options"><strong>quadlet_options</strong></p> <a class="ansibleOptionLink" href="#parameter-quadlet_options" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Options for the quadlet file. Provide missing in usual container args options as a list of lines to add.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-recreate"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-recreate"><strong>recreate</strong></p> <a class="ansibleOptionLink" href="#parameter-recreate" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -518,13 +546,53 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-restart_policy"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-restart-policy"><strong>restart_policy</strong></p> +<a class="ansibleOptionLink" href="#parameter-restart_policy" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Restart policy to follow when containers exit.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-security_opt"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-security-opt"><strong>security_opt</strong></p> +<a class="ansibleOptionLink" href="#parameter-security_opt" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Security options for the pod.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-share"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-share"><strong>share</strong></p> <a class="ansibleOptionLink" href="#parameter-share" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>A comma delimited list of kernel namespaces to share. If none or “” is specified, no namespaces will be shared. The namespaces to choose from are ipc, net, pid, user, uts.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-share_parent"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-share-parent"><strong>share_parent</strong></p> +<a class="ansibleOptionLink" href="#parameter-share_parent" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>This boolean determines whether or not all containers entering the pod use the pod as their cgroup parent. The default value of this option in Podman is true.</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-shm_size"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-shm-size"><strong>shm_size</strong></p> +<a class="ansibleOptionLink" href="#parameter-shm_size" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the size of the /dev/shm shared memory space. A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes). If the unit is omitted, the system uses bytes. If the size is omitted, the default is 64m. When size is 0, there is no limit on the amount of memory used for IPC by the pod.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-shm_size_systemd"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-shm-size-systemd"><strong>shm_size_systemd</strong></p> +<a class="ansibleOptionLink" href="#parameter-shm_size_systemd" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Size of systemd-specific tmpfs mounts such as /run, /run/lock, /var/log/journal and /tmp. A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes). If the unit is omitted, the system uses bytes. If the size is omitted, the default is 64m. When size is 0, the usage is limited to 50 percents of the host’s available memory.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-state"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-state"><strong>state</strong></p> <a class="ansibleOptionLink" href="#parameter-state" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> @@ -559,19 +627,33 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-sysctl"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-sysctl"><strong>sysctl</strong></p> +<a class="ansibleOptionLink" href="#parameter-sysctl" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set kernel parameters for the pod.</p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-uidmap"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-uidmap"><strong>uidmap</strong></p> <a class="ansibleOptionLink" href="#parameter-uidmap" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Run the container in a new user namespace using the supplied mapping. This option conflicts with the `userns` and `subuidname` options. This option provides a way to map host UIDs to container UIDs. It can be passed several times to map different ranges.</p> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-userns"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-userns"><strong>userns</strong></p> <a class="ansibleOptionLink" href="#parameter-userns" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> <td><div class="ansible-option-cell"><p>Set the user namespace mode for all the containers in a pod. It defaults to the PODMAN_USERNS environment variable. An empty value (“”) means user namespaces are disabled.</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-uts"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-uts"><strong>uts</strong></p> +<a class="ansibleOptionLink" href="#parameter-uts" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Set the UTS namespace mode for the pod.</p> +</div></td> +</tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-volume"></div> <div class="ansibleOptionAnchor" id="parameter-volumes"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-volumes"><span id="ansible-collections-containers-podman-podman-pod-module-parameter-volume"></span><strong>volume</strong></p> @@ -581,6 +663,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <td><div class="ansible-option-cell"><p>Create a bind mount.</p> </div></td> </tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-volumes_from"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-pod-module-parameter-volumes-from"><strong>volumes_from</strong></p> +<a class="ansibleOptionLink" href="#parameter-volumes_from" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Mount volumes from the specified container.</p> +</div></td> +</tr> </tbody> </table> </section> @@ -600,6 +689,62 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <span class="w"> </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">started</span> <span class="w"> </span><span class="nt">publish</span><span class="p">:</span><span class="w"> </span><span class="s">"127.0.0.1::80"</span> +<span class="c1"># Full workflow example with pod and containers</span> +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Create a pod with parameters</span> +<span class="w"> </span><span class="nt">containers.podman.podman_pod</span><span class="p">:</span> +<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mypod</span> +<span class="w"> </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">created</span> +<span class="w"> </span><span class="nt">network</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">host</span> +<span class="w"> </span><span class="nt">share</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">net</span> +<span class="w"> </span><span class="nt">userns</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">auto</span> +<span class="w"> </span><span class="nt">security_opt</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">seccomp=unconfined</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apparmor=unconfined</span> +<span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mypod</span> +<span class="w"> </span><span class="nt">dns</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1.1.1.1</span> +<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/tmp:/tmp/:ro</span> +<span class="w"> </span><span class="nt">label</span><span class="p">:</span> +<span class="w"> </span><span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cval</span> +<span class="w"> </span><span class="nt">otherkey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kddkdk</span> +<span class="w"> </span><span class="nt">somekey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">someval</span> +<span class="w"> </span><span class="nt">add_host</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"google:5.5.5.5"</span> + +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Create containers attached to the pod</span> +<span class="w"> </span><span class="nt">containers.podman.podman_container</span><span class="p">:</span> +<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">"</span><span class="cp">{{</span> <span class="nv">item</span> <span class="cp">}}</span><span class="s">"</span> +<span class="w"> </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">created</span> +<span class="w"> </span><span class="nt">pod</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mypod</span> +<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">alpine</span> +<span class="w"> </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sleep 1h</span> +<span class="w"> </span><span class="nt">loop</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"container1"</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"container2"</span> + +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Start pod</span> +<span class="w"> </span><span class="nt">containers.podman.podman_pod</span><span class="p">:</span> +<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mypod</span> +<span class="w"> </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">started</span> +<span class="w"> </span><span class="nt">network</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">host</span> +<span class="w"> </span><span class="nt">share</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">net</span> +<span class="w"> </span><span class="nt">userns</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">auto</span> +<span class="w"> </span><span class="nt">security_opt</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">seccomp=unconfined</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apparmor=unconfined</span> +<span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mypod</span> +<span class="w"> </span><span class="nt">dns</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1.1.1.1</span> +<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/tmp:/tmp/:ro</span> +<span class="w"> </span><span class="nt">label</span><span class="p">:</span> +<span class="w"> </span><span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cval</span> +<span class="w"> </span><span class="nt">otherkey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kddkdk</span> +<span class="w"> </span><span class="nt">somekey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">someval</span> +<span class="w"> </span><span class="nt">add_host</span><span class="p">:</span> +<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"google:5.5.5.5"</span> + <span class="c1"># Create a Quadlet file for a pod</span> <span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">containers.podman.podman_pod</span><span class="p">:</span> <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">qpod</span> @@ -688,6 +833,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_prune_module.html b/ansible_collections/containers/podman/docs/podman_prune_module.html index 5340e199c..bfb4bae4a 100644 --- a/ansible_collections/containers/podman/docs/podman_prune_module.html +++ b/ansible_collections/containers/podman/docs/podman_prune_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_prune module – Allows to prune various podman objects<a class="headerlink" href="#containers-podman-podman-prune-module-allows-to-prune-various-podman-objects" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -339,6 +339,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_runlabel_module.html b/ansible_collections/containers/podman/docs/podman_runlabel_module.html index 9fa123e9d..4eb9cc87b 100644 --- a/ansible_collections/containers/podman/docs/podman_runlabel_module.html +++ b/ansible_collections/containers/podman/docs/podman_runlabel_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_runlabel module – Run given label from given image<a class="headerlink" href="#containers-podman-podman-runlabel-module-run-given-label-from-given-image" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -163,6 +163,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_save_module.html b/ansible_collections/containers/podman/docs/podman_save_module.html index ea7fe01b5..93356b0ed 100644 --- a/ansible_collections/containers/podman/docs/podman_save_module.html +++ b/ansible_collections/containers/podman/docs/podman_save_module.html @@ -15,7 +15,7 @@ <script src="_static/sphinx_highlight.js"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> - <link rel="next" title="containers.podman.podman_secret module – Manage podman secrets" href="podman_secret_module.html" /> + <link rel="next" title="containers.podman.podman_search module – Search for remote images using podman" href="podman_search_module.html" /> <link rel="prev" title="containers.podman.podman_runlabel module – Run given label from given image" href="podman_runlabel_module.html" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" /> @@ -37,7 +37,7 @@ <h1>containers.podman.podman_save module – Saves podman image to tar file<a class="headerlink" href="#containers-podman-podman-save-module-saves-podman-image-to-tar-file" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -221,6 +221,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> @@ -240,7 +241,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <ul> <li><a href="index.html">Documentation overview</a><ul> <li>Previous: <a href="podman_runlabel_module.html" title="previous chapter">containers.podman.podman_runlabel module – Run given label from given image</a></li> - <li>Next: <a href="podman_secret_module.html" title="next chapter">containers.podman.podman_secret module – Manage podman secrets</a></li> + <li>Next: <a href="podman_search_module.html" title="next chapter">containers.podman.podman_search module – Search for remote images using podman</a></li> </ul></li> </ul> </div> diff --git a/ansible_collections/containers/podman/docs/podman_search_module.html b/ansible_collections/containers/podman/docs/podman_search_module.html new file mode 100644 index 000000000..216d4c343 --- /dev/null +++ b/ansible_collections/containers/podman/docs/podman_search_module.html @@ -0,0 +1,273 @@ +<!DOCTYPE html> + +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" /> +<meta content="2.5.0" name="antsibull-docs" /> + + <title>containers.podman.podman_search module – Search for remote images using podman — Python documentation</title> + <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> + <link rel="stylesheet" type="text/css" href="_static/alabaster.css" /> + <link rel="stylesheet" type="text/css" href="_static/antsibull-minimal.css" /> + <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> + <script src="_static/doctools.js"></script> + <script src="_static/sphinx_highlight.js"></script> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="containers.podman.podman_secret module – Manage podman secrets" href="podman_secret_module.html" /> + <link rel="prev" title="containers.podman.podman_save module – Saves podman image to tar file" href="podman_save_module.html" /> + + <link rel="stylesheet" href="_static/custom.css" type="text/css" /> + + + <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> + + </head><body> + + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + + + <div class="body" role="main"> + + <span class="target" id="ansible-collections-containers-podman-podman-search-module"></span><section id="containers-podman-podman-search-module-search-for-remote-images-using-podman"> +<h1>containers.podman.podman_search module – Search for remote images using podman<a class="headerlink" href="#containers-podman-podman-search-module-search-for-remote-images-using-podman" title="Permalink to this heading">¶</a></h1> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> +<p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. +To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> +<p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> +<p>To use it in a playbook, specify: <code class="code docutils literal notranslate"><span class="pre">containers.podman.podman_search</span></code>.</p> +</div> +<nav class="contents local" id="contents"> +<ul class="simple"> +<li><p><a class="reference internal" href="#synopsis" id="id1">Synopsis</a></p></li> +<li><p><a class="reference internal" href="#parameters" id="id2">Parameters</a></p></li> +<li><p><a class="reference internal" href="#notes" id="id3">Notes</a></p></li> +<li><p><a class="reference internal" href="#examples" id="id4">Examples</a></p></li> +<li><p><a class="reference internal" href="#return-values" id="id5">Return Values</a></p></li> +</ul> +</nav> +<section id="synopsis"> +<h2><a class="toc-backref" href="#id1" role="doc-backlink">Synopsis</a><a class="headerlink" href="#synopsis" title="Permalink to this heading">¶</a></h2> +<ul class="simple"> +<li><p>Search for remote images using <code class="docutils literal notranslate"><span class="pre">podman</span></code></p></li> +</ul> +</section> +<section id="parameters"> +<h2><a class="toc-backref" href="#id2" role="doc-backlink">Parameters</a><a class="headerlink" href="#parameters" title="Permalink to this heading">¶</a></h2> +<table class="longtable ansible-option-table docutils align-default" style="width: 100%"> +<thead> +<tr class="row-odd"><th class="head"><p>Parameter</p></th> +<th class="head"><p>Comments</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-executable"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-search-module-parameter-executable"><strong>executable</strong></p> +<a class="ansibleOptionLink" href="#parameter-executable" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Path to <code class="docutils literal notranslate"><span class="pre">podman</span></code> executable if it is not in the <code class="docutils literal notranslate"><span class="pre">$PATH</span></code> on the machine running <code class="docutils literal notranslate"><span class="pre">podman</span></code></p> +<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">"podman"</span></code></p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-limit"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-search-module-parameter-limit"><strong>limit</strong></p> +<a class="ansibleOptionLink" href="#parameter-limit" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Limit the number of image results returned from the search (per image registry)</p> +<p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">25</span></code></p> +</div></td> +</tr> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-list_tags"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-search-module-parameter-list-tags"><strong>list_tags</strong></p> +<a class="ansibleOptionLink" href="#parameter-list_tags" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Whether or not to return the list of tags associated with each image</p> +<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> +<ul class="simple"> +<li><p><code class="ansible-option-default-bold docutils literal notranslate"><strong><span class="pre">false</span></strong></code> <span class="ansible-option-choices-default-mark">← (default)</span></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li> +</ul> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-term"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-search-module-parameter-term"><strong>term</strong></p> +<a class="ansibleOptionLink" href="#parameter-term" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The search term to look for. Will search all default registries unless a registry is defined in the search term.</p> +</div></td> +</tr> +</tbody> +</table> +</section> +<section id="notes"> +<h2><a class="toc-backref" href="#id3" role="doc-backlink">Notes</a><a class="headerlink" href="#notes" title="Permalink to this heading">¶</a></h2> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<ul class="simple"> +<li><p>Podman may required elevated privileges in order to run properly.</p></li> +</ul> +</div> +</section> +<section id="examples"> +<h2><a class="toc-backref" href="#id4" role="doc-backlink">Examples</a><a class="headerlink" href="#examples" title="Permalink to this heading">¶</a></h2> +<div class="highlight-yaml+jinja notranslate"><div class="highlight"><pre><span></span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Search for any rhel images</span> +<span class="w"> </span><span class="nt">containers.podman.podman_search</span><span class="p">:</span> +<span class="w"> </span><span class="nt">term</span><span class="p">:</span><span class="w"> </span><span class="s">"rhel"</span> +<span class="w"> </span><span class="nt">limit</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3</span> + +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Gather info on a specific remote image</span> +<span class="w"> </span><span class="nt">containers.podman.podman_search</span><span class="p">:</span> +<span class="w"> </span><span class="nt">term</span><span class="p">:</span><span class="w"> </span><span class="s">"myimageregistry.com/ansible-automation-platform/ee-minimal-rhel8"</span> + +<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Gather tag info on a known remote image</span> +<span class="w"> </span><span class="nt">containers.podman.podman_search</span><span class="p">:</span> +<span class="w"> </span><span class="nt">term</span><span class="p">:</span><span class="w"> </span><span class="s">"myimageregistry.com/ansible-automation-platform/ee-minimal-rhel8"</span> +<span class="w"> </span><span class="nt">list_tags</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">True</span> +</pre></div> +</div> +</section> +<section id="return-values"> +<h2><a class="toc-backref" href="#id5" role="doc-backlink">Return Values</a><a class="headerlink" href="#return-values" title="Permalink to this heading">¶</a></h2> +<p>Common return values are documented <span class="xref std std-ref">here</span>, the following are the fields unique to this module:</p> +<table class="longtable ansible-option-table docutils align-default" style="width: 100%"> +<thead> +<tr class="row-odd"><th class="head"><p>Key</p></th> +<th class="head"><p>Description</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="return-images"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-search-module-return-images"><strong>images</strong></p> +<a class="ansibleOptionLink" href="#return-images" title="Permalink to this return value"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>info from all or specified images</p> +<p class="ansible-option-line"><strong class="ansible-option-returned-bold">Returned:</strong> always</p> +<p class="ansible-option-line ansible-option-sample"><strong class="ansible-option-sample-bold">Sample:</strong> <code class="ansible-option-sample docutils literal notranslate"><span class="pre">[{"Automated":</span> <span class="pre">"",</span> <span class="pre">"Description":</span> <span class="pre">"Red</span> <span class="pre">Hat</span> <span class="pre">Enterprise</span> <span class="pre">Linux</span> <span class="pre">Atomic</span> <span class="pre">Image</span> <span class="pre">is</span> <span class="pre">a</span> <span class="pre">minimal,</span> <span class="pre">fully</span> <span class="pre">supported</span> <span class="pre">base</span> <span class="pre">image.",</span> <span class="pre">"Index":</span> <span class="pre">"registry.access.redhat.com",</span> <span class="pre">"Name":</span> <span class="pre">"registry.access.redhat.com/rhel7-atomic",</span> <span class="pre">"Official":</span> <span class="pre">"",</span> <span class="pre">"Stars":</span> <span class="pre">0,</span> <span class="pre">"Tags":</span> <span class="pre">["1.0",</span> <span class="pre">"1.1",</span> <span class="pre">"1.1.1-devel"]}]</span></code></p> +</div></td> +</tr> +</tbody> +</table> +<section id="authors"> +<h3>Authors<a class="headerlink" href="#authors" title="Permalink to this heading">¶</a></h3> +<ul class="simple"> +<li><p>Derek Waters (@derekwaters)</p></li> +</ul> +</section> +<section id="collection-links"> +<h3>Collection links<a class="headerlink" href="#collection-links" title="Permalink to this heading">¶</a></h3> +<ul class="ansible-links"> +<li><span><a aria-role="button" class="ansible-link reference external" href="https://github.com/containers/ansible-podman-collections/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" rel="noopener external" target="_blank">Issue Tracker</a></span></li> +<li><span><a aria-role="button" class="ansible-link reference external" href="https://github.com/containers/ansible-podman-collections" rel="noopener external" target="_blank">Repository (Sources)</a></span></li> +</ul> +</section> +</section> +</section> + + + </div> + + </div> + </div> + <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> + <div class="sphinxsidebarwrapper"> +<h1 class="logo"><a href="index.html">Python</a></h1> + + + + + + + + +<h3>Navigation</h3> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="podman_container_module.html">containers.podman.podman_container module – Manage podman containers</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_container_exec_module.html">containers.podman.podman_container_exec module – Executes a command in a running container.</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_container_info_module.html">containers.podman.podman_container_info module – Gather facts about containers using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_containers_module.html">containers.podman.podman_containers module – Manage podman containers in a batch</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_export_module.html">containers.podman.podman_export module – Export a podman container</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_generate_systemd_module.html">containers.podman.podman_generate_systemd module – Generate systemd unit from a pod or a container</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_image_module.html">containers.podman.podman_image module – Pull images for use by podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_image_info_module.html">containers.podman.podman_image_info module – Gather info about images using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_import_module.html">containers.podman.podman_import module – Import Podman container from a tar file.</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_load_module.html">containers.podman.podman_load module – Load image from a tar file.</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_login_module.html">containers.podman.podman_login module – Login to a container registry using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_login_info_module.html">containers.podman.podman_login_info module – Return the logged-in user if any for a given registry</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_logout_module.html">containers.podman.podman_logout module – Log out of a container registry using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_network_module.html">containers.podman.podman_network module – Manage podman networks</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_network_info_module.html">containers.podman.podman_network_info module – Gather info about podman networks</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_play_module.html">containers.podman.podman_play module – Play kubernetes YAML file using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_pod_module.html">containers.podman.podman_pod module – Manage Podman pods</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_pod_info_module.html">containers.podman.podman_pod_info module – Gather info about podman pods</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_search module – Search for remote images using podman</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_volume_module.html">containers.podman.podman_volume module – Manage Podman volumes</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_volume_info_module.html">containers.podman.podman_volume_info module – Gather info about podman volumes</a></li> +</ul> +<ul> +<li class="toctree-l1"><a class="reference internal" href="podman_unshare_become.html">containers.podman.podman_unshare become – Run tasks using podman unshare</a></li> +</ul> +<ul> +<li class="toctree-l1"><a class="reference internal" href="buildah_connection.html">containers.podman.buildah connection – Interact with an existing buildah container</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_connection.html">containers.podman.podman connection – Interact with an existing podman container</a></li> +</ul> + +<div class="relations"> +<h3>Related Topics</h3> +<ul> + <li><a href="index.html">Documentation overview</a><ul> + <li>Previous: <a href="podman_save_module.html" title="previous chapter">containers.podman.podman_save module – Saves podman image to tar file</a></li> + <li>Next: <a href="podman_secret_module.html" title="next chapter">containers.podman.podman_secret module – Manage podman secrets</a></li> + </ul></li> +</ul> +</div> +<div id="searchbox" style="display: none" role="search"> + <h3 id="searchlabel">Quick search</h3> + <div class="searchformwrapper"> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> + <input type="submit" value="Go" /> + </form> + </div> +</div> +<script>document.getElementById('searchbox').style.display = "block"</script> + + + + + + + + + </div> + </div> + <div class="clearer"></div> + </div> + <div class="footer"> + ©. + + | + Powered by <a href="http://sphinx-doc.org/">Sphinx 7.0.1</a> + & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a> + + | + <a href="_sources/podman_search_module.rst.txt" + rel="nofollow">Page source</a> + </div> + + + + + </body> +</html>
\ No newline at end of file diff --git a/ansible_collections/containers/podman/docs/podman_secret_info_module.html b/ansible_collections/containers/podman/docs/podman_secret_info_module.html index 7c8f69c54..adef8bd36 100644 --- a/ansible_collections/containers/podman/docs/podman_secret_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_secret_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_secret_info module – Gather info about podman secrets<a class="headerlink" href="#containers-podman-podman-secret-info-module-gather-info-about-podman-secrets" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -193,6 +193,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_secret_module.html b/ansible_collections/containers/podman/docs/podman_secret_module.html index 11b33f02c..c8c6c3e80 100644 --- a/ansible_collections/containers/podman/docs/podman_secret_module.html +++ b/ansible_collections/containers/podman/docs/podman_secret_module.html @@ -16,7 +16,7 @@ <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="next" title="containers.podman.podman_secret_info module – Gather info about podman secrets" href="podman_secret_info_module.html" /> - <link rel="prev" title="containers.podman.podman_save module – Saves podman image to tar file" href="podman_save_module.html" /> + <link rel="prev" title="containers.podman.podman_search module – Search for remote images using podman" href="podman_search_module.html" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" /> @@ -37,7 +37,7 @@ <h1>containers.podman.podman_secret module – Manage podman secrets<a class="headerlink" href="#containers-podman-podman-secret-module-manage-podman-secrets" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -80,14 +80,14 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <div class="ansibleOptionAnchor" id="parameter-data"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-data"><strong>data</strong></p> <a class="ansibleOptionLink" href="#parameter-data" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> -<td><div class="ansible-option-cell"><p>The value of the secret. Required when <code class="docutils literal notranslate"><span class="pre">state</span></code> is <code class="docutils literal notranslate"><span class="pre">present</span></code>.</p> +<td><div class="ansible-option-cell"><p>The value of the secret. Required when <code class="docutils literal notranslate"><span class="pre">state</span></code> is <code class="docutils literal notranslate"><span class="pre">present</span></code>. Mutually exclusive with <code class="docutils literal notranslate"><span class="pre">env</span></code> and <code class="docutils literal notranslate"><span class="pre">path</span></code>.</p> </div></td> </tr> <tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-debug"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-debug"><strong>debug</strong></p> <a class="ansibleOptionLink" href="#parameter-debug" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> -<td><div class="ansible-option-cell"><p>Enable debug mode for module.</p> +<td><div class="ansible-option-cell"><p>Enable debug mode for module. It prints secrets diff.</p> <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p> <ul class="simple"> <li><p><code class="ansible-option-default-bold docutils literal notranslate"><strong><span class="pre">false</span></strong></code> <span class="ansible-option-choices-default-mark">← (default)</span></p></li> @@ -110,6 +110,13 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </div></td> </tr> <tr class="row-even"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-env"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-env"><strong>env</strong></p> +<a class="ansibleOptionLink" href="#parameter-env" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>The name of the environment variable that contains the secret. Mutually exclusive with <code class="docutils literal notranslate"><span class="pre">data</span></code> and <code class="docutils literal notranslate"><span class="pre">path</span></code>.</p> +</div></td> +</tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-executable"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-executable"><strong>executable</strong></p> <a class="ansibleOptionLink" href="#parameter-executable" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p> </div></td> @@ -117,7 +124,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">"podman"</span></code></p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-force"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-force"><strong>force</strong></p> <a class="ansibleOptionLink" href="#parameter-force" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> </div></td> @@ -129,20 +136,27 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p </ul> </div></td> </tr> -<tr class="row-even"><td><div class="ansible-option-cell"> +<tr class="row-odd"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-labels"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-labels"><strong>labels</strong></p> <a class="ansibleOptionLink" href="#parameter-labels" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p> </div></td> <td><div class="ansible-option-cell"><p>Labels to set on the secret.</p> </div></td> </tr> -<tr class="row-odd"><td><div class="ansible-option-cell"> +<tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-name"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-name"><strong>name</strong></p> <a class="ansibleOptionLink" href="#parameter-name" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p> </div></td> <td><div class="ansible-option-cell"><p>The name of the secret.</p> </div></td> </tr> +<tr class="row-odd"><td><div class="ansible-option-cell"> +<div class="ansibleOptionAnchor" id="parameter-path"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-path"><strong>path</strong></p> +<a class="ansibleOptionLink" href="#parameter-path" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p> +</div></td> +<td><div class="ansible-option-cell"><p>Path to the file that contains the secret. Mutually exclusive with <code class="docutils literal notranslate"><span class="pre">data</span></code> and <code class="docutils literal notranslate"><span class="pre">env</span></code>.</p> +</div></td> +</tr> <tr class="row-even"><td><div class="ansible-option-cell"> <div class="ansibleOptionAnchor" id="parameter-skip_existing"></div><p class="ansible-option-title" id="ansible-collections-containers-podman-podman-secret-module-parameter-skip-existing"><strong>skip_existing</strong></p> <a class="ansibleOptionLink" href="#parameter-skip_existing" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p> @@ -253,6 +267,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> @@ -271,7 +286,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <h3>Related Topics</h3> <ul> <li><a href="index.html">Documentation overview</a><ul> - <li>Previous: <a href="podman_save_module.html" title="previous chapter">containers.podman.podman_save module – Saves podman image to tar file</a></li> + <li>Previous: <a href="podman_search_module.html" title="previous chapter">containers.podman.podman_search module – Search for remote images using podman</a></li> <li>Next: <a href="podman_secret_info_module.html" title="next chapter">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> </ul></li> </ul> diff --git a/ansible_collections/containers/podman/docs/podman_tag_module.html b/ansible_collections/containers/podman/docs/podman_tag_module.html index 17687a89a..c832b3647 100644 --- a/ansible_collections/containers/podman/docs/podman_tag_module.html +++ b/ansible_collections/containers/podman/docs/podman_tag_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_tag module – Add an additional name to a local image<a class="headerlink" href="#containers-podman-podman-tag-module-add-an-additional-name-to-a-local-image" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -165,6 +165,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_unshare_become.html b/ansible_collections/containers/podman/docs/podman_unshare_become.html index ae5b9003b..f57812095 100644 --- a/ansible_collections/containers/podman/docs/podman_unshare_become.html +++ b/ansible_collections/containers/podman/docs/podman_unshare_become.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_unshare become – Run tasks using podman unshare<a class="headerlink" href="#containers-podman-podman-unshare-become-run-tasks-using-podman-unshare" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This become plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This become plugin is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>.</p> @@ -254,6 +254,7 @@ To check whether it is installed, run <code class="code docutils literal notrans <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_volume_info_module.html b/ansible_collections/containers/podman/docs/podman_volume_info_module.html index 35af76fc6..8118bbd4f 100644 --- a/ansible_collections/containers/podman/docs/podman_volume_info_module.html +++ b/ansible_collections/containers/podman/docs/podman_volume_info_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_volume_info module – Gather info about podman volumes<a class="headerlink" href="#containers-podman-podman-volume-info-module-gather-info-about-podman-volumes" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -181,6 +181,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/podman_volume_module.html b/ansible_collections/containers/podman/docs/podman_volume_module.html index 11f57bf97..34b562578 100644 --- a/ansible_collections/containers/podman/docs/podman_volume_module.html +++ b/ansible_collections/containers/podman/docs/podman_volume_module.html @@ -37,7 +37,7 @@ <h1>containers.podman.podman_volume module – Manage Podman volumes<a class="headerlink" href="#containers-podman-podman-volume-module-manage-podman-volumes" title="Permalink to this heading">¶</a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> -<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.13.0).</p> +<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/containers/podman/">containers.podman collection</a> (version 1.15.2).</p> <p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>. To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p> <p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">containers.podman</span></code>. @@ -167,6 +167,8 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <ul class="simple"> <li><p><code class="ansible-option-default-bold docutils literal notranslate"><strong><span class="pre">"present"</span></strong></code> <span class="ansible-option-choices-default-mark">← (default)</span></p></li> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"absent"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"mounted"</span></code></p></li> +<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"unmounted"</span></code></p></li> <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">"quadlet"</span></code></p></li> </ul> </div></td> @@ -276,6 +278,7 @@ see <a class="reference internal" href="#ansible-collections-containers-podman-p <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/docs/search.html b/ansible_collections/containers/podman/docs/search.html index aeb228ad7..de1515205 100644 --- a/ansible_collections/containers/podman/docs/search.html +++ b/ansible_collections/containers/podman/docs/search.html @@ -104,6 +104,7 @@ <li class="toctree-l1"><a class="reference internal" href="podman_prune_module.html">containers.podman.podman_prune module – Allows to prune various podman objects</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_runlabel_module.html">containers.podman.podman_runlabel module – Run given label from given image</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_save_module.html">containers.podman.podman_save module – Saves podman image to tar file</a></li> +<li class="toctree-l1"><a class="reference internal" href="podman_search_module.html">containers.podman.podman_search module – Search for remote images using podman</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_module.html">containers.podman.podman_secret module – Manage podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_secret_info_module.html">containers.podman.podman_secret_info module – Gather info about podman secrets</a></li> <li class="toctree-l1"><a class="reference internal" href="podman_tag_module.html">containers.podman.podman_tag module – Add an additional name to a local image</a></li> diff --git a/ansible_collections/containers/podman/plugins/module_utils/podman/common.py b/ansible_collections/containers/podman/plugins/module_utils/podman/common.py index cbb6b080e..aac7b60eb 100644 --- a/ansible_collections/containers/podman/plugins/module_utils/podman/common.py +++ b/ansible_collections/containers/podman/plugins/module_utils/podman/common.py @@ -337,3 +337,88 @@ def get_podman_version(module, fail=True): (executable, err)) return None return out.split("version")[1].strip() + + +def createcommand(argument, info_config, boolean_type=False): + """Returns list of values for given argument from CreateCommand + from Podman container inspect output. + + Args: + argument (str): argument name + info_config (dict): dictionary with container info + boolean_type (bool): if True, then argument is boolean type + + Returns: + + all_values: list of values for given argument from createcommand + """ + if "createcommand" not in info_config: + return [] + cr_com = info_config["createcommand"] + argument_values = ARGUMENTS_OPTS_DICT.get(argument, [argument]) + all_values = [] + for arg in argument_values: + for ind, cr_opt in enumerate(cr_com): + if arg == cr_opt: + if boolean_type: + # This is a boolean argument and doesn't have value + return [True] + if not cr_com[ind + 1].startswith("-"): + # This is a key=value argument + all_values.append(cr_com[ind + 1]) + else: + # This is also a false/true switching argument + return [True] + if cr_opt.startswith("%s=" % arg): + all_values.append(cr_opt.split("=", 1)[1]) + return all_values + + +def diff_generic(params, info_config, module_arg, cmd_arg, boolean_type=False): + """ + Generic diff function for module arguments from CreateCommand + in Podman inspection output. + + Args: + params (dict): module parameters + info_config (dict): dictionary with container info + module_arg (str): module argument name + cmd_arg (str): command line argument name + boolean_type (bool): if True, then argument is boolean type + + Returns: + bool: True if there is a difference, False otherwise + + """ + before = createcommand(cmd_arg, info_config, boolean_type=boolean_type) + if before == []: + before = None + after = params[module_arg] + if boolean_type and (before, after) in [(None, False), (False, None)]: + before, after = False, False + return before, after + if before is None and after is None: + return before, after + if after is not None: + if isinstance(after, list): + after = ",".join(sorted([str(i).lower() for i in after])) + if before: + before = ",".join(sorted([str(i).lower() for i in before])) + elif isinstance(after, dict): + after = ",".join(sorted( + [str(k).lower() + "=" + str(v).lower() for k, v in after.items() if v is not None])) + if before: + before = ",".join(sorted([j.lower() for j in before])) + elif isinstance(after, bool): + after = str(after).capitalize() + if before is not None: + before = str(before[0]).capitalize() + elif isinstance(after, int): + after = str(after) + if before is not None: + before = str(before[0]) + else: + before = before[0] if before else None + else: + before = ",".join(sorted(before)) if len(before) > 1 else before[0] + return before, after diff --git a/ansible_collections/containers/podman/plugins/module_utils/podman/podman_container_lib.py b/ansible_collections/containers/podman/plugins/module_utils/podman/podman_container_lib.py index bf42ffdee..76458f144 100644 --- a/ansible_collections/containers/podman/plugins/module_utils/podman/podman_container_lib.py +++ b/ansible_collections/containers/podman/plugins/module_utils/podman/podman_container_lib.py @@ -8,8 +8,8 @@ from ansible_collections.containers.podman.plugins.module_utils.podman.common im from ansible_collections.containers.podman.plugins.module_utils.podman.common import lower_keys from ansible_collections.containers.podman.plugins.module_utils.podman.common import generate_systemd from ansible_collections.containers.podman.plugins.module_utils.podman.common import delete_systemd -from ansible_collections.containers.podman.plugins.module_utils.podman.common import normalize_signal -from ansible_collections.containers.podman.plugins.module_utils.podman.common import ARGUMENTS_OPTS_DICT +from ansible_collections.containers.podman.plugins.module_utils.podman.common import diff_generic +from ansible_collections.containers.podman.plugins.module_utils.podman.common import createcommand from ansible_collections.containers.podman.plugins.module_utils.podman.quadlet import create_quadlet_state from ansible_collections.containers.podman.plugins.module_utils.podman.quadlet import ContainerQuadlet @@ -23,15 +23,18 @@ ARGUMENTS_SPEC_CONTAINER = dict( 'absent', 'present', 'stopped', 'started', 'created', 'quadlet']), image=dict(type='str'), annotation=dict(type='dict'), + arch=dict(type='str'), attach=dict(type='list', elements='str', choices=['stdout', 'stderr', 'stdin']), authfile=dict(type='path'), blkio_weight=dict(type='int'), blkio_weight_device=dict(type='dict'), cap_add=dict(type='list', elements='str', aliases=['capabilities']), cap_drop=dict(type='list', elements='str'), + cgroup_conf=dict(type='dict'), cgroup_parent=dict(type='path'), cgroupns=dict(type='str'), cgroups=dict(type='str'), + chrootdirs=dict(type='str'), cidfile=dict(type='path'), cmd_args=dict(type='list', elements='str'), conmon_pidfile=dict(type='path'), @@ -44,6 +47,7 @@ ARGUMENTS_SPEC_CONTAINER = dict( cpus=dict(type='str'), cpuset_cpus=dict(type='str'), cpuset_mems=dict(type='str'), + decryption_key=dict(type='str', no_log=False), delete_depend=dict(type='bool'), delete_time=dict(type='str'), delete_volumes=dict(type='bool'), @@ -51,6 +55,7 @@ ARGUMENTS_SPEC_CONTAINER = dict( debug=dict(type='bool', default=False), detach_keys=dict(type='str', no_log=False), device=dict(type='list', elements='str'), + device_cgroup_rule=dict(type='str'), device_read_bps=dict(type='list', elements='str'), device_read_iops=dict(type='list', elements='str'), device_write_bps=dict(type='list', elements='str'), @@ -62,6 +67,7 @@ ARGUMENTS_SPEC_CONTAINER = dict( env=dict(type='dict'), env_file=dict(type='list', elements='path', aliases=['env_files']), env_host=dict(type='bool'), + env_merge=dict(type='dict'), etc_hosts=dict(type='dict', aliases=['add_hosts']), expose=dict(type='list', elements='str', aliases=[ 'exposed', 'exposed_ports']), @@ -70,23 +76,33 @@ ARGUMENTS_SPEC_CONTAINER = dict( force_delete=dict(type='bool', default=True), generate_systemd=dict(type='dict', default={}), gidmap=dict(type='list', elements='str'), + gpus=dict(type='str'), group_add=dict(type='list', elements='str', aliases=['groups']), - healthcheck=dict(type='str'), - healthcheck_interval=dict(type='str'), - healthcheck_retries=dict(type='int'), - healthcheck_start_period=dict(type='str'), - healthcheck_timeout=dict(type='str'), + group_entry=dict(type='str'), + healthcheck=dict(type='str', aliases=['health_cmd']), + healthcheck_interval=dict(type='str', aliases=['health_interval']), + healthcheck_retries=dict(type='int', aliases=['health_retries']), + healthcheck_start_period=dict(type='str', aliases=['health_start_period']), + health_startup_cmd=dict(type='str'), + health_startup_interval=dict(type='str'), + health_startup_retries=dict(type='int'), + health_startup_success=dict(type='int'), + health_startup_timeout=dict(type='str'), + healthcheck_timeout=dict(type='str', aliases=['health_timeout']), healthcheck_failure_action=dict(type='str', choices=[ - 'none', 'kill', 'restart', 'stop']), + 'none', 'kill', 'restart', 'stop'], aliases=['health_on_failure']), hooks_dir=dict(type='list', elements='str'), hostname=dict(type='str'), + hostuser=dict(type='str'), http_proxy=dict(type='bool'), image_volume=dict(type='str', choices=['bind', 'tmpfs', 'ignore']), image_strict=dict(type='bool', default=False), init=dict(type='bool'), + init_ctr=dict(type='str', choices=['once', 'always']), init_path=dict(type='str'), interactive=dict(type='bool'), ip=dict(type='str'), + ip6=dict(type='str'), ipc=dict(type='str', aliases=['ipc_mode']), kernel_memory=dict(type='str'), label=dict(type='dict', aliases=['labels']), @@ -108,32 +124,49 @@ ARGUMENTS_SPEC_CONTAINER = dict( memory_swappiness=dict(type='int'), mount=dict(type='list', elements='str', aliases=['mounts']), network=dict(type='list', elements='str', aliases=['net', 'network_mode']), - network_aliases=dict(type='list', elements='str'), + network_aliases=dict(type='list', elements='str', aliases=['network_alias']), + no_healthcheck=dict(type='bool'), no_hosts=dict(type='bool'), oom_kill_disable=dict(type='bool'), oom_score_adj=dict(type='int'), + os=dict(type='str'), + passwd=dict(type='bool', no_log=False), + passwd_entry=dict(type='str', no_log=False), + personality=dict(type='str'), pid=dict(type='str', aliases=['pid_mode']), + pid_file=dict(type='path'), pids_limit=dict(type='str'), + platform=dict(type='str'), pod=dict(type='str'), + pod_id_file=dict(type='path'), + preserve_fd=dict(type='list', elements='str'), + preserve_fds=dict(type='str'), privileged=dict(type='bool'), publish=dict(type='list', elements='str', aliases=[ 'ports', 'published', 'published_ports']), publish_all=dict(type='bool'), + pull=dict(type='str', choices=['always', 'missing', 'never', 'newer']), quadlet_dir=dict(type='path'), quadlet_filename=dict(type='str'), quadlet_options=dict(type='list', elements='str'), + rdt_class=dict(type='str'), read_only=dict(type='bool'), read_only_tmpfs=dict(type='bool'), recreate=dict(type='bool', default=False), requires=dict(type='list', elements='str'), restart_policy=dict(type='str'), restart_time=dict(type='str'), + retry=dict(type='int'), + retry_delay=dict(type='str'), rm=dict(type='bool', aliases=['remove', 'auto_remove']), + rmi=dict(type='bool'), rootfs=dict(type='bool'), + seccomp_policy=dict(type='str'), secrets=dict(type='list', elements='str', no_log=True), sdnotify=dict(type='str'), security_opt=dict(type='list', elements='str'), shm_size=dict(type='str'), + shm_size_systemd=dict(type='str'), sig_proxy=dict(type='bool'), stop_signal=dict(type='int'), stop_timeout=dict(type='int'), @@ -142,14 +175,20 @@ ARGUMENTS_SPEC_CONTAINER = dict( subuidname=dict(type='str'), sysctl=dict(type='dict'), systemd=dict(type='str'), + timeout=dict(type='int'), timezone=dict(type='str'), + tls_verify=dict(type='bool'), tmpfs=dict(type='dict'), tty=dict(type='bool'), uidmap=dict(type='list', elements='str'), ulimit=dict(type='list', elements='str', aliases=['ulimits']), + umask=dict(type='str'), + unsetenv=dict(type='list', elements='str'), + unsetenv_all=dict(type='bool'), user=dict(type='str'), userns=dict(type='str', aliases=['userns_mode']), uts=dict(type='str'), + variant=dict(type='str'), volume=dict(type='list', elements='str', aliases=['volumes']), volumes_from=dict(type='list', elements='str'), workdir=dict(type='str', aliases=['working_dir']) @@ -292,6 +331,9 @@ class PodmanModuleParams: c += ['--annotation', '='.join(annotate)] return c + def addparam_arch(self, c): + return c + ['--arch=%s' % self.params['arch']] + def addparam_attach(self, c): for attach in self.params['attach']: c += ['--attach=%s' % attach] @@ -329,6 +371,14 @@ class PodmanModuleParams: def addparam_cgroup_parent(self, c): return c + ['--cgroup-parent', self.params['cgroup_parent']] + def addparam_cgroup_conf(self, c): + for cgroup in self.params['cgroup_conf'].items(): + c += ['--cgroup-conf=%s' % '='.join([str(i) for i in cgroup])] + return c + + def addparam_chrootdirs(self, c): + return c + ['--chrootdirs', self.params['chrootdirs']] + def addparam_cidfile(self, c): return c + ['--cidfile', self.params['cidfile']] @@ -359,6 +409,9 @@ class PodmanModuleParams: def addparam_cpuset_mems(self, c): return c + ['--cpuset-mems', self.params['cpuset_mems']] + def addparam_decryption_key(self, c): + return c + ['--decryption-key=%s' % self.params['decryption_key']] + def addparam_detach(self, c): # Remove detach from create command and don't set if attach is true if self.action == 'create' or self.params['attach']: @@ -373,6 +426,9 @@ class PodmanModuleParams: c += ['--device', dev] return c + def addparam_device_cgroup_rule(self, c): + return c + ['--device-cgroup-rule=%s' % self.params['device_cgroup_rule']] + def addparam_device_read_bps(self, c): for dev in self.params['device_read_bps']: c += ['--device-read-bps', dev] @@ -426,6 +482,13 @@ class PodmanModuleParams: c += ['--add-host', ':'.join(host_ip)] return c + def addparam_env_merge(self, c): + for env_merge in self.params['env_merge'].items(): + c += ['--env-merge', + b"=".join([to_bytes(k, errors='surrogate_or_strict') + for k in env_merge])] + return c + def addparam_expose(self, c): for exp in self.params['expose']: c += ['--expose', exp] @@ -436,11 +499,17 @@ class PodmanModuleParams: c += ['--gidmap', gidmap] return c + def addparam_gpus(self, c): + return c + ['--gpus', self.params['gpus']] + def addparam_group_add(self, c): for g in self.params['group_add']: c += ['--group-add', g] return c + def addparam_group_entry(self, c): + return c + ['--group-entry', self.params['group_entry']] + def addparam_healthcheck(self, c): return c + ['--healthcheck-command', self.params['healthcheck']] @@ -456,10 +525,25 @@ class PodmanModuleParams: return c + ['--healthcheck-start-period', self.params['healthcheck_start_period']] + def addparam_health_startup_cmd(self, c): + return c + ['--health-startup-command', self.params['health_startup_cmd']] + + def addparam_health_startup_interval(self, c): + return c + ['--health-startup-interval', self.params['health_startup_interval']] + def addparam_healthcheck_timeout(self, c): return c + ['--healthcheck-timeout', self.params['healthcheck_timeout']] + def addparam_health_startup_retries(self, c): + return c + ['--health-startup-retries', self.params['health_startup_retries']] + + def addparam_health_startup_success(self, c): + return c + ['--health-startup-success', self.params['health_startup_success']] + + def addparam_health_startup_timeout(self, c): + return c + ['--health-startup-timeout', self.params['health_startup_timeout']] + def addparam_healthcheck_failure_action(self, c): return c + ['--health-on-failure', self.params['healthcheck_failure_action']] @@ -472,6 +556,9 @@ class PodmanModuleParams: def addparam_hostname(self, c): return c + ['--hostname', self.params['hostname']] + def addparam_hostuser(self, c): + return c + ['--hostuser', self.params['hostuser']] + def addparam_http_proxy(self, c): return c + ['--http-proxy=%s' % self.params['http_proxy']] @@ -486,12 +573,18 @@ class PodmanModuleParams: def addparam_init_path(self, c): return c + ['--init-path', self.params['init_path']] + def addparam_init_ctr(self, c): + return c + ['--init-ctr', self.params['init_ctr']] + def addparam_interactive(self, c): return c + ['--interactive=%s' % self.params['interactive']] def addparam_ip(self, c): return c + ['--ip', self.params['ip']] + def addparam_ip6(self, c): + return c + ['--ip6', self.params['ip6']] + def addparam_ipc(self, c): return c + ['--ipc', self.params['ipc']] @@ -559,21 +652,57 @@ class PodmanModuleParams: def addparam_no_hosts(self, c): return c + ['--no-hosts=%s' % self.params['no_hosts']] + def addparam_no_healthcheck(self, c): + if self.params['no_healthcheck']: + c += ['--no-healthcheck'] + return c + def addparam_oom_kill_disable(self, c): return c + ['--oom-kill-disable=%s' % self.params['oom_kill_disable']] def addparam_oom_score_adj(self, c): return c + ['--oom-score-adj', self.params['oom_score_adj']] + def addparam_os(self, c): + return c + ['--os', self.params['os']] + + def addparam_passwd(self, c): + if self.params['passwd']: + c += ['--passwd'] + return c + + def addparam_passwd_entry(self, c): + return c + ['--passwd-entry', self.params['passwd_entry']] + + def addparam_personality(self, c): + return c + ['--personality', self.params['personality']] + def addparam_pid(self, c): return c + ['--pid', self.params['pid']] + def addparam_pid_file(self, c): + return c + ['--pid-file', self.params['pid_file']] + def addparam_pids_limit(self, c): return c + ['--pids-limit', self.params['pids_limit']] + def addparam_platform(self, c): + return c + ['--platform', self.params['platform']] + def addparam_pod(self, c): return c + ['--pod', self.params['pod']] + def addparam_pod_id_file(self, c): + return c + ['--pod-id-file', self.params['pod_id_file']] + + def addparam_preserve_fd(self, c): + for fd in self.params['preserve_fd']: + c += ['--preserve-fd', fd] + return c + + def addparam_preserve_fds(self, c): + return c + ['--preserve-fds', self.params['preserve_fds']] + def addparam_privileged(self, c): return c + ['--privileged=%s' % self.params['privileged']] @@ -585,6 +714,12 @@ class PodmanModuleParams: def addparam_publish_all(self, c): return c + ['--publish-all=%s' % self.params['publish_all']] + def addparam_pull(self, c): + return c + ['--pull=%s' % self.params['pull']] + + def addparam_rdt_class(self, c): + return c + ['--rdt-class', self.params['rdt_class']] + def addparam_read_only(self, c): return c + ['--read-only=%s' % self.params['read_only']] @@ -597,17 +732,31 @@ class PodmanModuleParams: def addparam_restart_policy(self, c): return c + ['--restart=%s' % self.params['restart_policy']] + def addparam_retry(self, c): + return c + ['--retry', self.params['retry']] + + def addparam_retry_delay(self, c): + return c + ['--retry-delay', self.params['retry_delay']] + def addparam_rm(self, c): if self.params['rm']: c += ['--rm'] return c + def addparam_rmi(self, c): + if self.params['rmi']: + c += ['--rmi'] + return c + def addparam_rootfs(self, c): return c + ['--rootfs=%s' % self.params['rootfs']] def addparam_sdnotify(self, c): return c + ['--sdnotify=%s' % self.params['sdnotify']] + def addparam_seccomp_policy(self, c): + return c + ['--seccomp-policy', self.params['seccomp_policy']] + def addparam_secrets(self, c): for secret in self.params['secrets']: c += ['--secret', secret] @@ -621,6 +770,9 @@ class PodmanModuleParams: def addparam_shm_size(self, c): return c + ['--shm-size', self.params['shm_size']] + def addparam_shm_size_systemd(self, c): + return c + ['--shm-size-systemd', self.params['shm_size_systemd']] + def addparam_sig_proxy(self, c): return c + ['--sig-proxy=%s' % self.params['sig_proxy']] @@ -646,14 +798,20 @@ class PodmanModuleParams: def addparam_systemd(self, c): return c + ['--systemd=%s' % str(self.params['systemd']).lower()] + def addparam_timeout(self, c): + return c + ['--timeout', self.params['timeout']] + + def addparam_timezone(self, c): + return c + ['--tz=%s' % self.params['timezone']] + + def addparam_tls_verify(self, c): + return c + ['--tls-verify=%s' % self.params['tls_verify']] + def addparam_tmpfs(self, c): for tmpfs in self.params['tmpfs'].items(): c += ['--tmpfs', ':'.join(tmpfs)] return c - def addparam_timezone(self, c): - return c + ['--tz=%s' % self.params['timezone']] - def addparam_tty(self, c): return c + ['--tty=%s' % self.params['tty']] @@ -667,6 +825,19 @@ class PodmanModuleParams: c += ['--ulimit', u] return c + def addparam_umask(self, c): + return c + ['--umask', self.params['umask']] + + def addparam_unsetenv(self, c): + for unsetenv in self.params['unsetenv']: + c += ['--unsetenv', unsetenv] + return c + + def addparam_unsetenv_all(self, c): + if self.params['unsetenv_all']: + c += ['--unsetenv-all'] + return c + def addparam_user(self, c): return c + ['--user', self.params['user']] @@ -676,6 +847,9 @@ class PodmanModuleParams: def addparam_uts(self, c): return c + ['--uts', self.params['uts']] + def addparam_variant(self, c): + return c + ['--variant', self.params['variant']] + def addparam_volume(self, c): for vol in self.params['volume']: if vol: @@ -700,42 +874,9 @@ class PodmanDefaults: self.version = podman_version self.image_info = image_info self.defaults = { - "blkio_weight": 0, - "cgroups": "default", - "cidfile": "", - "cpus": 0.0, - "cpu_shares": 0, - "cpu_quota": 0, - "cpu_period": 0, - "cpu_rt_runtime": 0, - "cpu_rt_period": 0, - "cpuset_cpus": "", - "cpuset_mems": "", "detach": True, - "device": [], - "env_host": False, - "etc_hosts": {}, - "group_add": [], - "ipc": "", - "kernelmemory": "0", "log_level": "error", - "memory": "0", - "memory_swap": "0", - "memory_reservation": "0", - # "memory_swappiness": -1, - "no_hosts": False, - # libpod issue with networks in inspection - "oom_score_adj": 0, - "pid": "", - "privileged": False, - "read_only": False, - "rm": False, - "security_opt": [], - "stop_signal": self.image_info.get('config', {}).get('stopsignal', "15"), "tty": False, - "user": self.image_info.get('user', ''), - "workdir": self.image_info.get('config', {}).get('workingdir', '/'), - "uts": "", } def default_dict(self): @@ -744,17 +885,8 @@ class PodmanDefaults: if (LooseVersion(self.version) >= LooseVersion('1.8.0') and LooseVersion(self.version) < LooseVersion('1.9.0')): self.defaults['cpu_shares'] = 1024 - if (LooseVersion(self.version) >= LooseVersion('2.0.0')): - self.defaults['network'] = ["slirp4netns"] - self.defaults['ipc'] = "private" - self.defaults['uts'] = "private" - self.defaults['pid'] = "private" - if (LooseVersion(self.version) >= LooseVersion('5.0.0')): - self.defaults['network'] = ["pasta"] if (LooseVersion(self.version) >= LooseVersion('3.0.0')): self.defaults['log_level'] = "warning" - if (LooseVersion(self.version) >= LooseVersion('4.1.0')): - self.defaults['ipc'] = "shareable" return self.defaults @@ -781,35 +913,6 @@ class PodmanContainerDiff: params_with_defaults[p] = self.module_params[p] return params_with_defaults - def _createcommand(self, argument): - """Returns list of values for given argument from CreateCommand - from Podman container inspect output. - - Args: - argument (str): argument name - - Returns: - - all_values: list of values for given argument from createcommand - """ - if "createcommand" not in self.info["config"]: - return [] - cr_com = self.info["config"]["createcommand"] - argument_values = ARGUMENTS_OPTS_DICT.get(argument, [argument]) - all_values = [] - for arg in argument_values: - for ind, cr_opt in enumerate(cr_com): - if arg == cr_opt: - # This is a key=value argument - if not cr_com[ind + 1].startswith("-"): - all_values.append(cr_com[ind + 1]) - else: - # This is a false/true switching argument - return [True] - if cr_opt.startswith("%s=" % arg): - all_values.append(cr_opt.split("=", 1)[1]) - return all_values - def _diff_update_and_compare(self, param_name, before, after): if before != after: self.diff['before'].update({param_name: before}) @@ -817,6 +920,24 @@ class PodmanContainerDiff: return True return False + def _diff_generic(self, module_arg, cmd_arg, boolean_type=False): + """ + Generic diff function for module arguments from CreateCommand + in Podman inspection output. + + Args: + module_arg (str): module argument name + cmd_arg (str): command line argument name + boolean_type (bool): if True, then argument is boolean type + + Returns: + bool: True if there is a difference, False otherwise + + """ + info_config = self.info["config"] + before, after = diff_generic(self.params, info_config, module_arg, cmd_arg, boolean_type) + return self._diff_update_and_compare(module_arg, before, after) + def diffparam_annotation(self): before = self.info['config']['annotations'] or {} after = before.copy() @@ -824,24 +945,17 @@ class PodmanContainerDiff: after.update(self.params['annotation']) return self._diff_update_and_compare('annotation', before, after) - def diffparam_env_host(self): - # It's impossible to get from inspect, recreate it if not default - before = False - after = self.params['env_host'] - return self._diff_update_and_compare('env_host', before, after) + def diffparam_arch(self): + return self._diff_generic('arch', '--arch') + + def diffparam_authfile(self): + return self._diff_generic('authfile', '--authfile') def diffparam_blkio_weight(self): - before = self.info['hostconfig']['blkioweight'] - after = self.params['blkio_weight'] - return self._diff_update_and_compare('blkio_weight', before, after) + return self._diff_generic('blkio_weight', '--blkio-weight') def diffparam_blkio_weight_device(self): - before = self.info['hostconfig']['blkioweightdevice'] - if before == [] and self.module_params['blkio_weight_device'] is None: - after = [] - else: - after = self.params['blkio_weight_device'] - return self._diff_update_and_compare('blkio_weight_device', before, after) + return self._diff_generic('blkio_weight_device', '--blkio-weight-device') def diffparam_cap_add(self): before = self.info['effectivecaps'] or [] @@ -869,30 +983,27 @@ class PodmanContainerDiff: before, after = sorted(list(set(before))), sorted(list(set(after))) return self._diff_update_and_compare('cap_drop', before, after) + def diffparam_cgroup_conf(self): + return self._diff_generic('cgroup_conf', '--cgroup-conf') + def diffparam_cgroup_parent(self): - before = self.info['hostconfig']['cgroupparent'] - after = self.params['cgroup_parent'] - if after is None: - after = before - return self._diff_update_and_compare('cgroup_parent', before, after) - - def diffparam_cgroups(self): - # Cgroups output is not supported in all versions - if 'cgroups' in self.info['hostconfig']: - before = self.info['hostconfig']['cgroups'] - after = self.params['cgroups'] - return self._diff_update_and_compare('cgroups', before, after) - return False + return self._diff_generic('cgroup_parent', '--cgroup-parent') - def diffparam_cidfile(self): - before = self.info['hostconfig']['containeridfile'] - after = self.params['cidfile'] - labels = self.info['config']['labels'] or {} - # Ignore cidfile that is coming from systemd files - # https://github.com/containers/ansible-podman-collections/issues/276 - if 'podman_systemd_unit' in labels: - after = before - return self._diff_update_and_compare('cidfile', before, after) + def diffparam_cgroupns(self): + return self._diff_generic('cgroupns', '--cgroupns') + + # Disabling idemotency check for cgroups as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/775 + # def diffparam_cgroups(self): + # return self._diff_generic('cgroups', '--cgroups') + + def diffparam_chrootdirs(self): + return self._diff_generic('chrootdirs', '--chrootdirs') + + # Disabling idemotency check for cidfile as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/775 + # def diffparam_cidfile(self): + # return self._diff_generic('cidfile', '--cidfile') def diffparam_command(self): # TODO(sshnaidm): to inspect image to get the default command @@ -905,107 +1016,73 @@ class PodmanContainerDiff: return False def diffparam_conmon_pidfile(self): - before = self.info['conmonpidfile'] - if self.module_params['conmon_pidfile'] is None: - after = before - else: - after = self.params['conmon_pidfile'] - return self._diff_update_and_compare('conmon_pidfile', before, after) + return self._diff_generic('conmon_pidfile', '--conmon-pidfile') def diffparam_cpu_period(self): - before = self.info['hostconfig']['cpuperiod'] - # if cpu_period left to default keep settings - after = self.params['cpu_period'] or before - return self._diff_update_and_compare('cpu_period', before, after) + return self._diff_generic('cpu_period', '--cpu-period') def diffparam_cpu_quota(self): - before = self.info['hostconfig']['cpuquota'] - # if cpu_quota left to default keep settings - after = self.params['cpu_quota'] or before - return self._diff_update_and_compare('cpu_quota', before, after) + return self._diff_generic('cpu_quota', '--cpu-quota') def diffparam_cpu_rt_period(self): - before = self.info['hostconfig']['cpurealtimeperiod'] - after = self.params['cpu_rt_period'] - return self._diff_update_and_compare('cpu_rt_period', before, after) + return self._diff_generic('cpu_rt_period', '--cpu-rt-period') def diffparam_cpu_rt_runtime(self): - before = self.info['hostconfig']['cpurealtimeruntime'] - after = self.params['cpu_rt_runtime'] - return self._diff_update_and_compare('cpu_rt_runtime', before, after) + return self._diff_generic('cpu_rt_runtime', '--cpu-rt-runtime') def diffparam_cpu_shares(self): - before = self.info['hostconfig']['cpushares'] - after = self.params['cpu_shares'] - return self._diff_update_and_compare('cpu_shares', before, after) + return self._diff_generic('cpu_shares', '--cpu-shares') def diffparam_cpus(self): - before = self.info['hostconfig']['nanocpus'] / 1000000000 - # if cpus left to default keep settings - after = float(self.params['cpus'] or before) - return self._diff_update_and_compare('cpus', before, after) + return self._diff_generic('cpus', '--cpus') def diffparam_cpuset_cpus(self): - before = self.info['hostconfig']['cpusetcpus'] - after = self.params['cpuset_cpus'] - return self._diff_update_and_compare('cpuset_cpus', before, after) + return self._diff_generic('cpuset_cpus', '--cpuset-cpus') def diffparam_cpuset_mems(self): - before = self.info['hostconfig']['cpusetmems'] - after = self.params['cpuset_mems'] - return self._diff_update_and_compare('cpuset_mems', before, after) + return self._diff_generic('cpuset_mems', '--cpuset-mems') + + def diffparam_decryption_key(self): + return self._diff_generic('decryption_key', '--decryption-key') def diffparam_device(self): - before = [":".join([i['pathonhost'], i['pathincontainer']]) - for i in self.info['hostconfig']['devices']] - if not before and 'createcommand' in self.info['config']: - before = [i.lower() for i in self._createcommand('--device')] - before = [":".join((i, i)) - if len(i.split(":")) == 1 else i for i in before] - after = [":".join(i.split(":")[:2]) for i in self.params['device']] - after = [":".join((i, i)) - if len(i.split(":")) == 1 else i for i in after] - before, after = [i.lower() for i in before], [i.lower() for i in after] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('devices', before, after) + return self._diff_generic('device', '--device') + + def diffparam_device_cgroup_rule(self): + return self._diff_generic('device_cgroup_rule', '--device-cgroup-rule') def diffparam_device_read_bps(self): - before = self.info['hostconfig']['blkiodevicereadbps'] or [] - before = ["%s:%s" % (i['path'], i['rate']) for i in before] - after = self.params['device_read_bps'] or [] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('device_read_bps', before, after) + return self._diff_generic('device_read_bps', '--device-read-bps') def diffparam_device_read_iops(self): - before = self.info['hostconfig']['blkiodevicereadiops'] or [] - before = ["%s:%s" % (i['path'], i['rate']) for i in before] - after = self.params['device_read_iops'] or [] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('device_read_iops', before, after) + return self._diff_generic('device_read_iops', '--device-read-iops') def diffparam_device_write_bps(self): - before = self.info['hostconfig']['blkiodevicewritebps'] or [] - before = ["%s:%s" % (i['path'], i['rate']) for i in before] - after = self.params['device_write_bps'] or [] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('device_write_bps', before, after) + return self._diff_generic('device_write_bps', '--device-write-bps') def diffparam_device_write_iops(self): - before = self.info['hostconfig']['blkiodevicewriteiops'] or [] - before = ["%s:%s" % (i['path'], i['rate']) for i in before] - after = self.params['device_write_iops'] or [] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('device_write_iops', before, after) + return self._diff_generic('device_write_iops', '--device-write-iops') + + def diffparam_dns(self): + return self._diff_generic('dns', '--dns') + + def diffparam_dns_option(self): + return self._diff_generic('dns_option', '--dns-option') + + def diffparam_dns_search(self): + return self._diff_generic('dns_search', '--dns-search') - # Limited idempotency, it can't guess default values def diffparam_env(self): - env_before = self.info['config']['env'] or {} - before = {i.split("=")[0]: "=".join(i.split("=")[1:]) - for i in env_before} - after = before.copy() - if self.params['env']: - after.update({k: str(v) for k, v in self.params['env'].items()}) - return self._diff_update_and_compare('env', before, after) + return self._diff_generic('env', '--env') + + def diffparam_env_file(self): + return self._diff_generic('env_file', '--env-file') + + def diffparam_env_merge(self): + return self._diff_generic('env_merge', '--env-merge') + + def diffparam_env_host(self): + return self._diff_generic('env_host', '--env-host') def diffparam_etc_hosts(self): if self.info['hostconfig']['extrahosts']: @@ -1013,13 +1090,23 @@ class PodmanContainerDiff: for i in self.info['hostconfig']['extrahosts']]) else: before = {} - after = self.params['etc_hosts'] + after = self.params['etc_hosts'] or {} return self._diff_update_and_compare('etc_hosts', before, after) + def diffparam_expose(self): + return self._diff_generic('expose', '--expose') + + def diffparam_gidmap(self): + return self._diff_generic('gidmap', '--gidmap') + + def diffparam_gpus(self): + return self._diff_generic('gpus', '--gpus') + def diffparam_group_add(self): - before = self.info['hostconfig']['groupadd'] - after = self.params['group_add'] - return self._diff_update_and_compare('group_add', before, after) + return self._diff_generic('group_add', '--group-add') + + def diffparam_group_entry(self): + return self._diff_generic('group_entry', '--group-entry') # Healthcheck is only defined in container config if a healthcheck # was configured; otherwise the config key isn't part of the config. @@ -1041,11 +1128,44 @@ class PodmanContainerDiff: after = self.params['healthcheck_failure_action'] or before return self._diff_update_and_compare('healthcheckonfailureaction', before, after) - # Because of hostname is random generated, this parameter has partial idempotency only. + def diffparam_healthcheck_interval(self): + return self._diff_generic('healthcheck_interval', '--healthcheck-interval') + + def diffparam_healthcheck_retries(self): + return self._diff_generic('healthcheck_retries', '--healthcheck-retries') + + def diffparam_healthcheck_start_period(self): + return self._diff_generic('healthcheck_start_period', '--healthcheck-start-period') + + def diffparam_health_startup_cmd(self): + return self._diff_generic('health_startup_cmd', '--health-startup-cmd') + + def diffparam_health_startup_interval(self): + return self._diff_generic('health_startup_interval', '--health-startup-interval') + + def diffparam_health_startup_retries(self): + return self._diff_generic('health_startup_retries', '--health-startup-retries') + + def diffparam_health_startup_success(self): + return self._diff_generic('health_startup_success', '--health-startup-success') + + def diffparam_health_startup_timeout(self): + return self._diff_generic('health_startup_timeout', '--health-startup-timeout') + + def diffparam_healthcheck_timeout(self): + return self._diff_generic('healthcheck_timeout', '--healthcheck-timeout') + + def diffparam_hooks_dir(self): + return self._diff_generic('hooks_dir', '--hooks-dir') + def diffparam_hostname(self): - before = self.info['config']['hostname'] - after = self.params['hostname'] or before - return self._diff_update_and_compare('hostname', before, after) + return self._diff_generic('hostname', '--hostname') + + def diffparam_hostuser(self): + return self._diff_generic('hostuser', '--hostuser') + + def diffparam_http_proxy(self): + return self._diff_generic('http_proxy', '--http-proxy') def diffparam_image(self): before_id = self.info['image'] or self.info['rootfs'] @@ -1066,12 +1186,29 @@ class PodmanContainerDiff: return self._diff_update_and_compare('image', before_id, after_id) return self._diff_update_and_compare('image', before, after) + def diffparam_image_volume(self): + return self._diff_generic('image_volume', '--image-volume') + + def diffparam_init(self): + return self._diff_generic('init', '--init', boolean_type=True) + + def diffparam_init_ctr(self): + return self._diff_generic('init_ctr', '--init-ctr') + + def diffparam_init_path(self): + return self._diff_generic('init_path', '--init-path') + + def diffparam_interactive(self): + return self._diff_generic('interactive', '--interactive') + + def diffparam_ip(self): + return self._diff_generic('ip', '--ip') + + def diffparam_ip6(self): + return self._diff_generic('ip6', '--ip6') + def diffparam_ipc(self): - before = self.info['hostconfig']['ipcmode'] - after = self.params['ipc'] - if self.params['pod'] and not self.module_params['ipc']: - after = before - return self._diff_update_and_compare('ipc', before, after) + return self._diff_generic('ipc', '--ipc') def diffparam_label(self): before = self.info['config']['labels'] or {} @@ -1088,282 +1225,208 @@ class PodmanContainerDiff: before.pop('podman_systemd_unit', None) return self._diff_update_and_compare('label', before, after) + def diffparam_label_file(self): + return self._diff_generic('label_file', '--label-file') + def diffparam_log_driver(self): - before = self.info['hostconfig']['logconfig']['type'] - if self.module_params['log_driver'] is not None: - after = self.params['log_driver'] - else: - after = before - return self._diff_update_and_compare('log_driver', before, after) + return self._diff_generic('log_driver', '--log-driver') - # Parameter has limited idempotency, unable to guess the default log_path def diffparam_log_opt(self): - before, after = {}, {} - - # Log path - path_before = None - if 'logpath' in self.info: - path_before = self.info['logpath'] - # For Podman v3 - if ('logconfig' in self.info['hostconfig'] and - 'path' in self.info['hostconfig']['logconfig']): - path_before = self.info['hostconfig']['logconfig']['path'] - if path_before is not None: - if (self.module_params['log_opt'] and - 'path' in self.module_params['log_opt'] and - self.module_params['log_opt']['path'] is not None): - path_after = self.params['log_opt']['path'] - else: - path_after = path_before - if path_before != path_after: - before.update({'log-path': path_before}) - after.update({'log-path': path_after}) - - # Log tag - tag_before = None - if 'logtag' in self.info: - tag_before = self.info['logtag'] - # For Podman v3 - if ('logconfig' in self.info['hostconfig'] and - 'tag' in self.info['hostconfig']['logconfig']): - tag_before = self.info['hostconfig']['logconfig']['tag'] - if tag_before is not None: - if (self.module_params['log_opt'] and - 'tag' in self.module_params['log_opt'] and - self.module_params['log_opt']['tag'] is not None): - tag_after = self.params['log_opt']['tag'] - else: - tag_after = '' - if tag_before != tag_after: - before.update({'log-tag': tag_before}) - after.update({'log-tag': tag_after}) - - # Log size - # For Podman v3 - # size_before = '0B' - # TODO(sshnaidm): integrate B/KB/MB/GB calculation for sizes - # if ('logconfig' in self.info['hostconfig'] and - # 'size' in self.info['hostconfig']['logconfig']): - # size_before = self.info['hostconfig']['logconfig']['size'] - # if size_before != '0B': - # if (self.module_params['log_opt'] and - # 'max_size' in self.module_params['log_opt'] and - # self.module_params['log_opt']['max_size'] is not None): - # size_after = self.params['log_opt']['max_size'] - # else: - # size_after = '' - # if size_before != size_after: - # before.update({'log-size': size_before}) - # after.update({'log-size': size_after}) - - return self._diff_update_and_compare('log_opt', before, after) + return self._diff_generic('log_opt', '--log-opt') def diffparam_mac_address(self): - before = str(self.info['networksettings']['macaddress']) - if not before and self.info['networksettings'].get('networks'): - nets = self.info['networksettings']['networks'] - macs = [ - nets[i]["macaddress"] for i in nets if nets[i]["macaddress"]] - if macs: - before = macs[0] - if not before and 'createcommand' in self.info['config']: - before = [i.lower() for i in self._createcommand('--mac-address')] - before = before[0] if before else '' - if self.module_params['mac_address'] is not None: - after = self.params['mac_address'] - else: - after = before - return self._diff_update_and_compare('mac_address', before, after) + return self._diff_generic('mac_address', '--mac-address') + + def diffparam_memory(self): + return self._diff_generic('memory', '--memory') + + def diffparam_memory_reservation(self): + return self._diff_generic('memory_reservation', '--memory-reservation') + + def diffparam_memory_swap(self): + return self._diff_generic('memory_swap', '--memory-swap') + + def diffparam_memory_swappiness(self): + return self._diff_generic('memory_swappiness', '--memory-swappiness') + + def diffparam_mount(self): + return self._diff_generic('mount', '--mount') def diffparam_network(self): - net_mode_before = self.info['hostconfig']['networkmode'] - net_mode_after = '' - before = list(self.info['networksettings'].get('networks', {})) - # Remove default 'podman' network in v3 for comparison - if before == ['podman']: - before = [] - # Special case for options for slirp4netns rootless networking from v2 - if net_mode_before == 'slirp4netns' and 'createcommand' in self.info['config']: - cr_net = [i.lower() for i in self._createcommand('--network')] - for cr_net_opt in cr_net: - if 'slirp4netns:' in cr_net_opt: - before = [cr_net_opt] - if net_mode_before == 'pasta': - cr_net = [i.lower() for i in self._createcommand('--network')] - for cr_net_opt in cr_net: - if 'pasta:' in cr_net_opt: - before = [cr_net_opt] - after = self.params['network'] or [] - after = [i.lower() for i in after] - # If container is in pod and no networks are provided - if not self.module_params['network'] and self.params['pod']: - after = before - return self._diff_update_and_compare('network', before, after) - # Check special network modes - if after in [['bridge'], ['host'], ['slirp4netns'], ['none'], ['pasta']]: - net_mode_after = after[0] - # If changes are only for network mode and container has no networks - if net_mode_after and not before: - # Remove differences between v1 and v2 - net_mode_after = net_mode_after.replace('bridge', 'default') - net_mode_after = net_mode_after.replace('slirp4netns', 'default') - net_mode_after = net_mode_after.replace('pasta', 'default') - net_mode_before = net_mode_before.replace('bridge', 'default') - net_mode_before = net_mode_before.replace('slirp4netns', 'default') - net_mode_before = net_mode_before.replace('pasta', 'default') - return self._diff_update_and_compare('network', net_mode_before, net_mode_after) - # If container is attached to network of a different container - if "container" in net_mode_before: - for netw in after: - if "container" in netw: - before = after = netw - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('network', before, after) + return self._diff_generic('network', '--network') + + def diffparam_network_aliases(self): + return self._diff_generic('network_aliases', '--network-alias') + + def diffparam_no_healthcheck(self): + return self._diff_generic('no_healthcheck', '--no-healthcheck', boolean_type=True) + + def diffparam_no_hosts(self): + return self._diff_generic('no_hosts', '--no-hosts') + + def diffparam_oom_kill_disable(self): + return self._diff_generic('oom_kill_disable', '--oom-kill-disable') def diffparam_oom_score_adj(self): - before = self.info['hostconfig']['oomscoreadj'] - after = self.params['oom_score_adj'] - return self._diff_update_and_compare('oom_score_adj', before, after) + return self._diff_generic('oom_score_adj', '--oom-score-adj') - def diffparam_privileged(self): - before = self.info['hostconfig']['privileged'] - after = self.params['privileged'] - return self._diff_update_and_compare('privileged', before, after) + def diffparam_os(self): + return self._diff_generic('os', '--os') + + def diffparam_passwd(self): + return self._diff_generic('passwd', '--passwd', boolean_type=True) + + def diffparam_passwd_entry(self): + return self._diff_generic('passwd_entry', '--passwd-entry') + + def diffparam_personality(self): + return self._diff_generic('personality', '--personality') def diffparam_pid(self): - def get_container_id_by_name(name): - rc, podman_inspect_info, err = self.module.run_command( - [self.module.params["executable"], "inspect", name, "-f", "{{.Id}}"]) - if rc != 0: - return None - return podman_inspect_info.strip() - - before = self.info['hostconfig']['pidmode'] - after = self.params['pid'] - if after is not None and "container:" in after and "container:" in before: - if after.split(":")[1] == before.split(":")[1]: - return self._diff_update_and_compare('pid', before, after) - after = "container:" + get_container_id_by_name(after.split(":")[1]) - return self._diff_update_and_compare('pid', before, after) - - # TODO(sshnaidm) Need to add port ranges support + return self._diff_generic('pid', '--pid') + + def diffparam_pid_file(self): + return self._diff_generic('pid_file', '--pid-file') + + def diffparam_pids_limit(self): + return self._diff_generic('pids_limit', '--pids-limit') + + def diffparam_platform(self): + return self._diff_generic('platform', '--platform') + + # def diffparam_pod(self): + # return self._diff_generic('pod', '--pod') + + def diffparam_pod_id_file(self): + return self._diff_generic('pod_id_file', '--pod-id-file') + + def diffparam_privileged(self): + return self._diff_generic('privileged', '--privileged') + def diffparam_publish(self): - def compose(p, h): - s = ":".join( - [str(h["hostport"]), p.replace('/tcp', '')] - ).strip(":") - if h['hostip'] == '0.0.0.0' and LooseVersion(self.version) >= LooseVersion('5.0.0'): - return s - if h['hostip']: - return ":".join([h['hostip'], s]) - return s - - ports = self.info['hostconfig']['portbindings'] - before = [] - for port, hosts in ports.items(): - if hosts: - for h in hosts: - before.append(compose(port, h)) - after = self.params['publish'] or [] - if self.params['publish_all']: - image_ports = self.image_info.get('config', {}).get('exposedports', {}) - if image_ports: - after += list(image_ports.keys()) - after = [ - i.replace("/tcp", "").replace("[", "").replace("]", "").replace("0.0.0.0:", "") - for i in after] - # No support for port ranges yet - for ports in after: - if "-" in ports: - return self._diff_update_and_compare('publish', '', '') - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('publish', before, after) + return self._diff_generic('publish', '--publish') + + def diffparam_publish_all(self): + return self._diff_generic('publish_all', '--publish-all') + + def diffparam_pull(self): + return self._diff_generic('pull', '--pull') + + def diffparam_rdt_class(self): + return self._diff_generic('rdt_class', '--rdt-class') def diffparam_read_only(self): - before = self.info['hostconfig']['readonlyrootfs'] - after = self.params['read_only'] - return self._diff_update_and_compare('read_only', before, after) + return self._diff_generic('read_only', '--read-only') + + def diffparam_read_only_tmpfs(self): + return self._diff_generic('read_only_tmpfs', '--read-only-tmpfs') + + def diffparam_requires(self): + return self._diff_generic('requires', '--requires') def diffparam_restart_policy(self): - before = self.info['hostconfig']['restartpolicy']['name'] - before_max_count = int(self.info['hostconfig']['restartpolicy'].get('maximumretrycount', 0)) - after = self.params['restart_policy'] or "" - if ':' in after: - after, after_max_count = after.rsplit(':', 1) - after_max_count = int(after_max_count) - else: - after_max_count = 0 - before = "%s:%i" % (before, before_max_count) - after = "%s:%i" % (after, after_max_count) - return self._diff_update_and_compare('restart_policy', before, after) + return self._diff_generic('restart_policy', '--restart') + + def diffparam_retry(self): + return self._diff_generic('retry', '--retry') + + def diffparam_retry_delay(self): + return self._diff_generic('retry_delay', '--retry-delay') + + def diffparam_rootfs(self): + return self._diff_generic('rootfs', '--rootfs') + + # Disabling idemotency check for sdnotify as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/775 + # def diffparam_sdnotify(self): + # return self._diff_generic('sdnotify', '--sdnotify') def diffparam_rm(self): before = self.info['hostconfig']['autoremove'] after = self.params['rm'] + if after is None: + return self._diff_update_and_compare('rm', '', '') return self._diff_update_and_compare('rm', before, after) + def diffparam_rmi(self): + return self._diff_generic('rmi', '--rmi', boolean_type=True) + + def diffparam_seccomp_policy(self): + return self._diff_generic('seccomp_policy', '--seccomp-policy') + + def diffparam_secrets(self): + return self._diff_generic('secrets', '--secret') + def diffparam_security_opt(self): - unsorted_before = self.info['hostconfig']['securityopt'] - unsorted_after = self.params['security_opt'] - # In rootful containers with apparmor there is a profile, "container-default", - # which is already added by default - # Since SElinux labels are basically annotations, they are merged in a single list - # element by podman so we need to split them in a (sorted) list if we want to compare it - # to the list we provide to the module - before = sorted(item for element in unsorted_before for item in element.split(',') - if 'apparmor=container-default' not in item) - after = sorted(list(set(unsorted_after))) - return self._diff_update_and_compare('security_opt', before, after) + return self._diff_generic('security_opt', '--security-opt') + + def diffparam_shm_size(self): + return self._diff_generic('shm_size', '--shm-size') + + def diffparam_shm_size_systemd(self): + return self._diff_generic('shm_size_systemd', '--shm-size-systemd') def diffparam_stop_signal(self): - before = normalize_signal(self.info['config']['stopsignal']) - after = normalize_signal(self.params['stop_signal']) - return self._diff_update_and_compare('stop_signal', before, after) + return self._diff_generic('stop_signal', '--stop-signal') + + def diffparam_stop_timeout(self): + return self._diff_generic('stop_timeout', '--stop-timeout') + + def diffparam_subgidname(self): + return self._diff_generic('subgidname', '--subgidname') + + def diffparam_subuidname(self): + return self._diff_generic('subuidname', '--subuidname') + + def diffparam_sysctl(self): + return self._diff_generic('sysctl', '--sysctl') + + def diffparam_systemd(self): + return self._diff_generic('systemd', '--systemd') + + def diffparam_timeout(self): + return self._diff_generic('timeout', '--timeout') def diffparam_timezone(self): - before = self.info['config'].get('timezone') - after = self.params['timezone'] - return self._diff_update_and_compare('timezone', before, after) + return self._diff_generic('timezone', '--tz') + + def diffparam_tls_verify(self): + return self._diff_generic('tls_verify', '--tls-verify') def diffparam_tty(self): before = self.info['config']['tty'] after = self.params['tty'] return self._diff_update_and_compare('tty', before, after) - def diffparam_user(self): - before = self.info['config']['user'] - after = self.params['user'] - return self._diff_update_and_compare('user', before, after) + def diffparam_tmpfs(self): + return self._diff_generic('tmpfs', '--tmpfs') + + def diffparam_uidmap(self): + return self._diff_generic('uidmap', '--uidmap') def diffparam_ulimit(self): - after = self.params['ulimit'] or [] - # In case of latest podman - if 'createcommand' in self.info['config']: - before = self._createcommand('--ulimit') - before, after = sorted(before), sorted(after) - return self._diff_update_and_compare('ulimit', before, after) - if after: - ulimits = self.info['hostconfig']['ulimits'] - before = { - u['name'].replace('rlimit_', ''): "%s:%s" % (u['soft'], u['hard']) for u in ulimits} - after = {i.split('=')[0]: i.split('=')[1] - for i in self.params['ulimit']} - new_before = [] - new_after = [] - for u in list(after.keys()): - # We don't support unlimited ulimits because it depends on platform - if u in before and "-1" not in after[u]: - new_before.append([u, before[u]]) - new_after.append([u, after[u]]) - return self._diff_update_and_compare('ulimit', new_before, new_after) - return self._diff_update_and_compare('ulimit', '', '') + return self._diff_generic('ulimit', '--ulimit') + + def diffparam_umask(self): + return self._diff_generic('umask', '--umask') + + def diffparam_unsetenv(self): + return self._diff_generic('unsetenv', '--unsetenv') + + def diffparam_unsetenv_all(self): + return self._diff_generic('unsetenv_all', '--unsetenv-all', boolean_type=True) + + def diffparam_user(self): + return self._diff_generic('user', '--user') + + def diffparam_userns(self): + return self._diff_generic('userns', '--userns') def diffparam_uts(self): - before = self.info['hostconfig']['utsmode'] - after = self.params['uts'] - if self.params['pod'] and not self.module_params['uts']: - after = before - return self._diff_update_and_compare('uts', before, after) + return self._diff_generic('uts', '--uts') + + def diffparam_variant(self): + return self._diff_generic('variant', '--variant') def diffparam_volume(self): def clean_volume(x): @@ -1372,44 +1435,29 @@ class PodmanContainerDiff: return "/" return x.replace("//", "/").rstrip("/") - before = self.info['mounts'] - before_local_vols = [] - if before: - volumes = [] - local_vols = [] - for m in before: - if m['type'] != 'volume': - volumes.append( - [ - clean_volume(m['source']), - clean_volume(m['destination']) - ]) - elif m['type'] == 'volume': - local_vols.append( - [m['name'], clean_volume(m['destination'])]) - before = [":".join(v) for v in volumes] - before_local_vols = [":".join(v) for v in local_vols] - if self.params['volume'] is not None: + before = createcommand('--volume', self.info['config']) + if before == []: + before = None + after = self.params['volume'] + if after is not None: after = [":".join( - [clean_volume(i) for i in v.split(":")[:2]] - ) for v in self.params['volume']] - else: - after = [] - if before_local_vols: - after = list(set(after).difference(before_local_vols)) - before, after = sorted(list(set(before))), sorted(list(set(after))) + [clean_volume(i) for i in v.split(":")[:2]]) for v in self.params['volume']] + if before is not None: + before = [":".join([clean_volume(i) for i in v.split(":")[:2]]) for v in before] + self.module.log("PODMAN Before: %s and After: %s" % (before, after)) + if before is None and after is None: + return self._diff_update_and_compare('volume', before, after) + if after is not None: + after = ",".join(sorted([str(i).lower() for i in after])) + if before: + before = ",".join(sorted([str(i).lower() for i in before])) return self._diff_update_and_compare('volume', before, after) def diffparam_volumes_from(self): - # Possibly volumesfrom is not in config - before = self.info['hostconfig'].get('volumesfrom', []) or [] - after = self.params['volumes_from'] or [] - return self._diff_update_and_compare('volumes_from', before, after) + return self._diff_generic('volumes_from', '--volumes-from') def diffparam_workdir(self): - before = self.info['config']['workingdir'] - after = self.params['workdir'] - return self._diff_update_and_compare('workdir', before, after) + return self._diff_generic('workdir', '--workdir') def is_different(self): diff_func_list = [func for func in dir(self) diff --git a/ansible_collections/containers/podman/plugins/module_utils/podman/podman_pod_lib.py b/ansible_collections/containers/podman/plugins/module_utils/podman/podman_pod_lib.py index e0031351f..8f315a5cc 100644 --- a/ansible_collections/containers/podman/plugins/module_utils/podman/podman_pod_lib.py +++ b/ansible_collections/containers/podman/plugins/module_utils/podman/podman_pod_lib.py @@ -6,6 +6,8 @@ from ansible_collections.containers.podman.plugins.module_utils.podman.common im from ansible_collections.containers.podman.plugins.module_utils.podman.common import lower_keys from ansible_collections.containers.podman.plugins.module_utils.podman.common import generate_systemd from ansible_collections.containers.podman.plugins.module_utils.podman.common import delete_systemd +from ansible_collections.containers.podman.plugins.module_utils.podman.common import diff_generic +from ansible_collections.containers.podman.plugins.module_utils.podman.common import createcommand from ansible_collections.containers.podman.plugins.module_utils.podman.quadlet import create_quadlet_state, PodQuadlet @@ -28,9 +30,9 @@ ARGUMENTS_SPEC_POD = dict( ]), recreate=dict(type='bool', default=False), add_host=dict(type='list', required=False, elements='str'), - cgroup_parent=dict(type='str', required=False), blkio_weight=dict(type='str', required=False), blkio_weight_device=dict(type='list', elements='str', required=False), + cgroup_parent=dict(type='str', required=False), cpus=dict(type='str', required=False), cpuset_cpus=dict(type='str', required=False), cpuset_mems=dict(type='str', required=False), @@ -39,10 +41,12 @@ ARGUMENTS_SPEC_POD = dict( device_read_bps=dict(type='list', elements='str', required=False), device_write_bps=dict(type='list', elements='str', required=False), dns=dict(type='list', elements='str', required=False), - dns_opt=dict(type='list', elements='str', required=False), + dns_opt=dict(type='list', elements='str', aliases=['dns_option'], required=False), dns_search=dict(type='list', elements='str', required=False), + exit_policy=dict(type='str', required=False, choices=['continue', 'stop']), generate_systemd=dict(type='dict', default={}), gidmap=dict(type='list', elements='str', required=False), + gpus=dict(type='str', required=False), hostname=dict(type='str', required=False), infra=dict(type='bool', required=False), infra_conmon_pidfile=dict(type='str', required=False), @@ -50,6 +54,7 @@ ARGUMENTS_SPEC_POD = dict( infra_image=dict(type='str', required=False), infra_name=dict(type='str', required=False), ip=dict(type='str', required=False), + ip6=dict(type='str', required=False), label=dict(type='dict', required=False), label_file=dict(type='str', required=False), mac_address=dict(type='str', required=False), @@ -67,13 +72,21 @@ ARGUMENTS_SPEC_POD = dict( quadlet_dir=dict(type='path'), quadlet_filename=dict(type='str'), quadlet_options=dict(type='list', elements='str'), + restart_policy=dict(type='str', required=False), + security_opt=dict(type='list', elements='str', required=False), share=dict(type='str', required=False), + share_parent=dict(type='bool', required=False), + shm_size=dict(type='str', required=False), + shm_size_systemd=dict(type='str', required=False), subgidname=dict(type='str', required=False), subuidname=dict(type='str', required=False), + sysctl=dict(type='dict', required=False), uidmap=dict(type='list', elements='str', required=False), userns=dict(type='str', required=False), + uts=dict(type='str', required=False), volume=dict(type='list', elements='str', aliases=['volumes'], required=False), + volumes_from=dict(type='list', elements='str', required=False), executable=dict(type='str', required=False, default='podman'), debug=dict(type='bool', default=False), ) @@ -200,7 +213,7 @@ class PodmanPodModuleParams: def addparam_dns_opt(self, c): for g in self.params['dns_opt']: - c += ['--dns-opt', g] + c += ['--dns-option', g] return c def addparam_dns_search(self, c): @@ -208,11 +221,17 @@ class PodmanPodModuleParams: c += ['--dns-search', g] return c + def addparam_exit_policy(self, c): + return c + ['--exit-policy=%s' % self.params['exit_policy']] + def addparam_gidmap(self, c): for gidmap in self.params['gidmap']: c += ['--gidmap', gidmap] return c + def addparam_gpus(self, c): + return c + ['--gpus', self.params['gpus']] + def addparam_hostname(self, c): return c + ['--hostname', self.params['hostname']] @@ -236,6 +255,9 @@ class PodmanPodModuleParams: def addparam_ip(self, c): return c + ['--ip', self.params['ip']] + def addparam_ip6(self, c): + return c + ['--ip6', self.params['ip6']] + def addparam_label(self, c): for label in self.params['label'].items(): c += ['--label', b'='.join( @@ -285,15 +307,39 @@ class PodmanPodModuleParams: c += ['--publish', g] return c + def addparam_restart_policy(self, c): + return c + ['--restart=%s' % self.params['restart_policy']] + + def addparam_security_opt(self, c): + for g in self.params['security_opt']: + c += ['--security-opt', g] + return c + def addparam_share(self, c): return c + ['--share', self.params['share']] + def addparam_share_parent(self, c): + if self.params['share_parent'] is not None: + return c + ['--share-parent=%s' % self.params['share_parent']] + return c + + def addparam_shm_size(self, c): + return c + ['--shm-size=%s' % self.params['shm_size']] + + def addparam_shm_size_systemd(self, c): + return c + ['--shm-size-systemd=%s' % self.params['shm_size_systemd']] + def addparam_subgidname(self, c): return c + ['--subgidname', self.params['subgidname']] def addparam_subuidname(self, c): return c + ['--subuidname', self.params['subuidname']] + def addparam_sysctl(self, c): + for k, v in self.params['sysctl'].items(): + c += ['--sysctl', "%s=%s" % (k, v)] + return c + def addparam_uidmap(self, c): for uidmap in self.params['uidmap']: c += ['--uidmap', uidmap] @@ -302,22 +348,26 @@ class PodmanPodModuleParams: def addparam_userns(self, c): return c + ['--userns', self.params['userns']] + def addparam_uts(self, c): + return c + ['--uts', self.params['uts']] + def addparam_volume(self, c): for vol in self.params['volume']: if vol: c += ['--volume', vol] return c + def addparam_volumes_from(self, c): + for vol in self.params['volumes_from']: + c += ['--volumes-from', vol] + return c + class PodmanPodDefaults: def __init__(self, module, podman_version): self.module = module self.version = podman_version self.defaults = { - 'add_host': [], - 'dns': [], - 'dns_opt': [], - 'dns_search': [], 'infra': True, 'label': {}, } @@ -361,50 +411,79 @@ class PodmanPodDiff: return True return False + def _diff_generic(self, module_arg, cmd_arg, boolean_type=False): + """ + Generic diff function for module arguments from CreateCommand + in Podman inspection output. + + Args: + module_arg (str): module argument name + cmd_arg (str): command line argument name + boolean_type (bool): if True, then argument is boolean type + + Returns: + bool: True if there is a difference, False otherwise + + """ + info_config = self.info + before, after = diff_generic(self.params, info_config, module_arg, cmd_arg, boolean_type) + return self._diff_update_and_compare(module_arg, before, after) + def diffparam_add_host(self): - if not self.infra_info: - return self._diff_update_and_compare('add_host', '', '') - before = self.infra_info['hostconfig']['extrahosts'] or [] - after = self.params['add_host'] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('add_host', before, after) + return self._diff_generic('add_host', '--add-host') + + def diffparam_blkio_weight(self): + return self._diff_generic('blkio_weight', '--blkio-weight') + + def diffparam_blkio_weight_device(self): + return self._diff_generic('blkio_weight_device', '--blkio-weight-device') def diffparam_cgroup_parent(self): - before = (self.info.get('cgroupparent', '') - or self.info.get('hostconfig', {}).get('cgroupparent', '')) - after = self.params['cgroup_parent'] or before - return self._diff_update_and_compare('cgroup_parent', before, after) + return self._diff_generic('cgroup_parent', '--cgroup-parent') + + def diffparam_cpu_shares(self): + return self._diff_generic('cpu_shares', '--cpu-shares') + + def diffparam_cpus(self): + return self._diff_generic('cpus', '--cpus') + + def diffparam_cpuset_cpus(self): + return self._diff_generic('cpuset_cpus', '--cpuset-cpus') + + def diffparam_cpuset_mems(self): + return self._diff_generic('cpuset_mems', '--cpuset-mems') + + def diffparam_device(self): + return self._diff_generic('device', '--device') + + def diffparam_device_read_bps(self): + return self._diff_generic('device_read_bps', '--device-read-bps') + + def diffparam_device_write_bps(self): + return self._diff_generic('device_write_bps', '--device-write-bps') def diffparam_dns(self): - if not self.infra_info: - return self._diff_update_and_compare('dns', '', '') - before = self.infra_info['hostconfig']['dns'] or [] - after = self.params['dns'] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('dns', before, after) + return self._diff_generic('dns', '--dns') def diffparam_dns_opt(self): - if not self.infra_info: - return self._diff_update_and_compare('dns_opt', '', '') - before = self.infra_info['hostconfig']['dnsoptions'] or [] - after = self.params['dns_opt'] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('dns_opt', before, after) + return self._diff_generic('dns_opt', '--dns-option') def diffparam_dns_search(self): - if not self.infra_info: - return self._diff_update_and_compare('dns_search', '', '') - before = self.infra_info['hostconfig']['dnssearch'] or [] - after = self.params['dns_search'] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('dns_search', before, after) + return self._diff_generic('dns_search', '--dns-search') + + # Disabling idemotency check for exit policy as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/774 + # def diffparam_exit_policy(self): + # return self._diff_generic('exit_policy', '--exit-policy') + + def diffparam_gidmap(self): + return self._diff_generic('gidmap', '--gidmap') + + def diffparam_gpus(self): + return self._diff_generic('gpus', '--gpus') def diffparam_hostname(self): - if not self.infra_info: - return self._diff_update_and_compare('hostname', '', '') - before = self.infra_info['config']['hostname'] - after = self.params['hostname'] or before - return self._diff_update_and_compare('hostname', before, after) + return self._diff_generic('hostname', '--hostname') # TODO(sshnaidm): https://github.com/containers/podman/issues/6968 def diffparam_infra(self): @@ -416,30 +495,25 @@ class PodmanPodDiff: after = self.params['infra'] return self._diff_update_and_compare('infra', before, after) - # TODO(sshnaidm): https://github.com/containers/podman/issues/6969 - # def diffparam_infra_command(self): - # before = str(self.info['hostconfig']['infra_command']) - # after = self.params['infra_command'] - # return self._diff_update_and_compare('infra_command', before, after) + def diffparam_infra_command(self): + return self._diff_generic('infra_command', '--infra-command') + + # Disabling idemotency check for infra_conmon_pidfile as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/774 + # def diffparam_infra_conmon_pidfile(self): + # return self._diff_generic('infra_conmon_pidfile', '--infra-conmon-pidfile') def diffparam_infra_image(self): - if not self.infra_info: - return self._diff_update_and_compare('infra_image', '', '') - before = str(self.infra_info['imagename']) - after = before - if self.module_params['infra_image']: - after = self.params['infra_image'] - before = before.replace(":latest", "") - after = after.replace(":latest", "") - before = before.split("/")[-1] # pylint: disable=W,C,R - after = after.split("/")[-1] # pylint: disable=W,C,R - return self._diff_update_and_compare('infra_image', before, after) - - # TODO(sshnaidm): https://github.com/containers/podman/pull/6956 - # def diffparam_ip(self): - # before = str(self.info['hostconfig']['ip']) - # after = self.params['ip'] - # return self._diff_update_and_compare('ip', before, after) + return self._diff_generic('infra_image', '--infra-image') + + def diffparam_infra_name(self): + return self._diff_generic('infra_name', '--infra-name') + + def diffparam_ip(self): + return self._diff_generic('ip', '--ip') + + def diffparam_ip6(self): + return self._diff_generic('ip6', '--ip6') def diffparam_label(self): if 'config' in self.info and 'labels' in self.info['config']: @@ -454,129 +528,101 @@ class PodmanPodDiff: before.pop('podman_systemd_unit', None) return self._diff_update_and_compare('label', before, after) - # TODO(sshnaidm): https://github.com/containers/podman/pull/6956 - # def diffparam_mac_address(self): - # before = str(self.info['hostconfig']['mac_address']) - # after = self.params['mac_address'] - # return self._diff_update_and_compare('mac_address', before, after) + def diffparam_label_file(self): + return self._diff_generic('label_file', '--label-file') + + def diffparam_mac_address(self): + return self._diff_generic('mac_address', '--mac-address') + + def diffparam_memory(self): + return self._diff_generic('memory', '--memory') + + def diffparam_memory_swap(self): + return self._diff_generic('memory_swap', '--memory-swap') def diffparam_network(self): - if not self.infra_info: - return self._diff_update_and_compare('network', [], []) - net_mode_before = self.infra_info['hostconfig']['networkmode'] - net_mode_after = '' - before = list(self.infra_info['networksettings'].get('networks', {})) - # Remove default 'podman' network in v3 for comparison - if before == ['podman']: - before = [] - after = self.params['network'] or [] - after = [i.lower() for i in after] - # Special case for options for slirp4netns rootless networking from v2 - if net_mode_before == 'slirp4netns' and 'createcommand' in self.info: - cr_com = self.info['createcommand'] - if '--network' in cr_com: - cr_net = cr_com[cr_com.index('--network') + 1].lower() - if 'slirp4netns:' in cr_net: - before = [cr_net] - if net_mode_before == 'pasta' and 'createcommand' in self.info: - cr_com = self.info['createcommand'] - if '--network' in cr_com: - cr_net = cr_com[cr_com.index('--network') + 1].lower() - if 'pasta:' in cr_net: - before = [cr_net] - # Currently supported only 'host' and 'none' network modes idempotency - if after in [['bridge'], ['host'], ['slirp4netns'], ['pasta']]: - net_mode_after = after[0] - - if net_mode_after and not before: - # Remove differences between v1 and v2 - net_mode_after = net_mode_after.replace('bridge', 'default') - net_mode_after = net_mode_after.replace('slirp4netns', 'default') - net_mode_after = net_mode_after.replace('pasta', 'default') - net_mode_before = net_mode_before.replace('bridge', 'default') - net_mode_before = net_mode_before.replace('slirp4netns', 'default') - net_mode_before = net_mode_before.replace('pasta', 'default') - return self._diff_update_and_compare('network', net_mode_before, net_mode_after) - # For 4.4.0+ podman versions with no network specified - if not net_mode_after and net_mode_before == 'slirp4netns' and not after: - net_mode_after = 'slirp4netns' - if before == ['slirp4netns']: - after = ['slirp4netns'] - if not net_mode_after and net_mode_before == 'bridge' and not after: - net_mode_after = 'bridge' - if before == ['bridge']: - after = ['bridge'] - # For pasta networking for Podman v5 - if not net_mode_after and net_mode_before == 'pasta' and not after: - net_mode_after = 'pasta' - if before == ['pasta']: - after = ['pasta'] - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('network', before, after) - - # TODO(sshnaidm) - # def diffparam_no_hosts(self): - # before = str(self.info['hostconfig']['no_hosts']) - # after = self.params['no_hosts'] - # return self._diff_update_and_compare('no_hosts', before, after) - - # TODO(sshnaidm) Need to add port ranges support + return self._diff_generic('network', '--network') + + def diffparam_network_alias(self): + return self._diff_generic('network_alias', '--network-alias') + + def diffparam_no_hosts(self): + return self._diff_generic('no_hosts', '--no-hosts', boolean_type=True) + + def diffparam_pid(self): + return self._diff_generic('pid', '--pid') + + # Disabling idemotency check for pod id file as it's added by systemd generator + # https://github.com/containers/ansible-podman-collections/issues/774 + # def diffparam_pod_id_file(self): + # return self._diff_generic('pod_id_file', '--pod-id-file') + def diffparam_publish(self): - def compose(p, h): - s = ":".join( - [str(h["hostport"]), p.replace('/tcp', '')] - ).strip(":") - if h['hostip'] == '0.0.0.0' and LooseVersion(self.version) >= LooseVersion('5.0.0'): - return s - if h['hostip']: - return ":".join([h['hostip'], s]) - return s - - if not self.infra_info: - return self._diff_update_and_compare('publish', '', '') - - ports = self.infra_info['hostconfig']['portbindings'] - before = [] - for port, hosts in ports.items(): - if hosts: - for h in hosts: - before.append(compose(port, h)) - after = self.params['publish'] or [] - after = [ - i.replace("/tcp", "").replace("[", "").replace("]", "") - for i in after] - # No support for port ranges yet - for ports in after: - if "-" in ports: - return self._diff_update_and_compare('publish', '', '') - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('publish', before, after) + return self._diff_generic('publish', '--publish') + + def diffparam_restart_policy(self): + return self._diff_generic('restart_policy', '--restart') + + def diffparam_security_opt(self): + return self._diff_generic('security_opt', '--security-opt') def diffparam_share(self): - if not self.infra_info: - return self._diff_update_and_compare('share', '', '') - if 'sharednamespaces' in self.info: - before = self.info['sharednamespaces'] - elif 'config' in self.info: - before = [ - i.split('shares')[1].lower() - for i in self.info['config'] if 'shares' in i] - # TODO(sshnaidm): to discover why in podman v1 'cgroup' appears - before.remove('cgroup') - else: - before = [] - if self.params['share'] is not None: - after = self.params['share'].split(",") - else: - after = ['uts', 'ipc', 'net'] - # TODO: find out why on Ubuntu the 'net' is not present - if 'net' not in before: - after.remove('net') - if self.params["uidmap"] or self.params["gidmap"] or self.params["userns"]: - after.append('user') - - before, after = sorted(list(set(before))), sorted(list(set(after))) - return self._diff_update_and_compare('share', before, after) + return self._diff_generic('share', '--share') + + def diffparam_share_parent(self): + return self._diff_generic('share_parent', '--share-parent') + + def diffparam_shm_size(self): + return self._diff_generic('shm_size', '--shm-size') + + def diffparam_shm_size_systemd(self): + return self._diff_generic('shm_size_systemd', '--shm-size-systemd') + + def diffparam_subgidname(self): + return self._diff_generic('subgidname', '--subgidname') + + def diffparam_subuidname(self): + return self._diff_generic('subuidname', '--subuidname') + + def diffparam_sysctl(self): + return self._diff_generic('sysctl', '--sysctl') + + def diffparam_uidmap(self): + return self._diff_generic('uidmap', '--uidmap') + + def diffparam_userns(self): + return self._diff_generic('userns', '--userns') + + def diffparam_uts(self): + return self._diff_generic('uts', '--uts') + + def diffparam_volume(self): + def clean_volume(x): + '''Remove trailing and double slashes from volumes.''' + if not x.rstrip("/"): + return "/" + return x.replace("//", "/").rstrip("/") + + before = createcommand('--volume', self.info) + if before == []: + before = None + after = self.params['volume'] + if after is not None: + after = [":".join( + [clean_volume(i) for i in v.split(":")[:2]]) for v in self.params['volume']] + if before is not None: + before = [":".join([clean_volume(i) for i in v.split(":")[:2]]) for v in before] + self.module.log("PODMAN Before: %s and After: %s" % (before, after)) + if before is None and after is None: + return self._diff_update_and_compare('volume', before, after) + if after is not None: + after = ",".join(sorted([str(i).lower() for i in after])) + if before: + before = ",".join(sorted([str(i).lower() for i in before])) + return self._diff_update_and_compare('volume', before, after) + + def diffparam_volumes_from(self): + return self._diff_generic('volumes_from', '--volumes-from') def is_different(self): diff_func_list = [func for func in dir(self) diff --git a/ansible_collections/containers/podman/plugins/module_utils/podman/quadlet.py b/ansible_collections/containers/podman/plugins/module_utils/podman/quadlet.py index 17764b60d..6296c7b81 100644 --- a/ansible_collections/containers/podman/plugins/module_utils/podman/quadlet.py +++ b/ansible_collections/containers/podman/plugins/module_utils/podman/quadlet.py @@ -88,25 +88,21 @@ class ContainerQuadlet(Quadlet): 'gidmap': 'GIDMap', 'global_args': 'GlobalArgs', 'group': 'Group', # Does not exist in module parameters - 'healthcheck': 'HealthCheckCmd', + 'healthcheck': 'HealthCmd', 'healthcheck_interval': 'HealthInterval', 'healthcheck_failure_action': 'HealthOnFailure', 'healthcheck_retries': 'HealthRetries', 'healthcheck_start_period': 'HealthStartPeriod', 'healthcheck_timeout': 'HealthTimeout', - # the following are not implemented yet in Podman module - 'HealthStartupCmd': 'HealthStartupCmd', - 'HealthStartupInterval': 'HealthStartupInterval', - 'HealthStartupRetries': 'HealthStartupRetries', - 'HealthStartupSuccess': 'HealthStartupSuccess', - 'HealthStartupTimeout': 'HealthStartupTimeout', - # end of not implemented yet + 'health_startup_cmd': 'HealthStartupCmd', + 'health_startup_interval': 'HealthStartupInterval', + 'health_startup_retries': 'HealthStartupRetries', + 'health_startup_success': 'HealthStartupSuccess', + 'health_startup_timeout': 'HealthStartupTimeout', 'hostname': 'HostName', 'image': 'Image', 'ip': 'IP', - # the following are not implemented yet in Podman module - 'IP6': 'IP6', - # end of not implemented yet + 'ip6': 'IP6', 'label': 'Label', 'log_driver': 'LogDriver', "Mask": "Mask", # add it in security_opt @@ -117,9 +113,7 @@ class ContainerQuadlet(Quadlet): 'pids_limit': 'PidsLimit', 'pod': 'Pod', 'publish': 'PublishPort', - # the following are not implemented yet in Podman module - "Pull": "Pull", - # end of not implemented yet + "pull": "Pull", 'read_only': 'ReadOnly', 'read_only_tmpfs': 'ReadOnlyTmpfs', 'rootfs': 'Rootfs', @@ -194,6 +188,8 @@ class ContainerQuadlet(Quadlet): # Work on params which are not in the param_map and add them to PodmanArgs params["podman_args"] = [] + if params["arch"]: + params["podman_args"].append(f"--arch {params['arch']}") if params["authfile"]: params["podman_args"].append(f"--authfile {params['authfile']}") if params["attach"]: @@ -206,8 +202,13 @@ class ContainerQuadlet(Quadlet): f"--blkio-weight-device {':'.join(blkio)}" for blkio in params["blkio_weight_device"].items()])) if params["cgroupns"]: params["podman_args"].append(f"--cgroupns {params['cgroupns']}") + if params["cgroup_conf"]: + for k, v in params["cgroup_conf"].items(): + params["podman_args"].append(f"--cgroup-conf {k}={v}") if params["cgroup_parent"]: params["podman_args"].append(f"--cgroup-parent {params['cgroup_parent']}") + if params["chrootdirs"]: + params["podman_args"].append(f"--chrootdirs {params['chrootdirs']}") if params["cidfile"]: params["podman_args"].append(f"--cidfile {params['cidfile']}") if params["conmon_pidfile"]: @@ -226,6 +227,10 @@ class ContainerQuadlet(Quadlet): params["podman_args"].append(f"--cpu-rt-runtime {params['cpu_rt_runtime']}") if params["cpu_shares"]: params["podman_args"].append(f"--cpu-shares {params['cpu_shares']}") + if params["decryption_key"]: + params["podman_args"].append(f"--decryption-key {params['decryption_key']}") + if params["device_cgroup_rule"]: + params["podman_args"].append(f"--device-cgroup-rule {params['device_cgroup_rule']}") if params["device_read_bps"]: for i in params["device_read_bps"]: params["podman_args"].append(f"--device-read-bps {i}") @@ -241,6 +246,15 @@ class ContainerQuadlet(Quadlet): if params["etc_hosts"]: for host_ip in params['etc_hosts'].items(): params["podman_args"].append(f"--add-host {':'.join(host_ip)}") + if params["env_merge"]: + for k, v in params["env_merge"].items(): + params["podman_args"].append(f"--env {k}={v}") + if params["gpus"]: + params["podman_args"].append(f"--gpus {params['gpus']}") + if params["group_entry"]: + params["podman_args"].append(f"--group-entry {params['group_entry']}") + if params["hostuser"]: + params["podman_args"].append(f"--hostuser {params['hostuser']}") if params["hooks_dir"]: for hook in params["hooks_dir"]: params["podman_args"].append(f"--hooks-dir {hook}") @@ -248,6 +262,8 @@ class ContainerQuadlet(Quadlet): params["podman_args"].append(f"--http-proxy {params['http_proxy']}") if params["image_volume"]: params["podman_args"].append(f"--image-volume {params['image_volume']}") + if params["init_ctr"]: + params["podman_args"].append(f"--init-ctr {params['init_ctr']}") if params["init_path"]: params["podman_args"].append(f"--init-path {params['init_path']}") if params["interactive"]: @@ -274,37 +290,79 @@ class ContainerQuadlet(Quadlet): if params["network_aliases"]: for alias in params["network_aliases"]: params["podman_args"].append(f"--network-alias {alias}") + if params["no_healthcheck"]: + params["podman_args"].append("--no-healthcheck") if params["no_hosts"] is not None: params["podman_args"].append(f"--no-hosts={params['no_hosts']}") if params["oom_kill_disable"]: params["podman_args"].append(f"--oom-kill-disable={params['oom_kill_disable']}") if params["oom_score_adj"]: params["podman_args"].append(f"--oom-score-adj {params['oom_score_adj']}") + if params["os"]: + params["podman_args"].append(f"--os {params['os']}") + if params["passwd"]: + params["podman_args"].append("--passwd") + if params["passwd_entry"]: + params["podman_args"].append(f"--passwd-entry {params['passwd_entry']}") + if params["personality"]: + params["podman_args"].append(f"--personality {params['personality']}") if params["pid"]: params["podman_args"].append(f"--pid {params['pid']}") + if params["pid_file"]: + params["podman_args"].append(f"--pid-file {params['pid_file']}") + if params["preserve_fd"]: + for pres in params["preserve_fd"]: + params["podman_args"].append(f"--preserve-fd {pres}") + if params["preserve_fds"]: + params["podman_args"].append(f"--preserve-fds {params['preserve_fds']}") if params["privileged"]: params["podman_args"].append("--privileged") if params["publish_all"]: params["podman_args"].append("--publish-all") + if params["rdt_class"]: + params["podman_args"].append(f"--rdt-class {params['rdt_class']}") if params["requires"]: params["podman_args"].append(f"--requires {','.join(params['requires'])}") if params["restart_policy"]: params["podman_args"].append(f"--restart-policy {params['restart_policy']}") + if params["retry"]: + params["podman_args"].append(f"--retry {params['retry']}") + if params["retry_delay"]: + params["podman_args"].append(f"--retry-delay {params['retry_delay']}") if params["rm"]: params["podman_args"].append("--rm") + if params["rmi"]: + params["podman_args"].append("--rmi") + if params["seccomp_policy"]: + params["podman_args"].append(f"--seccomp-policy {params['seccomp_policy']}") if params["security_opt"]: for security_opt in params["security_opt"]: params["podman_args"].append(f"--security-opt {security_opt}") + if params["shm_size_systemd"]: + params["podman_args"].append(f"--shm-size-systemd {params['shm_size_systemd']}") if params["sig_proxy"]: params["podman_args"].append(f"--sig-proxy {params['sig_proxy']}") if params["stop_signal"]: params["podman_args"].append(f"--stop-signal {params['stop_signal']}") if params["systemd"]: params["podman_args"].append(f"--systemd={str(params['systemd']).lower()}") + if params["timeout"]: + params["podman_args"].append(f"--timeout {params['timeout']}") + if params["tls_verify"]: + params["podman_args"].append(f"--tls-verify={str(params['tls_verify']).lower()}") if params["tty"]: params["podman_args"].append("--tty") + if params["umask"]: + params["podman_args"].append(f"--umask {params['umask']}") + if params["unsetenv"]: + for unset in params["unsetenv"]: + params["podman_args"].append(f"--unsetenv {unset}") + if params["unsetenv_all"]: + params["podman_args"].append("--unsetenv-all") if params["uts"]: params["podman_args"].append(f"--uts {params['uts']}") + if params["variant"]: + params["podman_args"].append(f"--variant {params['variant']}") if params["volumes_from"]: for volume in params["volumes_from"]: params["podman_args"].append(f"--volumes-from {volume}") @@ -416,6 +474,10 @@ class PodQuadlet(Quadlet): if params["gidmap"]: for gidmap in params["gidmap"]: params["podman_args"].append(f"--gidmap {gidmap}") + if params["exit_policy"]: + params["podman_args"].append(f"--exit-policy={params['gpus']}") + if params["gpus"]: + params["podman_args"].append(f"--gpus {params['gpus']}") if params["hostname"]: params["podman_args"].append(f"--hostname {params['hostname']}") if params["infra"]: @@ -430,6 +492,8 @@ class PodQuadlet(Quadlet): params["podman_args"].append(f"--infra-name {params['infra_name']}") if params["ip"]: params["podman_args"].append(f"--ip {params['ip']}") + if params["ip6"]: + params["podman_args"].append(f"--ip6 {params['ip6']}") if params["label"]: for label, label_v in params["label"].items(): params["podman_args"].append(f"--label {label}={label_v}") @@ -447,17 +511,36 @@ class PodQuadlet(Quadlet): params["podman_args"].append(f"--pid {params['pid']}") if params["pod_id_file"]: params["podman_args"].append(f"--pod-id-file {params['pod_id_file']}") + if params["restart_policy"]: + params["podman_args"].append(f"--restart={params['restart_policy']}") + if params["security_opt"]: + for security_opt in params["security_opt"]: + params["podman_args"].append(f"--security-opt {security_opt}") if params["share"]: params["podman_args"].append(f"--share {params['share']}") + if params["share_parent"] is not None: + params["podman_args"].append(f"--share-parent={str(params['share_parent']).lower()}") + if params["shm_size"]: + params["podman_args"].append(f"--shm-size {params['shm_size']}") + if params["shm_size_systemd"]: + params["podman_args"].append(f"--shm-size-systemd {params['shm_size_systemd']}") if params["subgidname"]: params["podman_args"].append(f"--subgidname {params['subgidname']}") if params["subuidname"]: params["podman_args"].append(f"--subuidname {params['subuidname']}") + if params["sysctl"]: + for k, v in params["sysctl"].items(): + params["podman_args"].append(f"--sysctl {k}={v}") if params["uidmap"]: for uidmap in params["uidmap"]: params["podman_args"].append(f"--uidmap {uidmap}") if params["userns"]: params["podman_args"].append(f"--userns {params['userns']}") + if params["uts"]: + params["podman_args"].append(f"--uts {params['uts']}") + if params["volumes_from"]: + for volume in params["volumes_from"]: + params["podman_args"].append(f"--volumes-from {volume}") if params["debug"]: params["global_args"].append("--log-level debug") diff --git a/ansible_collections/containers/podman/plugins/modules/podman_container.py b/ansible_collections/containers/podman/plugins/modules/podman_container.py index 75349f14e..b06c9ae9e 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_container.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_container.py @@ -79,6 +79,11 @@ options: - Add an annotation to the container. The format is key value, multiple times. type: dict + arch: + description: + - Set the architecture for the container. + Override the architecture, defaults to hosts, of the image to be pulled. For example, arm. + type: str attach: description: - Attach to STDIN, STDOUT or STDERR. The default in Podman is false. @@ -125,6 +130,10 @@ options: the cgroups path of the init process. Cgroups will be created if they do not already exist. type: path + cgroup_conf: + description: + - When running on cgroup v2, specify the cgroup file to write to and its value. + type: dict cgroupns: description: - Path to cgroups under which the cgroup for the container will be @@ -137,6 +146,10 @@ options: The disabled option will force the container to not create CGroups, and thus conflicts with CGroup options cgroupns and cgroup-parent. type: str + chrootdirs: + description: + - Path to a directory inside the container that is treated as a chroot directory. + type: str cidfile: description: - Write the container ID to the file @@ -196,6 +209,10 @@ options: - Memory nodes (MEMs) in which to allow execution (0-3, 0,1). Only effective on NUMA systems. type: str + decryption_key: + description: + - The "key-passphrase" to be used for decryption of images. Key can point to keys and/or certificates. + type: str delete_depend: description: - Remove selected container and recursively remove all containers that depend on it. @@ -234,6 +251,12 @@ options: (e.g. device /dev/sdc:/dev/xvdc:rwm) type: list elements: str + device_cgroup_rule: + description: + - Add a rule to the cgroup allowed devices list. + The rule is expected to be in the format specified in the Linux kernel + documentation admin-guide/cgroup-v1/devices. + type: str device_read_bps: description: - Limit read rate (bytes per second) from a device @@ -307,6 +330,10 @@ options: - Use all current host environment variables in container. Defaults to false. type: bool + env_merge: + description: + - Preprocess default environment variables for the containers + type: dict etc_hosts: description: - Dict of host-to-IP mappings, where each host name is a key in the @@ -436,6 +463,10 @@ options: - Run the container in a new user namespace using the supplied mapping. type: list elements: str + gpus: + description: + - GPU devices to add to the container. + type: str group_add: description: - Add additional groups to run as @@ -443,33 +474,70 @@ options: elements: str aliases: - groups + group_entry: + description: + - Customize the entry that is written to the /etc/group file within the container when --user is used. + type: str healthcheck: description: - Set or alter a healthcheck command for a container. type: str + aliases: + - health_cmd healthcheck_interval: description: - Set an interval for the healthchecks (a value of disable results in no automatic timer setup) (default "30s") type: str + aliases: + - health_interval healthcheck_retries: description: - The number of retries allowed before a healthcheck is considered to be unhealthy. The default value is 3. type: int + aliases: + - health_retries healthcheck_start_period: description: - The initialization time needed for a container to bootstrap. The value can be expressed in time format like 2m3s. The default value is 0s type: str + aliases: + - health_start_period + health_startup_cmd: + description: + - Set a startup healthcheck command for a container. + type: str + health_startup_interval: + description: + - Set an interval for the startup healthcheck. + type: str + health_startup_retries: + description: + - The number of attempts allowed before the startup healthcheck restarts the container. + If set to 0, the container is never restarted. The default is 0. + type: int + health_startup_success: + description: + - The number of successful runs required before the startup healthcheck succeeds + and the regular healthcheck begins. A value of 0 means that any success begins the regular healthcheck. + The default is 0. + type: int + health_startup_timeout: + description: + - The maximum time a startup healthcheck command has to complete before it is marked as failed. + type: str healthcheck_timeout: description: - The maximum time allowed to complete the healthcheck before an interval is considered failed. Like start-period, the value can be expressed in a time format such as 1m22s. The default value is 30s type: str + aliases: + - health_timeout healthcheck_failure_action: description: - The action to be taken when the container is considered unhealthy. The action must be one of @@ -481,6 +549,8 @@ options: - 'kill' - 'restart' - 'stop' + aliases: + - health_on_failure hooks_dir: description: - Each .json file in the path configures a hook for Podman containers. @@ -493,6 +563,11 @@ options: - Container host name. Sets the container host name that is available inside the container. type: str + hostuser: + description: + - Add a user account to /etc/passwd from the host to the container. + The Username or UID must exist on the host system. + type: str http_proxy: description: - By default proxy environment variables are passed into the container if @@ -522,6 +597,14 @@ options: - Run an init inside the container that forwards signals and reaps processes. The default is false. type: bool + init_ctr: + description: + - (Pods only). When using pods, create an init style container, + which is run after the infra container is started but before regular pod containers are started. + type: str + choices: + - 'once' + - 'always' init_path: description: - Path to the container-init binary. @@ -542,6 +625,10 @@ options: The address must be within the default CNI network's pool (default 10.88.0.0/16). type: str + ip6: + description: + - Specify a static IPv6 address for the container + type: str ipc: description: - Default is to create a private IPC namespace (POSIX SysV IPC) for the @@ -671,6 +758,12 @@ options: This is a limitation that will be removed in a later release. type: list elements: str + aliases: + - network_alias + no_healthcheck: + description: + - Disable any defined healthchecks for container. + type: bool no_hosts: description: - Do not create /etc/hosts for the container @@ -685,23 +778,64 @@ options: description: - Tune the host's OOM preferences for containers (accepts -1000 to 1000) type: int + os: + description: + - Override the OS, defaults to hosts, of the image to be pulled. For example, windows. + type: str + passwd: + description: + - Allow Podman to add entries to /etc/passwd and /etc/group when used in conjunction with the --user option. + This is used to override the Podman provided user setup in favor of entrypoint configurations + such as libnss-extrausers. + type: bool + passwd_entry: + description: + - Customize the entry that is written to the /etc/passwd file within the container when --passwd is used. + type: str + personality: + description: + - Personality sets the execution domain via Linux personality(2). + type: str pid: description: - Set the PID mode for the container type: str aliases: - pid_mode + pid_file: + description: + - When the pidfile location is specified, the container process' PID is written to the pidfile. + type: path pids_limit: description: - Tune the container's PIDs limit. Set -1 to have unlimited PIDs for the container. type: str + platform: + description: + - Specify the platform for selecting the image. + type: str pod: description: - Run container in an existing pod. If you want podman to make the pod for you, prefix the pod name with "new:" type: str + pod_id_file: + description: + - Run container in an existing pod and read the pod's ID from the specified file. + When a container is run within a pod which has an infra-container, + the infra-container starts first. + type: path + preserve_fd: + description: + - Pass down to the process the additional file descriptors specified in the comma separated list. + type: list + elements: str + preserve_fds: + description: + - Pass down to the process N additional file descriptors (in addition to 0, 1, 2). The total FDs are 3\+N. + type: str privileged: description: - Give extended privileges to this container. The default is false. @@ -724,6 +858,15 @@ options: - Publish all exposed ports to random ports on the host interfaces. The default is false. type: bool + pull: + description: + - Pull image policy. The default is 'missing'. + type: str + choices: + - 'missing' + - 'always' + - 'never' + - 'newer' quadlet_dir: description: - Path to the directory to write quadlet file in. @@ -740,6 +883,10 @@ options: options as a list of lines to add. type: list elements: str + rdt_class: + description: + - Rdt-class sets the class of service (CLOS or COS) for the container to run in. Requires root. + type: str read_only: description: - Mount the container's root filesystem as read only. Default is false @@ -779,6 +926,15 @@ options: - Seconds to wait before forcibly stopping the container when restarting. Use -1 for infinite wait. Applies to "restarted" status. type: str + retry: + description: + - Number of times to retry pulling or pushing images between the registry and local storage in case of failure. + Default is 3. + type: int + retry_delay: + description: + - Duration of delay between retry attempts when pulling or pushing images between the registry and local storage in case of failure. + type: str rm: description: - Automatically remove the container when it exits. The default is false. @@ -786,6 +942,11 @@ options: aliases: - remove - auto_remove + rmi: + description: + - After exit of the container, remove the image unless another container is using it. + Implies --rm on the new container. The default is false. + type: bool rootfs: description: - If true, the first argument refers to an exploded container on the file @@ -803,6 +964,10 @@ options: L(documentation,https://docs.podman.io/en/latest/markdown/podman-run.1.html#secret-secret-opt-opt) for more details. type: list elements: str + seccomp_policy: + description: + - Specify the policy to select the seccomp profile. + type: str security_opt: description: - Security Options. For example security_opt "seccomp=unconfined" @@ -817,6 +982,10 @@ options: If you omit the unit, the system uses bytes. If you omit the size entirely, the system uses 64m type: str + shm_size_systemd: + description: + - Size of systemd-specific tmpfs mounts such as /run, /run/lock, /var/log/journal and /tmp. + type: str sig_proxy: description: - Proxy signals sent to the podman run command to the container process. @@ -853,6 +1022,11 @@ options: description: - Run container in systemd mode. The default is true. type: str + timeout: + description: + - Maximum time (in seconds) a container is allowed to run before conmon sends it the kill signal. + By default containers run until they exit or are stopped by "podman stop". + type: int timezone: description: - Set timezone in container. This flag takes area-based timezones, @@ -861,6 +1035,10 @@ options: See /usr/share/zoneinfo/ for valid timezones. Remote connections use local containers.conf for defaults. type: str + tls_verify: + description: + - Require HTTPS and verify certificates when pulling images. + type: bool tmpfs: description: - Create a tmpfs mount. For example tmpfs @@ -882,6 +1060,20 @@ options: elements: str aliases: - ulimits + umask: + description: + - Set the umask inside the container. Defaults to 0022. + Remote connections use local containers.conf for defaults. + type: str + unsetenv: + description: + - Unset default environment variables for the container. + type: list + elements: str + unsetenv_all: + description: + - Unset all default environment variables for the container. + type: bool user: description: - Sets the username or UID used and optionally the groupname or GID for @@ -899,6 +1091,10 @@ options: description: - Set the UTS mode for the container type: str + variant: + description: + - Use VARIANT instead of the default architecture variant of the container image. + type: str volume: description: - Create a bind mount. If you specify, volume /HOST-DIR:/CONTAINER-DIR, diff --git a/ansible_collections/containers/podman/plugins/modules/podman_image.py b/ansible_collections/containers/podman/plugins/modules/podman_image.py index 7fcb0041a..a46a6c3c5 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_image.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_image.py @@ -42,6 +42,10 @@ DOCUMENTATION = r''' description: Whether or not to pull the image. default: True type: bool + pull_extra_args: + description: + - Extra arguments to pass to the pull command. + type: str push: description: Whether or not to push an image. default: False @@ -67,7 +71,8 @@ DOCUMENTATION = r''' - quadlet validate_certs: description: - - Require HTTPS and validate certificates when pulling or pushing. Also used during build if a pull or push is necessary. + - Require HTTPS and validate certificates when pulling or pushing. + Also used during build if a pull or push is necessary. type: bool aliases: - tlsverify @@ -94,9 +99,15 @@ DOCUMENTATION = r''' - build_args - buildargs suboptions: + container_file: + description: + - Content of the Containerfile to use for building the image. + Mutually exclusive with the C(file) option which is path to the existing Containerfile. + type: str file: description: - Path to the Containerfile if it is not in the build context directory. + Mutually exclusive with the C(container_file) option. type: path volume: description: @@ -105,7 +116,8 @@ DOCUMENTATION = r''' elements: str annotation: description: - - Dictionary of key=value pairs to add to the image. Only works with OCI images. Ignored for Docker containers. + - Dictionary of key=value pairs to add to the image. Only works with OCI images. + Ignored for Docker containers. type: dict force_rm: description: @@ -148,7 +160,7 @@ DOCUMENTATION = r''' type: bool format: description: - - Manifest type to use when pushing an image using the 'dir' transport (default is manifest type of source). + - Manifest type to use when pushing an image using the 'dir' transport (default is manifest type of source) type: str choices: - oci @@ -168,14 +180,19 @@ DOCUMENTATION = r''' - destination transport: description: - - Transport to use when pushing in image. If no transport is set, will attempt to push to a remote registry. + - Transport to use when pushing in image. If no transport is set, will attempt to push to a remote registry type: str choices: - dir + - docker - docker-archive - docker-daemon - oci-archive - ostree + extra_args: + description: + - Extra args to pass to push, if executed. Does not idempotently check for new push args. + type: str quadlet_dir: description: - Path to the directory to write quadlet file in. @@ -300,6 +317,15 @@ EXAMPLES = r""" name: nginx arch: amd64 +- name: Build a container from file inline + containers.podman.podman_image: + name: mycustom_image + state: build + build: + container_file: |- + FROM alpine:latest + CMD echo "Hello, World!" + - name: Create a quadlet file for an image containers.podman.podman_image: name: docker.io/library/alpine:latest @@ -333,7 +359,7 @@ RETURN = r""" "/app-entrypoint.sh" ], "Env": [ - "PATH=/opt/bitnami/java/bin:/opt/bitnami/wildfly/bin:/opt/bitnami/nami/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "PATH=/opt/bitnami/java/bin:/opt/bitnami/wildfly/bin:/opt/bitnami/nami/bin:...", "IMAGE_OS=debian-9", "NAMI_VERSION=1.0.0-1", "GPG_KEY_SERVERS_LIST=ha.pool.sks-keyservers.net", @@ -373,10 +399,10 @@ RETURN = r""" "Digest": "sha256:5a8ab28e314c2222de3feaf6dac94a0436a37fc08979d2722c99d2bef2619a9b", "GraphDriver": { "Data": { - "LowerDir": "/var/lib/containers/storage/overlay/142c1beadf1bb09fbd929465ec98c9dca3256638220450efb4214727d0d0680e/diff:/var/lib/containers/s", - "MergedDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/merged", - "UpperDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/diff", - "WorkDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99723ed787878dbfea/work" + "LowerDir": "/var/lib/containers/storage/overlay/142c1beadf1bb09fbd929465e..../diff:/var/lib/containers/s", + "MergedDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/merged", + "UpperDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/diff", + "WorkDir": "/var/lib/containers/storage/overlay/9aa10191f5bddb59e28508e721fdeb43505e5b395845fa99/work" }, "Name": "overlay" }, @@ -434,9 +460,12 @@ RETURN = r""" ] """ -import json -import re -import shlex +import json # noqa: E402 +import os # noqa: E402 +import re # noqa: E402 +import shlex # noqa: E402 +import tempfile # noqa: E402 +import time # noqa: E402 from ansible.module_utils._text import to_native from ansible.module_utils.basic import AnsibleModule @@ -456,6 +485,7 @@ class PodmanImageManager(object): self.executable = self.module.get_bin_path(module.params.get('executable'), required=True) self.tag = self.module.params.get('tag') self.pull = self.module.params.get('pull') + self.pull_extra_args = self.module.params.get('pull_extra_args') self.push = self.module.params.get('push') self.path = self.module.params.get('path') self.force = self.module.params.get('force') @@ -509,7 +539,7 @@ class PodmanImageManager(object): if not layer_ids: layer_ids = lines.splitlines() - return (layer_ids[-1]) + return layer_ids[-1] def present(self): image = self.find_image() @@ -520,9 +550,18 @@ class PodmanImageManager(object): digest_before = None if not image or self.force: - if self.path: + if self.state == 'build' or self.path: # Build the image - self.results['actions'].append('Built image {image_name} from {path}'.format(image_name=self.image_name, path=self.path)) + build_file = self.build.get('file') if self.build else None + container_file_txt = self.build.get('container_file') if self.build else None + if build_file and container_file_txt: + self.module.fail_json(msg='Cannot specify both build file and container file content!') + if not self.path and build_file: + self.path = os.path.dirname(build_file) + elif not self.path and not build_file and not container_file_txt: + self.module.fail_json(msg='Path to build context or file is required when building an image') + self.results['actions'].append('Built image {image_name} from {path}'.format( + image_name=self.image_name, path=self.path or 'default context')) if not self.module.check_mode: self.results['image'], self.results['stdout'] = self.build_image() image = self.results['image'] @@ -541,16 +580,8 @@ class PodmanImageManager(object): self.results['changed'] = True if self.push: - # Push the image - if '/' in self.image_name: - push_format_string = 'Pushed image {image_name}' - else: - push_format_string = 'Pushed image {image_name} to {dest}' - self.results['actions'].append(push_format_string.format(image_name=self.image_name, dest=self.push_args['dest'])) - self.results['changed'] = True - if not self.module.check_mode: - self.results['image'], output = self.push_image() - self.results['stdout'] += "\n" + output + self.results['image'], output = self.push_image() + self.results['stdout'] += "\n" + output if image and not self.results.get('image'): self.results['image'] = image @@ -654,13 +685,18 @@ class PodmanImageManager(object): if self.ca_cert_dir: args.extend(['--cert-dir', self.ca_cert_dir]) + if self.pull_extra_args: + args.extend(shlex.split(self.pull_extra_args)) + rc, out, err = self._run(args, ignore_errors=True) if rc != 0: if not self.pull: - self.module.fail_json(msg='Failed to find image {image_name} locally, image pull set to {pull_bool}'.format( - pull_bool=self.pull, image_name=image_name)) + self.module.fail_json( + msg='Failed to find image {image_name} locally, image pull set to {pull_bool}'.format( + pull_bool=self.pull, image_name=image_name)) else: - self.module.fail_json(msg='Failed to pull image {image_name}'.format(image_name=image_name)) + self.module.fail_json( + msg='Failed to pull image {image_name}'.format(image_name=image_name)) return self.inspect_image(out.strip()) def build_image(self): @@ -697,6 +733,17 @@ class PodmanImageManager(object): containerfile = self.build.get('file') if containerfile: args.extend(['--file', containerfile]) + container_file_txt = self.build.get('container_file') + if container_file_txt: + # create a temporarly file with the content of the Containerfile + if self.path: + container_file_path = os.path.join(self.path, 'Containerfile.generated_by_ansible_%s' % time.time()) + else: + container_file_path = os.path.join( + tempfile.gettempdir(), 'Containerfile.generated_by_ansible_%s' % time.time()) + with open(container_file_path, 'w') as f: + f.write(container_file_txt) + args.extend(['--file', container_file_path]) volume = self.build.get('volume') if volume: @@ -717,13 +764,16 @@ class PodmanImageManager(object): target = self.build.get('target') if target: args.extend(['--target', target]) - - args.append(self.path) + if self.path: + args.append(self.path) rc, out, err = self._run(args, ignore_errors=True) if rc != 0: - self.module.fail_json(msg="Failed to build image {image}: {out} {err}".format(image=self.image_name, out=out, err=err)) - + self.module.fail_json(msg="Failed to build image {image}: {out} {err}".format( + image=self.image_name, out=out, err=err)) + # remove the temporary file if it was created + if container_file_txt: + os.remove(container_file_path) last_id = self._get_id_from_output(out, startswith='-->') return self.inspect_image(last_id), out + err @@ -760,49 +810,55 @@ class PodmanImageManager(object): if sign_by_key: args.extend(['--sign-by', sign_by_key]) + push_extra_args = self.push_args.get('extra_args') + if push_extra_args: + args.extend(shlex.split(push_extra_args)) + args.append(self.image_name) # Build the destination argument dest = self.push_args.get('dest') - dest_format_string = '{dest}/{image_name}' - regexp = re.compile(r'/{name}(:{tag})?'.format(name=self.name, tag=self.tag)) - if not dest: - if '/' not in self.name: - self.module.fail_json(msg="'push_args['dest']' is required when pushing images that do not have the remote registry in the image name") - - # If the push destination contains the image name and/or the tag - # remove it and warn since it's not needed. - elif regexp.search(dest): - dest = regexp.sub('', dest) - self.module.warn("Image name and tag are automatically added to push_args['dest']. Destination changed to {dest}".format(dest=dest)) + transport = self.push_args.get('transport') - if dest and dest.endswith('/'): - dest = dest[:-1] + if dest is None: + dest = self.image_name - transport = self.push_args.get('transport') if transport: - if not dest: - self.module.fail_json("'push_args['transport'] requires 'push_args['dest'] but it was not provided.") if transport == 'docker': dest_format_string = '{transport}://{dest}' elif transport == 'ostree': dest_format_string = '{transport}:{name}@{dest}' else: dest_format_string = '{transport}:{dest}' - - dest_string = dest_format_string.format(transport=transport, name=self.name, dest=dest, image_name=self.image_name,) - - # Only append the destination argument if the image name is not a URL - if '/' not in self.name: - args.append(dest_string) - - rc, out, err = self._run(args, ignore_errors=True) - if rc != 0: - self.module.fail_json(msg="Failed to push image {image_name}: {err}".format(image_name=self.image_name, err=err)) - last_id = self._get_id_from_output( - out + err, contains=':', split_on=':') - - return self.inspect_image(last_id), out + err + if transport == 'docker-daemon' and ":" not in dest: + dest_format_string = '{transport}:{dest}:latest' + dest_string = dest_format_string.format(transport=transport, name=self.name, dest=dest) + else: + dest_string = dest + # In case of dest as a repository with org name only, append image name to it + if ":" not in dest and "@" not in dest and len(dest.rstrip("/").split("/")) == 2: + dest_string = dest.rstrip("/") + "/" + self.image_name + + if "/" not in dest_string and "@" not in dest_string and "docker-daemon" not in dest_string: + self.module.fail_json(msg="Destination must be a full URL or path to a directory.") + + args.append(dest_string) + self.module.log("PODMAN-IMAGE-DEBUG: Pushing image {image_name} to {dest_string}".format( + image_name=self.image_name, dest_string=dest_string)) + self.results['actions'].append(" ".join(args)) + self.results['podman_actions'].append(" ".join([self.executable] + args)) + self.results['changed'] = True + out, err = '', '' + if not self.module.check_mode: + rc, out, err = self._run(args, ignore_errors=True) + if rc != 0: + self.module.fail_json(msg="Failed to push image {image_name}".format( + image_name=self.image_name), + stdout=out, stderr=err, + actions=self.results['actions'], + podman_actions=self.results['podman_actions']) + + return self.inspect_image(self.image_name), out + err def remove_image(self, image_name=None): if image_name is None: @@ -813,7 +869,8 @@ class PodmanImageManager(object): args.append('--force') rc, out, err = self._run(args, ignore_errors=True) if rc != 0: - self.module.fail_json(msg='Failed to remove image {image_name}. {err}'.format(image_name=image_name, err=err)) + self.module.fail_json(msg='Failed to remove image {image_name}. {err}'.format( + image_name=image_name, err=err)) return out def remove_image_id(self, image_id=None): @@ -847,6 +904,7 @@ def main(): arch=dict(type='str'), tag=dict(type='str', default='latest'), pull=dict(type='bool', default=True), + pull_extra_args=dict(type='str'), push=dict(type='bool', default=False), path=dict(type='str'), force=dict(type='bool', default=False), @@ -868,6 +926,7 @@ def main(): annotation=dict(type='dict'), force_rm=dict(type='bool', default=False), file=dict(type='path'), + container_file=dict(type='str'), format=dict( type='str', choices=['oci', 'docker'], @@ -889,6 +948,7 @@ def main(): remove_signatures=dict(type='bool'), sign_by=dict(type='str'), dest=dict(type='str', aliases=['destination'],), + extra_args=dict(type='str'), transport=dict( type='str', choices=[ @@ -897,6 +957,7 @@ def main(): 'docker-daemon', 'oci-archive', 'ostree', + 'docker' ] ), ), diff --git a/ansible_collections/containers/podman/plugins/modules/podman_network.py b/ansible_collections/containers/podman/plugins/modules/podman_network.py index 37bfefede..7623fffc1 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_network.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_network.py @@ -33,6 +33,12 @@ options: description: - disable dns plugin (default "false") type: bool + dns: + description: + - Set network-scoped DNS resolver/nameserver for containers in this network. + If not set, the host servers from /etc/resolv.conf is used. + type: list + elements: str driver: description: - Driver to manage the network (default "bridge") @@ -61,11 +67,27 @@ options: description: - Allocate container IP from range type: str + ipam_driver: + description: + - Set the ipam driver (IP Address Management Driver) for the network. + When unset podman chooses an ipam driver automatically based on the network driver + type: str + choices: + - host-local + - dhcp + - none ipv6: description: - Enable IPv6 (Dual Stack) networking. You must pass a IPv6 subnet. The subnet option must be used with the ipv6 option. + Idempotency is not supported because it generates subnets randomly. type: bool + route: + description: + - A static route in the format <destination in CIDR notation>,<gateway>,<route metric (optional)>. + This route will be added to every container in this network. + type: list + elements: str subnet: description: - Subnet in CIDR format @@ -74,6 +96,29 @@ options: description: - Create a Macvlan connection based on this device type: str + net_config: + description: + - List of dictionaries with network configuration. + Each dictionary should contain 'subnet' and 'gateway' keys. + 'ip_range' is optional. + type: list + elements: dict + suboptions: + subnet: + description: + - Subnet in CIDR format + type: str + required: true + gateway: + description: + - Gateway for the subnet + type: str + required: true + ip_range: + description: + - Allocate container IP from range + type: str + required: false opt: description: - Add network options. Currently 'vlan' and 'mtu' are supported. @@ -297,6 +342,11 @@ class PodmanNetworkModuleParams: def addparam_gateway(self, c): return c + ['--gateway', self.params['gateway']] + def addparam_dns(self, c): + for dns in self.params['dns']: + c += ['--dns', dns] + return c + def addparam_driver(self, c): return c + ['--driver', self.params['driver']] @@ -312,6 +362,13 @@ class PodmanNetworkModuleParams: def addparam_macvlan(self, c): return c + ['--macvlan', self.params['macvlan']] + def addparam_net_config(self, c): + for net in self.params['net_config']: + for kw in ('subnet', 'gateway', 'ip_range'): + if kw in net and net[kw]: + c += ['--%s=%s' % (kw.replace('_', '-'), net[kw])] + return c + def addparam_interface_name(self, c): return c + ['--interface-name', self.params['interface_name']] @@ -326,6 +383,14 @@ class PodmanNetworkModuleParams: for k in opt])] return c + def addparam_route(self, c): + for route in self.params['route']: + c += ['--route', route] + return c + + def addparam_ipam_driver(self, c): + return c + ['--ipam-driver=%s' % self.params['ipam_driver']] + def addparam_disable_dns(self, c): return c + ['--disable-dns=%s' % self.params['disable_dns']] @@ -337,7 +402,6 @@ class PodmanNetworkDefaults: self.defaults = { 'driver': 'bridge', 'internal': False, - 'ipv6': False } def default_dict(self): @@ -385,32 +449,45 @@ class PodmanNetworkDiff: before = after = self.params['disable_dns'] return self._diff_update_and_compare('disable_dns', before, after) + def diffparam_dns(self): + before = self.info.get('network_dns_servers', []) + after = self.params['dns'] or [] + return self._diff_update_and_compare('dns', sorted(before), sorted(after)) + def diffparam_driver(self): # Currently only bridge is supported before = after = 'bridge' return self._diff_update_and_compare('driver', before, after) def diffparam_ipv6(self): - if LooseVersion(self.version) >= LooseVersion('4.0.0'): - before = self.info.get('ipv6_enabled', False) - after = self.params['ipv6'] - return self._diff_update_and_compare('ipv6', before, after) - before = after = '' - return self._diff_update_and_compare('ipv6', before, after) + # We don't support dual stack because it generates subnets randomly + return self._diff_update_and_compare('ipv6', '', '') def diffparam_gateway(self): # Disable idempotency of subnet for v4, subnets are added automatically # TODO(sshnaidm): check if it's still the issue in v5 - if LooseVersion(self.version) >= LooseVersion('4.0.0'): - return self._diff_update_and_compare('gateway', '', '') - try: - before = self.info['plugins'][0]['ipam']['ranges'][0][0]['gateway'] - except (IndexError, KeyError): - before = '' - after = before - if self.params['gateway'] is not None: + if LooseVersion(self.version) < LooseVersion('4.0.0'): + try: + before = self.info['plugins'][0]['ipam']['ranges'][0][0]['gateway'] + except (IndexError, KeyError): + before = '' + after = before + if self.params['gateway'] is not None: + after = self.params['gateway'] + return self._diff_update_and_compare('gateway', before, after) + else: + before_subs = self.info.get('subnets') after = self.params['gateway'] - return self._diff_update_and_compare('gateway', before, after) + if not before_subs: + before = None + if before_subs: + if len(before_subs) > 1 and after: + return self._diff_update_and_compare( + 'gateway', ",".join([i['gateway'] for i in before_subs]), after) + before = [i.get('gateway') for i in before_subs][0] + if not after: + after = before + return self._diff_update_and_compare('gateway', before, after) def diffparam_internal(self): if LooseVersion(self.version) >= LooseVersion('4.0.0'): @@ -429,21 +506,62 @@ class PodmanNetworkDiff: before = after = '' return self._diff_update_and_compare('ip_range', before, after) - def diffparam_subnet(self): - # Disable idempotency of subnet for v4, subnets are added automatically - # TODO(sshnaidm): check if it's still the issue in v5 - if LooseVersion(self.version) >= LooseVersion('4.0.0'): - return self._diff_update_and_compare('subnet', '', '') - try: - before = self.info['plugins'][0]['ipam']['ranges'][0][0]['subnet'] - except (IndexError, KeyError): + def diffparam_ipam_driver(self): + before = self.info.get("ipam_options", {}).get("driver", "") + after = self.params['ipam_driver'] + if not after: + after = before + return self._diff_update_and_compare('ipam_driver', before, after) + + def diffparam_net_config(self): + after = self.params['net_config'] + if not after: + return self._diff_update_and_compare('net_config', '', '') + before_subs = self.info.get('subnets', []) + if before_subs: + before = ":".join(sorted([",".join([i['subnet'], i['gateway']]).rstrip(",") for i in before_subs])) + else: before = '' - after = before - if self.params['subnet'] is not None: + after = ":".join(sorted([",".join([i['subnet'], i['gateway']]).rstrip(",") for i in after])) + return self._diff_update_and_compare('net_config', before, after) + + def diffparam_route(self): + routes = self.info.get('routes', []) + if routes: + before = [",".join([ + r['destination'], r['gateway'], str(r.get('metric', ''))]).rstrip(",") for r in routes] + else: + before = [] + after = self.params['route'] or [] + return self._diff_update_and_compare('route', sorted(before), sorted(after)) + + def diffparam_subnet(self): + # Disable idempotency of subnet for v3 and below + if LooseVersion(self.version) < LooseVersion('4.0.0'): + try: + before = self.info['plugins'][0]['ipam']['ranges'][0][0]['subnet'] + except (IndexError, KeyError): + before = '' + after = before + if self.params['subnet'] is not None: + after = self.params['subnet'] + if HAS_IP_ADDRESS_MODULE: + after = ipaddress.ip_network(after).compressed + return self._diff_update_and_compare('subnet', before, after) + else: + if self.params['ipv6'] is not None: + # We can't support dual stack, it generates subnets randomly + return self._diff_update_and_compare('subnet', '', '') after = self.params['subnet'] - if HAS_IP_ADDRESS_MODULE: - after = ipaddress.ip_network(after).compressed - return self._diff_update_and_compare('subnet', before, after) + if after is None: + # We can't guess what subnet was used before by default + return self._diff_update_and_compare('subnet', '', '') + before = self.info.get('subnets') + if before: + if len(before) > 1 and after: + return self._diff_update_and_compare('subnet', ",".join([i['subnet'] for i in before]), after) + before = [i['subnet'] for i in before][0] + return self._diff_update_and_compare('subnet', before, after) def diffparam_macvlan(self): before = after = '' @@ -694,12 +812,15 @@ def main(): choices=['present', 'absent', 'quadlet']), name=dict(type='str', required=True), disable_dns=dict(type='bool', required=False), + dns=dict(type='list', elements='str', required=False), driver=dict(type='str', required=False), force=dict(type='bool', default=False), gateway=dict(type='str', required=False), interface_name=dict(type='str', required=False), internal=dict(type='bool', required=False), ip_range=dict(type='str', required=False), + ipam_driver=dict(type='str', required=False, + choices=['host-local', 'dhcp', 'none']), ipv6=dict(type='bool', required=False), subnet=dict(type='str', required=False), macvlan=dict(type='str', required=False), @@ -715,14 +836,23 @@ def main(): executable=dict(type='str', required=False, default='podman'), debug=dict(type='bool', default=False), recreate=dict(type='bool', default=False), + route=dict(type='list', elements='str', required=False), quadlet_dir=dict(type='path', required=False), quadlet_filename=dict(type='str', required=False), quadlet_options=dict(type='list', elements='str', required=False), + net_config=dict(type='list', required=False, elements='dict', + options=dict( + subnet=dict(type='str', required=True), + gateway=dict(type='str', required=True), + ip_range=dict(type='str', required=False), + )), ), required_by=dict( # for IP range and GW to set 'subnet' is required ip_range=('subnet'), gateway=('subnet'), - )) + ), + # define or subnet or net config + mutually_exclusive=[['subnet', 'net_config']]) PodmanNetworkManager(module).execute() diff --git a/ansible_collections/containers/podman/plugins/modules/podman_pod.py b/ansible_collections/containers/podman/plugins/modules/podman_pod.py index a975921ea..cdf728243 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_pod.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_pod.py @@ -117,6 +117,8 @@ options: all containers in the pod. type: list elements: str + aliases: + - dns_option required: false dns_search: description: @@ -125,6 +127,14 @@ options: type: list elements: str required: false + exit_policy: + description: + - Set the exit policy of the pod when the last container exits. Supported policies are stop and continue + choices: + - stop + - continue + type: str + required: false generate_systemd: description: - Generate systemd unit file for container. @@ -227,6 +237,11 @@ options: elements: str required: false type: list + gpus: + description: + - GPU devices to add to the container ('all' to pass all GPUs). + type: str + required: false hostname: description: - Set a hostname to the pod @@ -266,6 +281,11 @@ options: - Set a static IP for the pod's shared network. type: str required: false + ip6: + description: + - Set a static IPv6 for the pod's shared network. + type: str + required: false label: description: - Add metadata to a pod, pass dictionary of label keys and values. @@ -357,6 +377,16 @@ options: options as a list of lines to add. type: list elements: str + restart_policy: + description: + - Restart policy to follow when containers exit. + type: str + security_opt: + description: + - Security options for the pod. + type: list + elements: str + required: false share: description: - A comma delimited list of kernel namespaces to share. If none or "" is specified, @@ -364,6 +394,30 @@ options: user, uts. type: str required: false + share_parent: + description: + - This boolean determines whether or not all containers entering the pod use the pod as their cgroup parent. + The default value of this option in Podman is true. + type: bool + required: false + shm_size: + description: + - Set the size of the /dev/shm shared memory space. + A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes). + If the unit is omitted, the system uses bytes. + If the size is omitted, the default is 64m. + When size is 0, there is no limit on the amount of memory used for IPC by the pod. + type: str + required: false + shm_size_systemd: + description: + - Size of systemd-specific tmpfs mounts such as /run, /run/lock, /var/log/journal and /tmp. + A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes). + If the unit is omitted, the system uses bytes. + If the size is omitted, the default is 64m. + When size is 0, the usage is limited to 50 percents of the host's available memory. + type: str + required: false subgidname: description: - Name for GID map from the /etc/subgid file. Using this flag will run the container @@ -377,6 +431,11 @@ options: This flag conflicts with `userns` and `uidmap`. required: false type: str + sysctl: + description: + - Set kernel parameters for the pod. + type: dict + required: false uidmap: description: - Run the container in a new user namespace using the supplied mapping. @@ -393,6 +452,11 @@ options: An empty value ("") means user namespaces are disabled. required: false type: str + uts: + description: + - Set the UTS namespace mode for the pod. + required: false + type: str volume: description: - Create a bind mount. @@ -401,6 +465,12 @@ options: elements: str required: false type: list + volumes_from: + description: + - Mount volumes from the specified container. + elements: str + required: false + type: list executable: description: - Path to C(podman) executable if it is not in the C($PATH) on the @@ -450,7 +520,7 @@ pod: ''' -EXAMPLES = ''' +EXAMPLES = r''' # What modules does for example - containers.podman.podman_pod: name: pod1 @@ -465,6 +535,62 @@ EXAMPLES = ''' state: started publish: "127.0.0.1::80" +# Full workflow example with pod and containers +- name: Create a pod with parameters + containers.podman.podman_pod: + name: mypod + state: created + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.1 + volumes: + - /tmp:/tmp/:ro + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + +- name: Create containers attached to the pod + containers.podman.podman_container: + name: "{{ item }}" + state: created + pod: mypod + image: alpine + command: sleep 1h + loop: + - "container1" + - "container2" + +- name: Start pod + containers.podman.podman_pod: + name: mypod + state: started + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.1 + volumes: + - /tmp:/tmp/:ro + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + # Create a Quadlet file for a pod - containers.podman.podman_pod: name: qpod diff --git a/ansible_collections/containers/podman/plugins/modules/podman_search.py b/ansible_collections/containers/podman/plugins/modules/podman_search.py new file mode 100644 index 000000000..128e3ce03 --- /dev/null +++ b/ansible_collections/containers/podman/plugins/modules/podman_search.py @@ -0,0 +1,131 @@ +#!/usr/bin/python +# Copyright (c) 2024 Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + + +DOCUMENTATION = r''' +module: podman_search +author: + - Derek Waters (@derekwaters) +short_description: Search for remote images using podman +notes: + - Podman may required elevated privileges in order to run properly. +description: + - Search for remote images using C(podman) +options: + executable: + description: + - Path to C(podman) executable if it is not in the C($PATH) on the machine running C(podman) + default: 'podman' + type: str + term: + description: + - The search term to look for. Will search all default registries unless a registry is defined in the search term. + type: str + required: True + limit: + description: + - Limit the number of image results returned from the search (per image registry) + required: False + default: 25 + type: int + list_tags: + description: + - Whether or not to return the list of tags associated with each image + required: False + default: False + type: bool + +''' + +EXAMPLES = r""" +- name: Search for any rhel images + containers.podman.podman_search: + term: "rhel" + limit: 3 + +- name: Gather info on a specific remote image + containers.podman.podman_search: + term: "myimageregistry.com/ansible-automation-platform/ee-minimal-rhel8" + +- name: Gather tag info on a known remote image + containers.podman.podman_search: + term: "myimageregistry.com/ansible-automation-platform/ee-minimal-rhel8" + list_tags: True +""" + +RETURN = r""" +images: + description: info from all or specified images + returned: always + type: list + sample: [ + { + "Automated": "", + "Description": "Red Hat Enterprise Linux Atomic Image is a minimal, fully supported base image.", + "Index": "registry.access.redhat.com", + "Name": "registry.access.redhat.com/rhel7-atomic", + "Official": "", + "Stars": 0, + "Tags": ["1.0", "1.1", "1.1.1-devel"] + } + ] +""" + +import json + +from ansible.module_utils.basic import AnsibleModule + + +def search_images(module, executable, term, limit, list_tags): + command = [executable, 'search', term, '--format', 'json'] + command.extend(['--limit', "{0}".format(limit)]) + if list_tags: + command.extend(['--list-tags']) + + rc, out, err = module.run_command(command) + + if rc != 0: + module.fail_json(msg="Unable to gather info for '{0}': {1}".format(term, err)) + return out + + +def main(): + module = AnsibleModule( + argument_spec=dict( + executable=dict(type='str', default='podman'), + term=dict(type='str', required=True), + limit=dict(type='int', required=False, default=25), + list_tags=dict(type='bool', required=False, default=False) + ), + supports_check_mode=True, + ) + + executable = module.params['executable'] + term = module.params.get('term') + limit = module.params.get('limit') + list_tags = module.params.get('list_tags') + executable = module.get_bin_path(executable, required=True) + + result_str = search_images(module, executable, term, limit, list_tags) + if result_str == "": + results = [] + else: + try: + results = json.loads(result_str) + except json.decoder.JSONDecodeError: + module.fail_json(msg='Failed to parse JSON output from podman search: {out}'.format(out=result_str)) + + results = dict( + changed=False, + images=results + ) + + module.exit_json(**results) + + +if __name__ == '__main__': + main() diff --git a/ansible_collections/containers/podman/plugins/modules/podman_secret.py b/ansible_collections/containers/podman/plugins/modules/podman_secret.py index a31aae9dc..76b10ad39 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_secret.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_secret.py @@ -21,6 +21,7 @@ options: data: description: - The value of the secret. Required when C(state) is C(present). + Mutually exclusive with C(env) and C(path). type: str driver: description: @@ -31,6 +32,11 @@ options: description: - Driver-specific key-value options. type: dict + env: + description: + - The name of the environment variable that contains the secret. + Mutually exclusive with C(data) and C(path). + type: str executable: description: - Path to C(podman) executable if it is not in the C($PATH) on the @@ -53,6 +59,11 @@ options: - The name of the secret. required: True type: str + path: + description: + - Path to the file that contains the secret. + Mutually exclusive with C(data) and C(env). + type: path state: description: - Whether to create or remove the named secret. @@ -67,7 +78,7 @@ options: type: dict debug: description: - - Enable debug mode for module. + - Enable debug mode for module. It prints secrets diff. type: bool default: False ''' @@ -99,6 +110,8 @@ EXAMPLES = r""" name: mysecret """ +import os + from ansible.module_utils.basic import AnsibleModule from ansible_collections.containers.podman.plugins.module_utils.podman.common import LooseVersion from ansible_collections.containers.podman.plugins.module_utils.podman.common import get_podman_version @@ -116,14 +129,15 @@ def podman_secret_exists(module, executable, name, version): return rc == 0 -def need_update(module, executable, name, data, driver, driver_opts, debug, labels): - +def need_update(module, executable, name, data, path, env, skip, driver, driver_opts, debug, labels): cmd = [executable, 'secret', 'inspect', '--showsecret', name] rc, out, err = module.run_command(cmd) if rc != 0: if debug: module.log("PODMAN-SECRET-DEBUG: Unable to get secret info: %s" % err) return True + if skip: + return False try: secret = module.from_json(out)[0] # We support only file driver for now @@ -131,10 +145,37 @@ def need_update(module, executable, name, data, driver, driver_opts, debug, labe if debug: module.log("PODMAN-SECRET-DEBUG: Idempotency of driver %s is not supported" % driver) return True - if secret['SecretData'] != data: - diff['after'] = "<different-secret>" - diff['before'] = "<secret>" - return True + if data: + if secret['SecretData'] != data: + if debug: + diff['after'] = data + diff['before'] = secret['SecretData'] + else: + diff['after'] = "<different-secret>" + diff['before'] = "<secret>" + return True + if path: + with open(path, 'rb') as f: + text = f.read().decode('utf-8') + if secret['SecretData'] != text: + if debug: + diff['after'] = text + diff['before'] = secret['SecretData'] + else: + diff['after'] = "<different-secret>" + diff['before'] = "<secret>" + return True + if env: + env_data = os.environ.get(env) + if secret['SecretData'] != env_data: + if debug: + diff['after'] = env_data + diff['before'] = secret['SecretData'] + else: + diff['after'] = "<different-secret>" + diff['before'] = "<secret>" + return True + if driver_opts: for k, v in driver_opts.items(): if secret['Spec']['Driver']['Options'].get(k) != v: @@ -154,13 +195,13 @@ def need_update(module, executable, name, data, driver, driver_opts, debug, labe return False -def podman_secret_create(module, executable, name, data, force, skip, +def podman_secret_create(module, executable, name, data, path, env, force, skip, driver, driver_opts, debug, labels): podman_version = get_podman_version(module, fail=False) if (podman_version is not None and LooseVersion(podman_version) >= LooseVersion('4.7.0') and (driver is None or driver == 'file')): - if not skip and need_update(module, executable, name, data, driver, driver_opts, debug, labels): + if need_update(module, executable, name, data, path, env, skip, driver, driver_opts, debug, labels): podman_secret_remove(module, executable, name) else: return {"changed": False} @@ -182,9 +223,20 @@ def podman_secret_create(module, executable, name, data, force, skip, cmd.append('--label') cmd.append("=".join([k, v])) cmd.append(name) - cmd.append('-') + if data: + cmd.append('-') + elif path: + cmd.append(path) + elif env: + if os.environ.get(env) is None: + module.fail_json(msg="Environment variable %s is not set" % env) + cmd.append("--env") + cmd.append(env) - rc, out, err = module.run_command(cmd, data=data, binary_data=True) + if data: + rc, out, err = module.run_command(cmd, data=data, binary_data=True) + else: + rc, out, err = module.run_command(cmd) if rc != 0: module.fail_json(msg="Unable to create secret: %s" % err) @@ -219,6 +271,8 @@ def main(): state=dict(type='str', default='present', choices=['absent', 'present']), name=dict(type='str', required=True), data=dict(type='str', no_log=True), + env=dict(type='str'), + path=dict(type='path'), force=dict(type='bool', default=False), skip_existing=dict(type='bool', default=False), driver=dict(type='str'), @@ -226,6 +280,8 @@ def main(): labels=dict(type='dict'), debug=dict(type='bool', default=False), ), + required_if=[('state', 'present', ['path', 'env', 'data'], True)], + mutually_exclusive=[['path', 'env', 'data']], ) state = module.params['state'] @@ -234,16 +290,16 @@ def main(): if state == 'present': data = module.params['data'] - if data is None: - raise Exception("'data' is required when 'state' is 'present'") force = module.params['force'] skip = module.params['skip_existing'] driver = module.params['driver'] driver_opts = module.params['driver_opts'] debug = module.params['debug'] labels = module.params['labels'] + path = module.params['path'] + env = module.params['env'] results = podman_secret_create(module, executable, - name, data, force, skip, + name, data, path, env, force, skip, driver, driver_opts, debug, labels) else: results = podman_secret_remove(module, executable, name) diff --git a/ansible_collections/containers/podman/plugins/modules/podman_volume.py b/ansible_collections/containers/podman/plugins/modules/podman_volume.py index 0b990354a..cb958cc50 100644 --- a/ansible_collections/containers/podman/plugins/modules/podman_volume.py +++ b/ansible_collections/containers/podman/plugins/modules/podman_volume.py @@ -24,6 +24,8 @@ options: choices: - present - absent + - mounted + - unmounted - quadlet recreate: description: @@ -131,6 +133,7 @@ EXAMPLES = ''' ''' # noqa: F402 import json # noqa: F402 +import os # noqa: F402 from ansible.module_utils.basic import AnsibleModule # noqa: F402 from ansible.module_utils._text import to_bytes, to_native # noqa: F402 @@ -160,7 +163,7 @@ class PodmanVolumeModuleParams: Returns: list -- list of byte strings for Popen command """ - if self.action in ['delete']: + if self.action in ['delete', 'mount', 'unmount']: return self._simple_action() if self.action in ['create']: return self._create_action() @@ -169,6 +172,12 @@ class PodmanVolumeModuleParams: if self.action == 'delete': cmd = ['rm', '-f', self.params['name']] return [to_bytes(i, errors='surrogate_or_strict') for i in cmd] + if self.action == 'mount': + cmd = ['mount', self.params['name']] + return [to_bytes(i, errors='surrogate_or_strict') for i in cmd] + if self.action == 'unmount': + cmd = ['unmount', self.params['name']] + return [to_bytes(i, errors='surrogate_or_strict') for i in cmd] def _create_action(self): cmd = [self.action, self.params['name']] @@ -326,6 +335,7 @@ class PodmanVolume: self.module = module self.name = name self.stdout, self.stderr = '', '' + self.mount_point = None self.info = self.get_info() self.version = self._get_podman_version() self.diff = {} @@ -380,7 +390,7 @@ class PodmanVolume: """Perform action with volume. Arguments: - action {str} -- action to perform - create, stop, delete + action {str} -- action to perform - create, delete, mount, unmout """ b_command = PodmanVolumeModuleParams(action, self.module.params, @@ -389,11 +399,14 @@ class PodmanVolume: ).construct_command_from_params() full_cmd = " ".join([self.module.params['executable'], 'volume'] + [to_native(i) for i in b_command]) + # check if running not from root + if os.getuid() != 0 and action == 'mount': + full_cmd = f"{self.module.params['executable']} unshare {full_cmd}" self.module.log("PODMAN-VOLUME-DEBUG: %s" % full_cmd) self.actions.append(full_cmd) if not self.module.check_mode: rc, out, err = self.module.run_command( - [self.module.params['executable'], b'volume'] + b_command, + full_cmd, expand_user_and_vars=False) self.stdout = out self.stderr = err @@ -401,6 +414,9 @@ class PodmanVolume: self.module.fail_json( msg="Can't %s volume %s" % (action, self.name), stdout=out, stderr=err) + # in case of mount/unmount, return path to the volume from stdout + if action in ['mount']: + self.mount_point = out.strip() def delete(self): """Delete the volume.""" @@ -410,6 +426,14 @@ class PodmanVolume: """Create the volume.""" self._perform_action('create') + def mount(self): + """Delete the volume.""" + self._perform_action('mount') + + def unmount(self): + """Create the volume.""" + self._perform_action('unmount') + def recreate(self): """Recreate the volume.""" self.delete() @@ -468,6 +492,8 @@ class PodmanVolumeManager: states_map = { 'present': self.make_present, 'absent': self.make_absent, + 'mounted': self.make_mount, + 'unmounted': self.make_unmount, 'quadlet': self.make_quadlet, } process_action = states_map[self.state] @@ -501,6 +527,26 @@ class PodmanVolumeManager: 'podman_actions': self.volume.actions}) self.module.exit_json(**self.results) + def make_mount(self): + """Run actions if desired state is 'mounted'.""" + if not self.volume.exists: + self.volume.create() + self.results['actions'].append('created %s' % self.volume.name) + self.volume.mount() + self.results['actions'].append('mounted %s' % self.volume.name) + if self.volume.mount_point: + self.results.update({'mount_point': self.volume.mount_point}) + self.update_volume_result() + + def make_unmount(self): + """Run actions if desired state is 'unmounted'.""" + if self.volume.exists: + self.volume.unmount() + self.results['actions'].append('unmounted %s' % self.volume.name) + self.update_volume_result() + else: + self.module.fail_json(msg="Volume %s does not exist!" % self.name) + def make_quadlet(self): results_update = create_quadlet_state(self.module, "volume") self.results.update(results_update) @@ -511,7 +557,7 @@ def main(): module = AnsibleModule( argument_spec=dict( state=dict(type='str', default="present", - choices=['present', 'absent', 'quadlet']), + choices=['present', 'absent', 'mounted', 'unmounted', 'quadlet']), name=dict(type='str', required=True), label=dict(type='dict', required=False), driver=dict(type='str', required=False), diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml index 023878349..0babf0395 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml @@ -162,10 +162,9 @@ command: 1h register: test14 -# We can't guess the default log path - name: Check info with default log opt path assert: - that: test14 is not changed + that: test14 is changed - name: Run container with all log-opts containers.podman.podman_container: @@ -238,8 +237,8 @@ that: - test15 is changed - test16 is not changed - - test17 is not changed - - test18 is not changed + - test17 is changed + - test18 is changed - test19 is changed - name: Run container with etc_hosts @@ -381,7 +380,7 @@ - name: Check info of second container with PID of container ID again assert: - that: test29 is not changed + that: test29 is changed - name: Remove dependent test container containers.podman.podman_container: diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_bool_list_dict.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_bool_list_dict.yml new file mode 100644 index 000000000..2d4771ceb --- /dev/null +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_bool_list_dict.yml @@ -0,0 +1,468 @@ +- name: Remove container + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + state: absent + +- name: Run container with boolean key-value type - 1 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultx1 + +- name: Run container with boolean key-value type - 2 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultx2 + +- name: Run container with boolean key-value type - 3 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: false + register: resultx3 + +- name: Run container with boolean key-value type - 4 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: false + register: resultx4 + +- name: Run container with boolean key-value type - 5 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: true + register: resultx5 + +- name: Run container with boolean key-value type - 6 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: true + register: resultx6 + +- name: Run container with boolean key-value type - 7 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: false + register: resultx7 + +- name: Run container with boolean key-value type - 8 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + # tls_verify: false + register: resultx8 + +- name: Run container with boolean key-value type - 9 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + tls_verify: true + register: resultx9 + +- name: Run container with boolean key-value type - 10 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + # tls_verify: true + register: resultx10 + +- name: Assert checks + assert: + that: + - resultx1.changed == true + - resultx2.changed == false + - resultx3.changed == true + - resultx4.changed == false + - resultx5.changed == true + - resultx6.changed == false + - resultx7.changed == true + - resultx8.changed == true + - resultx9.changed == true + - resultx10.changed == true + +- name: Remove container + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + state: absent + +- name: Run container with list type - 1 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - HOME + - TERM + - USER + register: resultq1 + +- name: Run container with list type - 2 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - HOME + - TERM + - USER + register: resultq2 + +- name: Run container with list type - 3 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - HOME + register: resultq3 + +- name: Run container with list type - 4 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - HOME + register: resultq4 + +- name: Run container with list type - 5 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultq5 + +- name: Run container with list type - 6 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultq6 + +- name: Run container with list type - 7 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - USER + register: resultq7 + +- name: Run container with list type - 8 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + unsetenv: + - USER + register: resultq8 + +- name: Run container with list type - 9 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultq9 + +- name: Assert checks + assert: + that: + - resultq1.changed == true + - resultq2.changed == false + - resultq3.changed == true + - resultq4.changed == false + - resultq5.changed == true + - resultq6.changed == false + - resultq7.changed == true + - resultq8.changed == false + - resultq9.changed == true + +- name: Remove container + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + state: absent + +- name: Run container with boolean trigger type - 1 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resulty1 + +- name: Run container with boolean trigger type - 2 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resulty2 + +- name: Run container with boolean trigger type - 3 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: false + register: resulty3 + +- name: Run container with boolean trigger type - 4 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: false + register: resulty4 + +- name: Run container with boolean trigger type - 5 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: true + register: resulty5 + +- name: Run container with boolean trigger type - 6 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: true + register: resulty6 + +- name: Run container with boolean trigger type - 7 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: false + register: resulty7 + +- name: Run container with boolean trigger type - 8 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + # no_healthcheck: false + register: resulty8 + +- name: Run container with boolean trigger type - 9 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + no_healthcheck: true + register: resulty9 + +- name: Run container with boolean trigger type - 10 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + # no_healthcheck: true + register: resulty10 + +- name: Assert checks + assert: + that: + - resulty1.changed == true + - resulty2.changed == false + - resulty3.changed == false + - resulty4.changed == false + - resulty5.changed == true + - resulty6.changed == false + - resulty7.changed == true + - resulty8.changed == false + - resulty9.changed == true + - resulty10.changed == true + + +- name: Remove container + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + state: absent + +- name: Run container with dict type - 1 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + max_size: 10m + tag: test + path: /var/log + register: resultv1 + +- name: Run container with dict type - 2 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + max_size: 10m + tag: test + path: /var/log + register: resultv2 + +- name: Run container with dict type - 3 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + max_size: 10m + register: resultv3 + +- name: Run container with dict type - 4 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + max_size: 10m + register: resultv4 + +- name: Run container with dict type - 5 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultv5 + +- name: Run container with dict type - 6 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultv6 + +- name: Run container with dict type - 7 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + tag: test + register: resultv7 + +- name: Run container with dict type - 8 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + log_opt: + tag: test + register: resultv8 + +- name: Run container with dict type - 9 + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "idempotency" + image: "{{ idem_image }}" + state: present + command: 1h + register: resultv9 + +- name: Assert checks + assert: + that: + - resultq1.changed == true + - resultq2.changed == false + - resultq3.changed == true + - resultq4.changed == false + - resultq5.changed == true + - resultq6.changed == false + - resultq7.changed == true + - resultq8.changed == false + - resultq9.changed == true diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml index 81b7baf06..29ad10c6d 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_ports.yml @@ -33,7 +33,7 @@ - "4444:4444/tcp" - "1212:5555" - "8888:19191/udp" - - "1900:1900/udp" + - "19000:19000/udp" - "127.0.0.1:7671:7676/udp" - "127.0.0.1:12122:8876/udp" - "127.0.0.1:13122:8871/tcp" @@ -41,6 +41,10 @@ - "127.0.0.2:43423:8872/tcp" - "127.0.0.3:43423:8872" - "0.0.0.0:15674:7846" + - 127.0.0.1:20000-20010:20000-20010/udp + - 0.0.0.0:20000-20010:20000-20010/tcp + - "10000-10010:10000-10010/udp" + - "[::1]:3001-3003:3001-3003" register: test2 - name: check test2 @@ -57,7 +61,7 @@ - "4444:4444/tcp" - "1212:5555" - "8888:19191/udp" - - "1900:1900/udp" + - "19000:19000/udp" - "127.0.0.1:7671:7676/udp" - "127.0.0.1:12122:8876/udp" - "127.0.0.1:13122:8871/tcp" @@ -65,6 +69,10 @@ - "127.0.0.2:43423:8872/tcp" - "127.0.0.3:43423:8872" - "0.0.0.0:15674:7846" + - 127.0.0.1:20000-20010:20000-20010/udp + - 0.0.0.0:20000-20010:20000-20010/tcp + - "10000-10010:10000-10010/udp" + - "[::1]:3001-3003:3001-3003" register: test3 - name: check test3 @@ -95,7 +103,7 @@ - name: check test5 assert: - that: test5 is changed + that: test5 is not changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -149,7 +157,7 @@ - name: check test9 assert: - that: test9 is not changed + that: test9 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -164,7 +172,7 @@ - name: check test9a assert: - that: test9a is not changed + that: test9a is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -213,7 +221,7 @@ - name: check test11 assert: - that: test11 is not changed + that: test11 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -226,7 +234,7 @@ - name: check test11a assert: - that: test11a is not changed + that: test11a is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml index 98586aece..b806120d1 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_stopsignal.yml @@ -34,7 +34,20 @@ - name: check test2 assert: - that: test2 is not changed + that: test2 is changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: "{{ idem_image }}" + name: idempotency + state: present + stop_signal: 9 + command: 1h + register: test2a + +- name: check test2a + assert: + that: test2a is not changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -46,7 +59,7 @@ - name: check test3 assert: - that: test3 is not changed + that: test3 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -122,7 +135,7 @@ - name: check test9 assert: - that: test9 is not changed + that: test9 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -184,7 +197,7 @@ - name: check test11 assert: - that: test11 is not changed + that: test11 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml index 6be03bb1a..9b82ae332 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_users.yml @@ -34,7 +34,7 @@ - name: check test2 assert: - that: test2 is not changed + that: test2 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -46,7 +46,7 @@ - name: check test3 assert: - that: test3 is not changed + that: test3 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -122,7 +122,7 @@ - name: check test9 assert: - that: test9 is not changed + that: test9 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml index 3fff4e34a..26e7040f8 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_volumes.yml @@ -126,7 +126,7 @@ - name: check test9 assert: - that: test9 is not changed + that: test9 is changed - name: Create volumes shell: | @@ -190,7 +190,7 @@ - name: check test13 assert: - that: test13 is not changed + that: test13 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -253,3 +253,99 @@ - name: check test17 assert: that: test17 is not changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + register: test18 + +- name: check test18 + assert: + that: test18 is changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + register: test19 + +- name: check test19 + assert: + that: test19 is not changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + - "type=bind,source=/var,destination=/var" + volumes: + - /opt:/data + - "local_volume2:/data2" + register: test20 + +- name: check test20 + assert: + that: test20 is changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + - "type=bind,source=/var,destination=/var" + volumes: + - /opt:/data + - "local_volume2:/data2" + register: test21 + +- name: check test21 + assert: + that: test21 is not changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + volumes: + - /opt:/data + register: test22 + +- name: check test22 + assert: + that: test22 is changed + +- containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: alpine + name: idempotency1 + state: present + command: sleep 1h + mounts: + - "type=bind,source=/tmp,destination=/tmp" + volumes: + - /opt:/data + register: test23 + +- name: check test23 + assert: + that: test23 is not changed diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml index ef1103188..f413090cc 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/idem_workdir.yml @@ -34,13 +34,14 @@ - name: check test2 assert: - that: test2 is not changed + that: test2 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" image: "{{ idem_image }}" name: idempotency state: present + workdir: /work command: 1h register: test3 @@ -122,7 +123,7 @@ - name: check test9 assert: - that: test9 is not changed + that: test9 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" @@ -184,7 +185,7 @@ - name: check test11 assert: - that: test11 is not changed + that: test11 is changed - containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/main.yml index 02b66d250..2d27906a5 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/main.yml @@ -45,6 +45,7 @@ - name: Test idempotency of systemd generation include_tasks: idem_systemd.yml + when: podman_version | int > 3 - name: Test idempotency of other settings include_tasks: idem_all.yml diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml index f41587367..0d9032754 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/root-podman.yml @@ -162,7 +162,7 @@ - name: Check that it is recreated assert: that: - - info7 is not changed + - info7 is changed - name: Run container with publishing ports and ipv6 containers.podman.podman_container: @@ -178,6 +178,7 @@ - "127.0.0.1:7671:7676/udp" - "127.0.0.3:43423:8872" - "[::1]:34523:35425" + - "40001-40010" register: info8 - name: Check that it is recreated @@ -199,6 +200,7 @@ - "127.0.0.1:7671:7676/udp" - "127.0.0.3:43423:8872" - "[::1]:34523:35425" + - "40001-40010" register: info9 - name: Check that it is recreated diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml index 3c16efac2..74c21ff4d 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml @@ -109,7 +109,7 @@ that: - info5 is changed - - when: podman_version < 5 + - when: podman_version | int < 5 name: Run container tasks with slirp4netns options before v5 block: - name: Run container with slirp4netns options @@ -161,7 +161,7 @@ - info8 is changed - - when: podman_version >= 5 + - when: podman_version | int >= 5 name: Run container tasks with pasta options for v5 and later block: - name: Run container with pasta options diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/idem_push.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/idem_push.yml new file mode 100644 index 000000000..064ce8fc4 --- /dev/null +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/idem_push.yml @@ -0,0 +1,534 @@ +--- +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + ignore_errors: true + register: img_result1 + +- name: Check outputs + assert: + that: + - img_result1 is failed + - "'Destination must be a full URL or path to a directory' in img_result1.msg" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + ignore_errors: true + register: img_result2 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result2.stderr" + - "'push quay.io/testing/testimage:latest quay.io/testing/testimage:latest' in img_result2.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage:draft + pull: false + push: true + ignore_errors: true + register: img_result2a + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result2a.stderr" + - "'push quay.io/testing/testimage:draft quay.io/testing/testimage:draft' in img_result2a.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: quay.io/testing/testimage + ignore_errors: true + register: img_result3 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result3.stderr" + - "'push quay.io/testing/testimage:latest quay.io/testing/testimage' in img_result3.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage:draft + pull: false + push: true + push_args: + dest: quay.io/testing/testimage + ignore_errors: true + register: img_result3a + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result3a.stderr" + - "'push quay.io/testing/testimage:draft quay.io/testing/testimage' in img_result3a.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage:draft + pull: false + push: true + push_args: + dest: quay.io/testing/testimage:nodraft + ignore_errors: true + register: img_result3b + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result3b.stderr" + - "'push quay.io/testing/testimage:draft quay.io/testing/testimage:nodraft' in img_result3b.actions" + +- containers.podman.podman_image: + name: testimage2 + tag: testtag + pull: false + push: true + push_args: + dest: quay.io/testing/testimage + ignore_errors: true + register: img_result4 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result4.stderr" + - "'push testimage2:testtag quay.io/testing/testimage' in img_result4.actions" + +- containers.podman.podman_image: + name: testimage2 + tag: testtag + pull: false + push: true + push_args: + dest: quay.io/testing + ignore_errors: true + register: img_result4a + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result4a.stderr" + - "'push testimage2:testtag quay.io/testing/testimage2:testtag' in img_result4a.actions" + +- containers.podman.podman_image: + name: testimage2:testtag + pull: false + push: true + push_args: + dest: quay.io/testing/ + ignore_errors: true + register: img_result4b + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result4b.stderr" + - "'push testimage2:testtag quay.io/testing/testimage2:testtag' in img_result4b.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: quay.io/testing/ + ignore_errors: true + register: img_result4c + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result4c.stderr" + - "'push testimage2:latest quay.io/testing/testimage2:latest' in img_result4c.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: /tmp/testimage-dir + transport: dir + ignore_errors: true + register: img_result5 + +- name: Check outputs + assert: + that: + - img_result5 is changed + - "'push testimage2:latest dir:/tmp/testimage-dir' in img_result5.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: dir:/tmp/testimage-dir1 + ignore_errors: true + register: img_result6 + +- name: Check outputs + assert: + that: + - img_result6 is changed + - "'push testimage2:latest dir:/tmp/testimage-dir1' in img_result6.actions" + +- name: Remove directories + file: + path: "{{ item }}" + state: absent + loop: + - /tmp/test-docker-arch + - /tmp/test-docker-arch1 + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: /tmp/test-docker-arch + transport: docker-archive + ignore_errors: true + register: img_result7 + +- name: Check outputs + assert: + that: + - img_result7 is changed + - "'push testimage2:latest docker-archive:/tmp/test-docker-arch' in img_result7.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: docker-archive:/tmp/test-docker-arch1 + ignore_errors: true + register: img_result8 + +- name: Check outputs + assert: + that: + - img_result8 is changed + - "'push testimage2:latest docker-archive:/tmp/test-docker-arch1' in img_result8.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: /tmp/test-oci-arch + transport: oci-archive + ignore_errors: true + register: img_result9 + +- name: Check outputs + assert: + that: + - img_result9 is changed + - "'push testimage2:latest oci-archive:/tmp/test-oci-arch' in img_result9.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: oci-archive:/tmp/test-oci-arch1 + ignore_errors: true + register: img_result10 + +- name: Check outputs + assert: + that: + - img_result10 is changed + - "'push testimage2:latest oci-archive:/tmp/test-oci-arch1' in img_result10.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: quay.io/testing/testimage1 + transport: docker + ignore_errors: true + register: img_result11 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result11.stderr" + - "'push testimage2:latest docker://quay.io/testing/testimage1' in img_result11.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: docker://quay.io/testing/testimage22 + ignore_errors: true + register: img_result12 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result12.stderr" + - "'push testimage2:latest docker://quay.io/testing/testimage22' in img_result12.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: dockerimage + transport: docker-daemon + ignore_errors: true + register: img_result13 + +- name: Check outputs + assert: + that: + - img_result13 is changed + - "'push testimage2:latest docker-daemon:dockerimage:latest' in img_result13.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: docker-daemon:dockerimage2 + ignore_errors: true + register: img_result14 + +- name: Check outputs + assert: + that: + - img_result14 is failure + - "'push testimage2:latest docker-daemon:dockerimage2' in img_result14.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: dockerimage:tagged1 + transport: docker-daemon + ignore_errors: true + register: img_result15 + +- name: Check outputs + assert: + that: + - img_result15 is success + - "'push testimage2:latest docker-daemon:dockerimage:tagged1' in img_result15.actions" + +- containers.podman.podman_image: + name: testimage2 + pull: false + push: true + push_args: + dest: docker-daemon:dockerimage:tagged + ignore_errors: true + register: img_result16 + +- name: Check outputs + assert: + that: + - img_result16 is success + - "'push testimage2:latest docker-daemon:dockerimage:tagged' in img_result16.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: /tmp/testimage-dir25 + transport: dir + ignore_errors: true + register: img_result17 + +- name: Check outputs + assert: + that: + - img_result17 is success + - "'push quay.io/testing/testimage:latest dir:/tmp/testimage-dir25' in img_result17.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: dir:/tmp/testimage-dir15 + ignore_errors: true + register: img_result18 + +- name: Check outputs + assert: + that: + - img_result18 is success + - "'push quay.io/testing/testimage:latest dir:/tmp/testimage-dir15' in img_result18.actions" + +- name: Remove directories for docker-archive + file: + path: "{{ item }}" + state: absent + loop: + - /tmp/test-docker-arch5 + - /tmp/test-docker-arch15 + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: /tmp/test-docker-arch5 + transport: docker-archive + ignore_errors: true + register: img_result19 + +- name: Check outputs + assert: + that: + - img_result19 is success + - "'push quay.io/testing/testimage:latest docker-archive:/tmp/test-docker-arch5' in img_result19.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: docker-archive:/tmp/test-docker-arch15 + ignore_errors: true + register: img_result20 + +- name: Check outputs + assert: + that: + - img_result20 is success + - "'push quay.io/testing/testimage:latest docker-archive:/tmp/test-docker-arch15' in img_result20.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: /tmp/test-oci-arch5 + transport: oci-archive + ignore_errors: true + register: img_result21 + +- name: Check outputs + assert: + that: + - img_result21 is success + - "'push quay.io/testing/testimage:latest oci-archive:/tmp/test-oci-arch5' in img_result21.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: oci-archive:/tmp/test-oci-arch15 + ignore_errors: true + register: img_result22 + +- name: Check outputs + assert: + that: + - img_result22 is success + - "'push quay.io/testing/testimage:latest oci-archive:/tmp/test-oci-arch15' in img_result22.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: quay.io/testing/testimage5 + transport: docker + ignore_errors: true + register: img_result23 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result23.stderr" + - "'push quay.io/testing/testimage:latest docker://quay.io/testing/testimage5' in img_result23.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: docker://quay.io/testing/testimage22 + ignore_errors: true + register: img_result24 + +- name: Check outputs + assert: + that: + - "'authentication required' in img_result24.stderr" + - "'push quay.io/testing/testimage:latest docker://quay.io/testing/testimage22' in img_result24.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: dockerimage5 + transport: docker-daemon + ignore_errors: true + register: img_result25 + +- name: Check outputs + assert: + that: + - img_result25 is success + - "'push quay.io/testing/testimage:latest docker-daemon:dockerimage5:latest' in img_result25.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: docker-daemon:dockerimage25 + ignore_errors: true + register: img_result26 + +- name: Check outputs + assert: + that: + - img_result26 is failed + - "'push quay.io/testing/testimage:latest docker-daemon:dockerimage25' in img_result26.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: dockerimage:tagged15 + transport: docker-daemon + ignore_errors: true + register: img_result27 + +- name: Check outputs + assert: + that: + - img_result27 is success + - "'push quay.io/testing/testimage:latest docker-daemon:dockerimage:tagged15' in img_result27.actions" + +- containers.podman.podman_image: + name: quay.io/testing/testimage + pull: false + push: true + push_args: + dest: docker-daemon:dockerimage:tagged5 + ignore_errors: true + register: img_result28 + +- name: Check outputs + assert: + that: + - img_result28 is success + - "'push quay.io/testing/testimage:latest docker-daemon:dockerimage:tagged5' in img_result28.actions" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/main.yml index 96133b9da..dca1ee53e 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_image/tasks/main.yml @@ -209,15 +209,34 @@ register: oci_build3 ignore_errors: true - - name: Build OCI image, point to location of Containerfile + - name: Build OCI image, point to location of Containerfile without path containers.podman.podman_image: executable: "{{ test_executable | default('podman') }}" name: testimage2 - path: /var/tmp/build/subdir + state: build build: file: /var/tmp/build/Dockerfile register: oci_build4 + - name: Build OCI image, point to location of Containerfile and path + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage3 + path: /var/tmp/build + build: + file: /var/tmp/build/Dockerfile + register: oci_build5 + + - name: Build OCI image with no Containerfile and path + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage5x + state: build + build: + format: oci + register: oci_build6 + ignore_errors: true + - name: Inspect first image containers.podman.podman_image_info: executable: "{{ test_executable | default('podman') }}" @@ -237,7 +256,9 @@ - oci_build2 is not changed - oci_build3 is not changed - oci_build3 is failed - - oci_build4 is changed + - oci_build4 is success + - oci_build5 is success + - oci_build6 is failed - "'localhost/testimage:latest' in testimage_info.images[0]['RepoTags'][0]" - "'localhost/testimage2:latest' in testimage2_info.images[0]['RepoTags'][0]" - "'no such file or directory' in oci_build3.msg" @@ -329,6 +350,72 @@ - item.Architecture == "arm" loop: "{{ imageinfo_arch.images }}" + - name: Build Docker image + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: quay.io/testing/testimage + path: /var/tmp/build + register: build_image1 + + - name: Build Docker image - 2 + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: quay.io/testing/testimage:draft + path: /var/tmp/build + + - name: Build Docker image + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage2:testtag + path: /var/tmp/build + register: build_image2 + + - name: Build image from a given Containerfile + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage2:customfile + path: "{{ playbook_dir }}" + build: + container_file: |- + FROM quay.io/coreos/alpine-sh + RUN echo "Hello World" > /tmp/hello.txt + register: build_custom1 + + - name: Build image from a given Containerfile w/o path + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage2:customfile2 + state: build + build: + container_file: |- + FROM quay.io/coreos/alpine-sh + RUN echo "Hello2 World" > /tmp/hello2.txt + force: true + register: build_custom2 + + - name: Build image from a given Containerfile and file (fail) + containers.podman.podman_image: + executable: "{{ test_executable | default('podman') }}" + name: testimage2:failme + state: build + build: + container_file: |- + FROM quay.io/coreos/alpine-sh + RUN echo "Hello2 World" > /tmp/hello2.txt + file: /var/tmp/build/Dockerfile + force: true + register: fail_custom_image + ignore_errors: true + + - name: Check if image was built properly + assert: + that: + - build_custom1 is changed + - build_custom2 is changed + - fail_custom_image is failed + + - include_tasks: idem_push.yml + - name: Create a Quadlet for image with filename containers.podman.podman_image: executable: "{{ test_executable | default('podman') }}" @@ -469,4 +556,8 @@ - quay.io/coreos/etcd:v3.3.11 - localhost/testimage - localhost/testimage2 + - localhost/testimage2:testtag + - localhost/testimage3 - localhost/dockerimage + - quay.io/testing/testimage + - quay.io/testing/testimage:draft diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_network/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_network/tasks/main.yml index 272ac6b43..4bfb4b0c1 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_network/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_network/tasks/main.yml @@ -328,20 +328,20 @@ that: - info16 is not changed - - name: Create network with IPv6 'exploded' + - name: Create network with IPv6 'exploded' - dual stack containers.podman.podman_network: executable: "{{ test_executable | default('podman') }}" name: "{{ network_name }}" ipv6: true - subnet: fd4f:552c:830f:0000::/64 + subnet: fd4f:552c:830f::/64 state: present - - name: Create network with IPv6 'exploded' again + - name: Create network with IPv6 'exploded' - dual stack again containers.podman.podman_network: executable: "{{ test_executable | default('podman') }}" name: "{{ network_name }}" ipv6: true - subnet: fd4f:552c:830f:0000::/64 + subnet: fd4f:552c:830f::/64 state: present register: info17 @@ -350,6 +350,358 @@ that: - info17 is not changed + - name: Create network with DNS + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + dns: + - 1.1.1.1 + - 2.2.2.2 + register: resultn2 + + - name: Check output - Create network with DNS + assert: + that: + - resultn2 is changed + + - name: Create network with DNS again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + dns: + - 1.1.1.1 + - 2.2.2.2 + register: resultn3 + + - name: Check output - Create network with DNS again + assert: + that: + - resultn3 is not changed + + - name: Create network with DNS - different + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + dns: + - 1.1.1.1 + register: resultn4 + + - name: Check output - Create network with DNS - different + assert: + that: + - resultn4 is changed + + - name: Create network with routes + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + route: + - 1.1.1.1/32,2.2.2.2 + - 3.3.3.0/24,4.4.4.4,240 + - 7.7.0.0/16,9.9.9.9,100 + register: resultn5 + + - name: Check output - Create network with routes + assert: + that: + - resultn5 is changed + + - name: Create network with routes again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + route: + - 1.1.1.1/32,2.2.2.2 + - 3.3.3.0/24,4.4.4.4,240 + - 7.7.0.0/16,9.9.9.9,100 + register: resultn6 + + - name: Check output - Create network with routes again + assert: + that: + - resultn6 is not changed + + - name: Create network with routes - different + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + route: + - 1.1.1.1/32,2.2.2.2 + - 3.3.3.0/24,4.4.4.4,280 + register: resultn7 + + - name: Check output - Create network with routes - different + assert: + that: + - resultn7 is changed + + - name: Create network with IPAM driver none + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + ipam_driver: none + register: resultn8 + + - name: Check output - Create network with IPAM driver none + assert: + that: + - resultn8 is changed + + - name: Create network with IPAM driver none again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + ipam_driver: none + register: resultn9 + + - name: Check output - Create network with IPAM driver none again + assert: + that: + - resultn9 is not changed + + - name: Create network without IPAM driver + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + register: resultn10 + + - name: Check output - Create network without IPAM driver + assert: + that: + - resultn10 is not changed + + - name: Create network with IPAM driver host-local + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: present + ipam_driver: "host-local" + register: resultn11 + + - name: Check output - Create network with IPAM driver host-local + assert: + that: + - resultn11 is changed + + - name: Delete network + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + state: absent + + - name: Create a network with multiple subnets + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.44 + ip_range: 10.44.44.128/30 + - subnet: 10.22.22.0/24 + gateway: 10.22.22.244 + - subnet: 10.11.1.0/24 + gateway: 10.11.1.33 + + - name: Create a network with multiple subnets again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.44 + ip_range: 10.44.44.128/30 + - subnet: 10.22.22.0/24 + gateway: 10.22.22.244 + - subnet: 10.11.1.0/24 + gateway: 10.11.1.33 + register: net2conf + + - name: Check output - Create a network with multiple subnets again + assert: + that: + - net2conf is not changed + + - name: Create a network with multiple subnets - different + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.44 + ip_range: 10.44.44.128/30 + - subnet: 10.11.12.0/24 + gateway: 10.11.12.33 + register: net2conf1 + + - name: Check output - Create a network with multiple subnets - different + assert: + that: + - net2conf1 is changed + + - name: Create a network with multiple subnets - different gateway + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.41 + ip_range: 10.44.44.128/30 + - subnet: 10.11.12.0/24 + gateway: 10.11.12.33 + register: net2conf2 + + - name: Check output - Create a network with multiple subnets - different gateway + assert: + that: + - net2conf2 is changed + + - name: Create a network with multiple subnets again - same + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.41 + ip_range: 10.44.44.128/30 + - subnet: 10.11.12.0/24 + gateway: 10.11.12.33 + register: net2conf3 + + - name: Check output - Create a network with multiple subnets again - same + assert: + that: + - net2conf3 is not changed + + - name: Create a network with single subnet + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + subnet: 10.44.44.0/24 + gateway: 10.44.44.41 + register: net2conf4 + + - name: Check output - Create a network with single subnet + assert: + that: + - net2conf4 is changed + + - name: Create a network with single subnet - again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + subnet: 10.44.44.0/24 + gateway: 10.44.44.41 + register: net2conf5 + + - name: Check output - Create a network with single subnet - again + assert: + that: + - net2conf5 is not changed + + - name: Create a network with single subnet and changed gateway + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + subnet: 10.44.44.0/24 + gateway: 10.44.44.42 + register: net2conf6 + + - name: Check output - Create a network with single subnet and changed gateway + assert: + that: + - net2conf6 is changed + + - name: Create a network with single subnet - without gateway + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + subnet: 10.44.44.0/24 + register: net2conf7 + + - name: Check output - Create a network with single subnet - without gateway + assert: + that: + - net2conf7 is not changed + + - name: Create a network with multiple subnets + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.44 + ip_range: 10.44.44.128/30 + - subnet: 10.22.22.0/24 + gateway: 10.22.22.244 + - subnet: 10.17.1.0/24 + gateway: 10.17.1.33 + + - name: Create a network with multiple subnets again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 10.44.44.0/24 + gateway: 10.44.44.44 + ip_range: 10.44.44.128/30 + - subnet: 10.22.22.0/24 + gateway: 10.22.22.244 + - subnet: 10.17.1.0/24 + gateway: 10.17.1.33 + register: net2conf + + - name: Check output - Create a network with multiple subnets again + assert: + that: + - net2conf is not changed + + - name: Create a IPv6 network with multiple subnets + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 2002:db8:1::/64 + gateway: 2002:db8:1::12 + ip_range: 2002:db8:1::128/68 + - subnet: 2004:db9:1::/64 + gateway: 2004:db9:1::15 + - subnet: 10.15.11.0/24 + gateway: 10.15.11.124 + register: net6conf + + - name: Check output - Create a network with multiple subnets again + assert: + that: + - net6conf is changed + + - name: Create a IPv6 network with multiple subnets again + containers.podman.podman_network: + executable: "{{ test_executable | default('podman') }}" + name: "{{ network_name }}" + net_config: + - subnet: 2002:db8:1::/64 + gateway: 2002:db8:1::12 + ip_range: 2002:db8:1::128/68 + - subnet: 2004:db9:1::/64 + gateway: 2004:db9:1::15 + - subnet: 10.15.11.0/24 + gateway: 10.15.11.124 + register: net6conf1 + + - name: Check output - Create a network with multiple subnets again + assert: + that: + - net6conf1 is not changed + - name: Create a Quadlet for network with filename containers.podman.podman_network: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/idempotency.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/idempotency.yml new file mode 100644 index 000000000..26c3bd8f9 --- /dev/null +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/idempotency.yml @@ -0,0 +1,363 @@ +- name: Test podman pod idempotency + block: + + - name: Delete all pods leftovers from tests + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: "{{ item }}" + state: absent + loop: + - "podidem1" + - "podidem2" + + - name: Delete all container leftovers from tests + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "{{ item }}" + state: absent + loop: + - "container1" + - "container2" + + - name: Create pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: created + register: podidem1_info + + - name: Check info + assert: + that: + - podidem1_info is changed + - >- + (podidem1_info.pod['State']['status'] is defined and + podidem1_info.pod['State']['status'] == 'Created') or + (podidem1_info.pod['State']['status'] is not defined and + podidem1_info.pod['State'] == 'Created') + + - name: Create pod again + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: created + register: podidem1_info2 + + - name: Check info + assert: + that: + - podidem1_info2 is not changed + + - name: Start pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: started + register: podidem1_info3 + + - name: Check info + assert: + that: + - podidem1_info3 is changed + - >- + (podidem1_info3.pod['State']['status'] is defined and + podidem1_info3.pod['State']['status'] == 'Running') or + (podidem1_info3.pod['State']['status'] is not defined and + podidem1_info3.pod['State'] == 'Running') + + - name: Start pod again + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: started + register: podidem1_info4 + + - name: Check info + assert: + that: + - podidem1_info4 is not changed + + - name: Stop pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: stopped + register: podidem1_info5 + + - name: Check info + assert: + that: + - podidem1_info5 is changed + + - name: Stop pod again + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: stopped + register: podidem1_info6 + + - name: Check info + assert: + that: + - podidem1_info6 is not changed + + - name: Create stopped pod again + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem1 + state: created + register: podidem1_info7 + + - name: Check info + assert: + that: + - podidem1_info7 is not changed + + - name: Create pod with multiple options and containers + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: created + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.1 + volumes: + - /tmp:/tmp/:ro + - /var/run/://var/run + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: podidem2_info + + - name: Check info + assert: + that: + - podidem2_info is changed + + - name: Create same pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: created + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.1 + volumes: + - /tmp:/tmp/:ro + - /var/run/://var/run + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: podidem2_info2 + + - name: Check info + assert: + that: + - podidem2_info2 is not changed + + - name: Change the pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: created + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.2 + volumes: + - /tmp:/tmp/:ro + - /var/run/://var/run + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: podidem2_info3 + + - name: Check info + assert: + that: + - podidem2_info3 is changed + + - name: Start the pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: started + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.2 + volumes: + - /tmp:/tmp/:ro + - /var/run/://var/run + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + + - name: Configure and start the pod again + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: started + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.2 + volumes: + - /tmp:/tmp/:ro + - /var/run/://var/run + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: podidem2_info4 + + - name: Check info + assert: + that: + - podidem2_info4 is not changed + + - name: Remove pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: absent + + - name: Create a pod with parameters - created + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: created + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.2 + volumes: + - /tmp:/tmp/:ro + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: pod1_set + + - name: Create containers + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "{{ item }}" + state: created + pod: podidem2 + image: alpine + command: sleep 1h + loop: + - "container1" + - "container2" + + - name: Start pod + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: podidem2 + state: started + infra: true + network: host + share: net + userns: auto + security_opt: + - seccomp=unconfined + - apparmor=unconfined + hostname: mypod + dns: + - 1.1.1.2 + volumes: + - /tmp:/tmp/:ro + label: + key: cval + otherkey: kddkdk + somekey: someval + add_host: + - "google:5.5.5.5" + register: pod2_set + + - name: Check info for pod creation + assert: + that: + - pod1_set is changed + - pod2_set is changed + - pod1_set.pod['State'] == 'Created' + - pod1_set.pod['Containers'][0]['State'] == 'created' + - pod2_set.pod['State'] == 'Running' + - pod2_set.pod['Containers'][0]['State'] == 'running' + - pod2_set.pod['Containers'][1]['State'] == 'running' + - pod2_set.pod['Containers'][2]['State'] == 'running' + + always: + + - name: Delete all pods leftovers from tests + containers.podman.podman_pod: + executable: "{{ test_executable | default('podman') }}" + name: "{{ item }}" + state: absent + loop: + - "podidem1" + - "podidem1" + + - name: Delete all container leftovers from tests + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + name: "{{ item }}" + state: absent + loop: + - "container1" + - "container2" diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/main.yml index cb455aa23..c148f9a99 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/main.yml @@ -1010,6 +1010,8 @@ subuidname: username1 userns: auto publish: 8000:8001 + sysctl: + "net.ipv4.ip_forward": 1 add_host: - host1 volume: @@ -1052,6 +1054,7 @@ - "PodmanArgs=--subuidname username1" - "PodmanArgs=--userns auto" - "PodmanArgs=--add-host host1" + - "PodmanArgs=--sysctl net.ipv4.ip_forward=1" - "Label=somelabel=labelvalue" - "WantedBy=default.target" loop_control: @@ -1075,6 +1078,8 @@ subuidname: username1 userns: auto publish: 8000:8001 + sysctl: + "net.ipv4.ip_forward": 1 add_host: - host1 volume: @@ -1103,6 +1108,8 @@ subuidname: username1 userns: auto publish: 8000:8001 + sysctl: + "net.ipv4.ip_forward": 1 add_host: - host1 volume: @@ -1146,6 +1153,9 @@ - "container1" - "container2" +- name: Test idempotency rootless pods + include_tasks: idempotency.yml + - name: Test idempotency for root pods include_tasks: root-pod.yml vars: diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/resource-limit.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/resource-limit.yml index 8727d6e50..83b673af1 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/resource-limit.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/resource-limit.yml @@ -8,6 +8,7 @@ cpuset_mems: '0-1' cpu_shares: 1024 device_write_bps: ['/dev/zero:1048576'] + shm_size: 1G - name: Create pod for limiting resources containers.podman.podman_pod: @@ -18,6 +19,7 @@ cpuset_mems: "{{ limit.cpuset_mems }}" cpu_shares: "{{ limit.cpu_shares }}" device_write_bps: "{{ limit.device_write_bps }}" + shm_size: "{{ limit.shm_size }}" - name: Get information on pod for limiting resources containers.podman.podman_pod_info: diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/root-pod.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/root-pod.yml index 968ec2cf3..557d0854f 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/root-pod.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_pod/tasks/root-pod.yml @@ -132,6 +132,7 @@ - "127.0.0.2:7671:7676/udp" - "127.0.0.1:13122:8871/tcp" - "127.0.0.1:43423:8872" + - "0.0.0.0:44444:44445" - "[::1]:8743:8745" register: pod8_info @@ -152,6 +153,7 @@ - "127.0.0.2:7671:7676/udp" - "127.0.0.1:13122:8871/tcp" - "127.0.0.1:43423:8872" + - "0.0.0.0:44444:44445" - "[::1]:8743:8745" register: pod9_info diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_search/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_search/tasks/main.yml new file mode 100644 index 000000000..66c5ebda0 --- /dev/null +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_search/tasks/main.yml @@ -0,0 +1,50 @@ +- name: Test podman_search + block: + + - name: Search for an invalid image + containers.podman.podman_search: + term: invalidtermnope + executable: "{{ test_executable | default('podman') }}" + register: info_0 + + - name: Check results for no matching images + assert: + that: + - info_0.images | length == 0 + + - name: Search for matching images + containers.podman.podman_search: + term: etcd + executable: "{{ test_executable | default('podman') }}" + register: info_1 + + - name: Check results for matching images + assert: + that: + - info_1.images | length > 0 + + - name: Search for a specific image + containers.podman.podman_search: + term: registry.access.redhat.com/rhel7/rsyslog + executable: "{{ test_executable | default('podman') }}" + register: info_2 + + - name: Check result for matching image + assert: + that: + - info_2.images | length == 1 + - info_2.images[0].Index == "registry.access.redhat.com" + - info_2.images[0].Name == "registry.access.redhat.com/rhel7/rsyslog" + + - name: Search for specific image tags + containers.podman.podman_search: + term: registry.access.redhat.com/rhel7/rsyslog + list_tags: true + executable: "{{ test_executable | default('podman') }}" + register: info_3 + + - name: Check result for image tags + assert: + that: + - info_3.images | length == 1 + - info_3.images[0].Tags | length > 0 diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_secret/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_secret/tasks/main.yml index 66f827df5..c47ebb4bf 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_secret/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_secret/tasks/main.yml @@ -17,7 +17,10 @@ containers.podman.podman_secret: executable: "{{ test_executable | default('podman') }}" state: absent - name: mysecret + name: "{{ item }}" + loop: + - mysecret + - mysecret2 - name: Create secret containers.podman.podman_secret: @@ -283,7 +286,158 @@ containers.podman.podman_secret: executable: "{{ test_executable | default('podman') }}" state: absent - name: mysecret + name: "{{ item }}" + loop: + - mysecret + - mysecret2 + + - name: Create secret if not exists and skip existing + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret2 + data: secret content + state: present + skip_existing: true + register: secretskip1 + + - name: Create secret if not exists and skip existing - again + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret2 + data: secret content + state: present + skip_existing: true + register: secretskip2 + + - name: Check secret + containers.podman.podman_secret_info: + executable: "{{ test_executable | default('podman') }}" + name: mysecret2 + register: secret_info + + - name: Check outputs + assert: + that: + - secretskip1 is changed + - secretskip2 is not changed + - secret_info is success + - secret_info.secrets | length > 0 + + - name: Remove secret + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + state: absent + name: mysecret2 + + + - when: podman_version_gt470 + block: + + - name: Create a file with secret data + copy: + content: "secret content 1" + dest: ~/mysecret-1 + + - name: Create secret from file + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret2 + path: ~/mysecret-1 + state: present + register: secret1 + + - name: Create secret again + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret2 + path: ~/mysecret-1 + state: present + register: secret2 + + - name: Check outputs + assert: + that: + - secret1 is changed + - secret2 is not changed + + - name: Create another secret in other file + copy: + content: "secret content 2" + dest: ~/mysecret-2 + + - name: Create secret from other file + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret3 + path: ~/mysecret-2 + state: present + debug: true + register: secret3 + + - name: Check outputs + assert: + that: + - secret3 is changed + + - name: Create a secret from non existing file + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret4 + path: ~/mysecret-3 + state: present + debug: true + register: secret4 + ignore_errors: true + + - name: Check outputs + assert: + that: + - secret4 is failed + + - name: Create a secret from non-existing environment variable + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret5 + env: NON_EXISTING_ENV + state: present + register: secret5 + ignore_errors: true + + - name: Check outputs + assert: + that: + - secret5 is failed + - "'Environment variable NON_EXISTING_ENV is not set' in secret5.msg" + + - name: Create a secret from existing environment variable + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + name: mysecret5 + env: EXISTING_ENV + state: present + environment: + EXISTING_ENV: "secret env content" + register: secret6 + + - name: Show secret6 + containers.podman.podman_secret_info: + executable: "{{ test_executable | default('podman') }}" + name: mysecret5 + showsecret: true + register: secret6_info + + - name: Check outputs + assert: + that: + - secret6 is changed + - secret6_info is success + - secret6_info.secrets.0.SecretData == "secret env content" + + - name: Remove secret + containers.podman.podman_secret: + executable: "{{ test_executable | default('podman') }}" + state: absent + name: mysecret5 always: - name: Remove container that uses secret diff --git a/ansible_collections/containers/podman/tests/integration/targets/podman_volume/tasks/main.yml b/ansible_collections/containers/podman/tests/integration/targets/podman_volume/tasks/main.yml index 9d43f3f1c..0b52fbfc8 100644 --- a/ansible_collections/containers/podman/tests/integration/targets/podman_volume/tasks/main.yml +++ b/ansible_collections/containers/podman/tests/integration/targets/podman_volume/tasks/main.yml @@ -161,6 +161,79 @@ - info10 is failed - delete.volume == {} + - name: Mount non existing volume + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: nonexistent + state: mounted + register: mount1 + + - name: Check results + assert: + that: + - mount1 is success + - "'mount_point' in mount1" + + - name: Create volume for mount + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: mountme + state: present + + - name: Mount existing volume + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: mountme + state: mounted + register: mount2 + + - name: Check results + assert: + that: + - mount2 is success + - "'mount_point' in mount2" + + - name: Unmount volume + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: mountme + state: unmounted + register: unmount + + - name: Check results + assert: + that: + - unmount is success + - "'mount_point' not in unmount" + + - name: Mount as root + become: true + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: rootmount + state: mounted + register: mount3 + + - name: Check results + assert: + that: + - mount3 is success + - "'mount_point' in mount3" + + - name: Unmount as root + become: true + containers.podman.podman_volume: + executable: "{{ test_executable | default('podman') }}" + name: rootmount + state: unmounted + register: unmount2 + + - name: Check results + assert: + that: + - unmount2 is success + - "'mount_point' not in unmount2" + - name: Create a Quadlet for volume with filename containers.podman.podman_volume: executable: "{{ test_executable | default('podman') }}" diff --git a/ansible_collections/containers/podman/tests/unit/plugins/modules/test_container_lib.py b/ansible_collections/containers/podman/tests/unit/plugins/modules/test_container_lib.py index 20dd4e66c..ea336419a 100644 --- a/ansible_collections/containers/podman/tests/unit/plugins/modules/test_container_lib.py +++ b/ansible_collections/containers/podman/tests/unit/plugins/modules/test_container_lib.py @@ -66,7 +66,15 @@ def test_container_add_params(test_input, expected): [ None, # module {"conmon_pidfile": "bbb"}, # module params - {"conmonpidfile": "ccc"}, # container info + {"conmonpidfile": "ccc", + "config": { + "createcommand": [ + "podman", + "create", + "--conmon-pidfile=ccc", + "testcont", + ]} + }, # container info {}, # image info "4.1.1", # podman version ], @@ -76,7 +84,67 @@ def test_container_add_params(test_input, expected): [ None, # module {"conmon_pidfile": None}, # module params - {"conmonpidfile": "ccc"}, # container info + {"conmonpidfile": "ccc", + "config": { + "createcommand": [ + "podman", + "create", + "--conmon-pidfile=ccc", + "testcont", + ]} + }, # container info + {}, # image info + "4.1.1", # podman version + ], + True, + ), + ( + [ + None, # module + {"conmon_pidfile": None}, # module params + {"conmonpidfile": None, + "config": { + "createcommand": [ + "podman", + "create", + "testcont", + ]} + }, # container info + {}, # image info + "4.1.1", # podman version + ], + False, + ), + ( + [ + None, # module + {"conmon_pidfile": 'aaa'}, # module params + {"conmonpidfile": None, + "config": { + "createcommand": [ + "podman", + "create", + "testcont", + ]} + }, # container info + {}, # image info + "4.1.1", # podman version + ], + True, + ), + ( + [ + None, # module + {"conmon_pidfile": 'aaa'}, # module params + {"conmonpidfile": 'aaa', + "config": { + "createcommand": [ + "podman", + "create", + "--conmon-pidfile=aaa", + "testcont", + ]} + }, # container info {}, # image info "4.1.1", # podman version ], |