Examples
Using Ansible runtime
"""Sample use of Runtime class."""
import pytest
from ansible_compat.runtime import Runtime
@pytest.mark.skip(reason="external connectivity is disabled during the build process")
def test_runtime_example() -> None:
"""Test basic functionality of Runtime class."""
# instantiate the runtime using isolated mode, so installing new
# roles/collections do not pollute the default setup.
runtime = Runtime(isolated=True, max_retries=3)
# Print Ansible core version
print(runtime.version) # 2.9.10 (Version object)
# Get configuration info from runtime
print(runtime.config.collections_path)
# Detect if current project is a collection and install its requirements
runtime.prepare_environment(install_local=True) # will retry 3 times if needed
# Install a new collection (will retry 3 times if needed)
runtime.install_collection("containers.podman")
# Execute a command
result = runtime.exec(["ansible-doc", "--list"])
assert result.returncode == 0
Access to Ansible configuration
As you may not want to parse ansible-config dump
yourself, you
can make use of a simple python class that facilitates access to
it, using python data types.
"""Sample usage of AnsibleConfig."""
from ansible_compat.config import AnsibleConfig
def test_example_config() -> None:
"""Test basic functionality of AnsibleConfig."""
cfg = AnsibleConfig()
assert isinstance(cfg.ACTION_WARNINGS, bool)
# you can also use lowercase:
assert isinstance(cfg.action_warnings, bool)
# you can also use it as dictionary
assert cfg['action_warnings'] == cfg.action_warnings