# docker-containers role

This is a ansible-role for dealing with the containers from **c3infodesk**.

## Requirements
- To have [ansible](https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html) installed at your system.
- Set your **remote_user** configuration at the **ansible.cfg** file.
- Set your **inventories/host_vars/<TARGET_NAME>** file.

## Role Variables
Here are the variables setted:

- ### From: inventories/host_vars/<TARGET_NAME>
  Here are the variables that you should be changing for your own deployment.
  - #### CUPS
    Here you can set the variables if you want to **disable** and/or **mask** the CUPS service at the target.
    - **c3infodesk_printer_host_cups_disable**: DEFAULT=<NOT_SETTED>
    - **c3infodesk_printer_host_cups_mask**: DEFAULT=<NOT_SETTED>
  - #### COMPOSE
    Here you can set the variables if you want to set the **docker compose command** to up/stop/restart/down
    - **c3infodesk_printer_docker_compose_up**: DEFAULT=<NOT_SETTED>
    - **c3infodesk_printer_docker_compose_stop**: DEFAULT=<NOT_SETTED>
    - **c3infodesk_printer_docker_compose_restart**: DEFAULT=<NOT_SETTED>
    - **c3infodesk_printer_docker_compose_down**: DEFAULT=<NOT_SETTED>

- ### From: inventories/group_vars/<TARGET_GROUP>
  Please don't cahnge the default values at this file. If you need to update them, use the **inventories/host_vars/<TARGET_NAME>** file.

  At the moment, there's **NO VARIABLES** setted at the **group_vars** for this role.

- ### From: roles/clone-repositories/defaults/main.yml
  Don't change the values at this file, if you need to change them, change it at the **inventories/host_vars/<TARGET_NAME>** file
  - #### CUPS
    - **c3infodesk_printer_host_cups_disable**: DEFAULT=false
      - If you want to disable the CUPS service at the target system
    - **c3infodesk_printer_host_cups_disable_debug**: DEFAULT=false
      - If you want to debug disabling CUPS at the target system
    - **c3infodesk_printer_host_cups_mask**: DEFAULT=false
      - If you want to mask the CUPS service at the target system
  - #### COMPOSE UP
    - **c3infodesk_printer_docker_compose_up**: DEFAULT=false
      - If you want to run the command: "docker compose up" at the target host
    - **c3infodesk_printer_docker_compose_up_debug**: DEFAULT=false
      - If you want to debug running the command: "docker compose up" at the target host
  - #### COMPOSE STOP
    - **c3infodesk_printer_docker_compose_stop**: DEFAULT=false
      - If you want to run the command: "docker compose stop" at the target host
    - **c3infodesk_printer_docker_compose_stop_debug**: DEFAULT=false
      - If you want to debug running the command: "docker compose stop" at the target host
  - #### COMPOSE RESTART
    - **c3infodesk_printer_docker_compose_restart**: DEFAULT=false
      - If you want to run the command: "docker compose restart" at the target host
    - **c3infodesk_printer_docker_compose_restart_debug**: DEFAULT=false
      - If you want to debug running the command: "docker compose restart" at the target host
  - #### COMPOSE DOWN
    - **c3infodesk_printer_docker_compose_down**: DEFAULT=false
      - If you want to run the command: "docker compose down" at the target host
    - **c3infodesk_printer_docker_compose_down_debug**: DEFAULT=false
      - If you want to debug running the command: "docker compose down" at the target host


## Dependencies
The role dependencies are:
  - [dependencies(role)](roles/dependencies/README.md)
  - [clone_repositories](roles/clone_repositories/README.md)
  - [docker_images](roles/docker_images/README.md)


## Example Playbook

- ### What this example will deploy
  This role will deploy all the containers setted on the [docker-compose.yml](https://git.cccv.de/fejao/c3infodesk-printer/-/blob/main/docker/docker-compose.yml) file.
  **PLEASE CHANGE THE VALEUS** setted at this file on the target to your own.

  The **docker-compose.yml** file can be founded at the location setted from the **c3infodesk_printer_folder** path variable. The default is: **"~/Coding/c3infodesk-printer"** folder

- ### Using the provided example
  For using the playbook **playbook_example_05_docker_containers.yml** file you only nned to:
  - Change the user at the **ansible.cfg** file at the field **remote_user** for acessing your target.
  - Update the file **inventories/host_vars/example_server.yml** and change the value for **ansible_become_pass** from the **remote_user**.
  - Update the **inventories/hosts** file and change the **example_server** with the IP address from your target.

  And run the command:
  ```bash
  ansible-playbook -i inventories/hosts playbook_example_05_docker_containers.yml
  ```

- ### Setting your own example

  - #### Deploying a new system example
    After setting your variables at **inventories/host_vars/<HOST_NAME>**, you can add this role to your playbook as a regular role.

    Here is an example using the **<HOST_NAME>** as **test_servers**

    You will need to set this variables fro a new deployment:
      - **c3infodesk_printer_host_cups_disable**: true
      - **c3infodesk_printer_host_cups_mask**: true
      - **c3infodesk_printer_docker_compose_up**: true

    ```yaml
    - hosts:
      - example_servers_group
      roles:
        - role: docker_containers
          vars:
            c3infodesk_printer_host_cups_disable: true
            c3infodesk_printer_host_cups_mask: true
            c3infodesk_printer_docker_compose_up: true
    ```

    And call the playbook as:
    ```bash
    ansible-playbook -i <INVENTORY> <PLAYBOOK_NAME>.yml
    ```

  - #### Restarting the containers example

    Here is an example for adding this role for your playbook for **restarting** the **c3infodesk-printer** containers:

    We are using the **<HOST_NAME>** as **test_servers** for example.

    ```yaml
    - hosts:
        - test_servers
      roles:
        - role: docker-containers
          vars:
            printer_docker_compose_restart: true
    ```

    And call the playbook as:

    ```bash
    ansible-playbook -i <INVENTORY> <PLAYBOOK_NAME>.yml
    ```

      Or you can also pass it using the **role variables**. So your playbook file should looks like:

    ```yaml
    - hosts:
        - test_servers
      roles:
        - docker-containers
    ```

      And call it passing the variable, for example, restarting the containers from **c3infodesk-printer**.
    ```bash
    ansible-playbook -i <INVENTORY> <PLAYBOOK_NAME>.yml --extra-vars "printer_docker_compose_restart=true"
    ```



## License

MIT / BSD


## Author Information
![fejao logo](../../files/from_authors/fejao_logo_circle.png "fejao") [https://chaos.social/@fejao](https://chaos.social/@fejao)