chasinglogic.podman
Ansible Role for Podman
Manage services and containers with Podman.
Usage
This role will install Podman according to the Podman documentation and do any other setup needed to make it work on supported platforms.
Important Note: For Ubuntu and Debian systems, it will run an apt upgrade after adding the repository. This upgrade will only happen if the repository is newly added or changed, and will not occur in subsequent runs.
Additionally, it can set up and configure Podman containers as SystemD services.
Example Playbook
- hosts: all
  roles:
    - role: podman
Automatic Service Deployment
Podman containers intended to run as services are generally similar. Therefore, this role includes a variable to deploy and configure containers as SystemD services. More complex setups, like configuring multiple containers as a pod, are not yet supported. To use this feature, define a variable podman_services, which is a list of configurations structured as follows:
podman_services:
  ## Podman Variables
  - image_name: nginx                      # Required: The image name to download
    image_tag: mainline                    # Optional: The tag/version to download, defaults to 'latest'
    description: Web host                   # Optional: Description for the SystemD service file
    publish:                               # Optional: List of ports to publish (host-port:container-port)
      - '80:80'
    network: somenetwork                   # Optional: Network name, created if it doesn't exist
    volumes:                               # Optional: List of volumes to mount
      - '/tmp:/usr/share/nginx/html:ro'
    hostname: chasinglogic.io               # Optional: Define a hostname for the container
    secrets:                               # Optional: List of secrets to mount (name required)
      - name: secret
        type: mount
        target: /run/secrets/secret
        uid: 0
        gid: 0
        mode: 0
    env_vars:                              # Optional: List of environment variables to add
      - SOME_VAR=SOME_VALUE
    flags:                                  # Optional: Arbitrary arguments to add
      - '--cap-add=NET_ADMIN'
    ## SystemD Variables
    restart: always                         # Optional: Restart policy for this service, default is always
    restart_sec: 30                        # Optional: Time to wait between restarts in seconds, default is 30
    service_name: nginx                     # Optional: Name for the SystemD service
    after:                                  # Optional: Services this SystemD service must start after
      - network.target
    timeout_start_sec: 5m                  # Optional: Timeout for starting the service, default is 5 minutes
    install:                                # Optional: Install section for the SystemD service
      wanted_by:
        - multi-user.target
    user: root                              # Optional: User for the service file, defaults to root
    group: root                             # Optional: Group for the service file, defaults to root
Networking
Currently, Ansible does not have a module for Podman networking like it does for Docker. If you're using the network option, ensure the network exists before this role runs. Future updates may add Podman networking support to Ansible.
Development
For development, it’s best to use the following commands:
make converge verify
License
ansible-galaxy install chasinglogic.podman