We leverage pipx to ensure that all programs and librarys we depend on can be installed globally and isolated with venvs out of the box. It's also supported by MacOS, Linux, and Windows.
brew install pipxapt install pipxpipx install ansible-core pipx inject ansible-core psutil netaddr pytz prometheus-clientpipx install ansible-lintpipx install --include-deps ansible-signpipx install --include-deps moleculepipx ensurepathYou can either log out and log back in to your shell or run the following command to refresh your PATH
source ~/.bashrc or source ~/.zshrcOn the DeEEP Device - the main Ansible Controller is the Device itself which in turn can manage the VM's (via Incus). Each VM is also an independent Ansible Controller for itself. This setup requires every role to be localhost first when developed. This isn't the normal way Ansible is meant to be used (push model) so there are some gotchas and things we do that are slightly out of the norm. Being localhost first however provides the VMs the ability to configure themselves when necessary. It's also important to note that if it works via localhost it will always work being pushed (not always the case in reverse).
[!NOTE] For testing, we skip the Incus layer. Meaning the Ansible Controller for tests is your local machine (acting like the Device). Pushing directly to the VM running locally (managed by Orbstack, multipass, KVM, or LXD). This is meant to simplify the testing process. Especially since MacOS support for intel based CPU architecture is not well supported.
As such, depending on your development environment pick the most convenient virtualization software. Usually based on OS and CPU
orbstack - docs
brew install orbstackmultipass - docs
brew install --cask multipasssnap install multipassnot well tested, tread carefully
UTM - docs
brew install --cask utm