docker_systemd_service/README.md
Bertrand Lanson 8c9bdfbea5
All checks were successful
development / Check commit compliance (push) Successful in 5s
test / Retrieve Credentials (pull_request) Successful in 1s
pull-requests-open / Check commit compliance (pull_request) Successful in 5s
test / end_to_end_role (default, debian11) (pull_request) Successful in 39s
test / end_to_end_role (default, debian12) (pull_request) Successful in 38s
test / end_to_end_role (default, ubuntu2004) (pull_request) Successful in 40s
test / end_to_end_role (default, ubuntu2204) (pull_request) Successful in 39s
test / end_to_end_role (default, ubuntu2404) (pull_request) Successful in 39s
test / end_to_end_role (with_custom_flags, debian11) (pull_request) Successful in 38s
test / end_to_end_role (with_custom_flags, debian12) (pull_request) Successful in 39s
test / end_to_end_role (with_custom_flags, ubuntu2004) (pull_request) Successful in 39s
test / end_to_end_role (with_custom_flags, ubuntu2204) (pull_request) Successful in 39s
test / end_to_end_role (with_custom_flags, ubuntu2404) (pull_request) Successful in 40s
feat: enable customization of unit options in systemd file
This also adjusts the unit.j2 template accordingly, as well as update documentation for the role.

It also updates tests to cover more scenarios
2024-11-09 17:03:46 +01:00

3.1 KiB

Docker systemd service

This role lets you configure a docker container and run it as a systemd service on debian-based distributions. This role is heavily sourced from mhutter.docker-systemd-service, but aims at providing some of the missing features of said role.

Requirements

This roles assumes you have docker installed on the target host. You can use ednz_cloud.install_docker to do so.

Role Variables

Service configuration

docker_systemd_service_container_name: "My-Service"

The name that will be assigned to the container.

docker_systemd_service_image: # by default, not defined

The image (and optionally tag) to use for the service.

docker_systemd_service_start: true

Indicates whether the service should start after installation. Defaults to true.

docker_systemd_service_systemd_unit_options: {}

Extra options to add to the [Unit] section of the systemd unit file. Map of strings.

docker_systemd_service_systemd_service_options: {}

Extra options to add to the [Service] section of the systemd unit file. Map of strings.

docker_systemd_service_name: "{{ docker_systemd_service_container_name }}_container"

The name of the systemd service to register.

Container configuration

docker_systemd_service_container_env: {}

A list of key/value pairs, that will be written to the environment file for the container.

docker_systemd_service_container_pull_image: true

Whether or not the role should pull the image during its run, prior to starting the service.

docker_systemd_service_container_pull_force_source: true

If docker_systemd_service_container_pull_image: true, whether the pull you be executed at every run. See docker_image.force_source

docker_systemd_service_flags: []

This variable lets you pass whatever flags you need to the docker run command. It is a list, to which you can add multiple types of flags:

  •  - key: value
     # will pass the flag --key "value" to the container.
     Example:
       - network: host
    
  •  - simple_key
     # will pass the flag --simple_key to the container.
     Example:
       - privileged
    
  •  - key:
         - value1
         - value2
     # will pass the flags --key "value1" --key "value2" to the container.
     Example:
       - volume:
           - /path/on/host:/path/on/container
           - /var/run/docker.sock:/var/run/docker.sock:ro
    
    

Dependencies

None.

Example Playbook

# calling the role inside a playbook with either the default or group_vars/host_vars
- hosts: servers
  roles:
    - ednz_cloud.docker_systemd_service

License

MIT / BSD

Author Information

This role was created by Bertrand Lanson in 2023.