mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-10-31 18:29:21 +00:00 
			
		
		
		
	Optimized snipe-it und bbb
This commit is contained in:
		| @@ -7,13 +7,13 @@ | ||||
| - name: "For '{{ application_id }}': Load database variables" | ||||
|   include_vars: "{{ item }}" | ||||
|   loop: | ||||
|     - "{{ cmp_db_docker_vars_file_docker }}"   # Important to load docker variables first so that database can use them | ||||
|     - "{{ cmp_db_docker_vars_file_db }}" # Important to load them before docker role so that backup can use them | ||||
|     - "{{ cmp_db_docker_vars_file_docker }}"  # Important to load docker variables first so that database can use them | ||||
|     - "{{ cmp_db_docker_vars_file_db }}"      # Important to load them before docker role so that backup can use them | ||||
|  | ||||
| - name: "For '{{ application_id }}': Load docker-compose" | ||||
|   include_role:  | ||||
|     name: docker-compose | ||||
|  | ||||
| - name: "For '{{ application_id }}': Load central RDBMS" | ||||
|   include_role:  | ||||
|   include_role: | ||||
|     name: cmp-rdbms | ||||
| @@ -1,12 +1,14 @@ | ||||
| # run_once_cmp_docker_proxy: deactivated | ||||
|  | ||||
| - name: "For '{{ application_id }}': include docker-compose role" | ||||
|   include_role: | ||||
|     name: docker-compose | ||||
|  | ||||
| # To load the proxy firs is just implemented due to some issues with BBB | ||||
| - name: "For '{{ application_id }}': include role srv-proxy-6-6-domain" | ||||
|   include_role: | ||||
|     name: srv-proxy-6-6-domain | ||||
|   vars: | ||||
|     domain:   "{{ domains | get_domain(application_id) }}" | ||||
|     http_port:   "{{ ports.localhost.http[application_id] }}" | ||||
|     http_port:   "{{ ports.localhost.http[application_id] }}" | ||||
|  | ||||
| - name: "For '{{ application_id }}': include docker-compose role" | ||||
|   include_role: | ||||
|     name: docker-compose | ||||
|  | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
| - name: Build docker  | ||||
|   command: | ||||
|     cmd:   docker compose build | ||||
|     chdir: "{{docker_repository_path}}" | ||||
|     chdir: "{{ docker_compose.directories.instance }}" | ||||
|   environment: | ||||
|     COMPOSE_HTTP_TIMEOUT: 600 | ||||
|     DOCKER_CLIENT_TIMEOUT: 600 | ||||
| @@ -21,7 +21,6 @@ | ||||
|     - docker compose build | ||||
|     - docker compose up     # This is just here because I didn't took the time to refactor | ||||
|                             # @todo go over all docker compose up implementations and check where it makes sense to user docker compose build and where docker compose up | ||||
|   when: application_id != 'web-app-bigbluebutton' # @todo solve this on a different way, just a fast hack | ||||
|  | ||||
| - name: docker compose up | ||||
|   shell: docker-compose -p {{ application_id | get_entity_name }} up -d --force-recreate --remove-orphans | ||||
|   | ||||
| @@ -4,9 +4,11 @@ | ||||
| 
 | ||||
| - name: pull docker repository | ||||
|   git: | ||||
|     repo: "{{ docker_repository_address }}" | ||||
|     dest: "{{ docker_repository_path }}" | ||||
|     update: yes | ||||
|     repo:       "{{ docker_repository_address }}" | ||||
|     dest:       "{{ docker_repository_path }}" | ||||
|     depth:      1 | ||||
|     update:     yes | ||||
|     recursive:  yes | ||||
|   notify: | ||||
|     - docker compose build | ||||
|     - docker compose up | ||||
| @@ -4,6 +4,11 @@ | ||||
|     chdir:        "{{ docker_compose.directories.instance }}" | ||||
|   register:       docker_ps | ||||
|   changed_when:   (docker_ps.stdout | trim) == "" | ||||
|   # The failed when catches the condition when an docker compose file will be dynamicly build after the file routine | ||||
|   failed_when: > | ||||
|     docker_ps.rc != 0 | ||||
|     and | ||||
|     'no configuration file provided: not found' not in (docker_ps.stderr | default('')) | ||||
|   when: > | ||||
|     not ( | ||||
|       docker_compose_template.changed | default(false) | ||||
| @@ -4,7 +4,7 @@ | ||||
|   include_vars: "{{ docker_compose_variable_file }}" | ||||
|  | ||||
| - name: "reset (if enabled)" | ||||
|   include_tasks: reset.yml  | ||||
|   include_tasks: 01_reset.yml  | ||||
|   when: mode_reset | bool | ||||
|  | ||||
| # This could lead to problems in docker-compose directories which are based on a git repository | ||||
| @@ -17,15 +17,16 @@ | ||||
|   with_dict: "{{ docker_compose.directories }}" | ||||
|  | ||||
| - name: "Include routines to set up a git repository based installaion for '{{application_id}}'." | ||||
|   include_tasks: "01_repository.yml" | ||||
|   include_tasks: "02_repository.yml" | ||||
|   when: docker_pull_git_repository | bool | ||||
|  | ||||
| - name: "Include routines file management routines for '{{application_id}}'." | ||||
|   include_tasks: "02_files.yml" | ||||
|   include_tasks: "03_files.yml" | ||||
|   when: not docker_compose_skipp_file_creation | bool | ||||
|  | ||||
| - name: "Ensure that {{ docker_compose.directories.instance }} is up" | ||||
|   include_tasks: "03_ensure_up.yml" | ||||
|   include_tasks: "04_ensure_up.yml" | ||||
|   when: not docker_compose_skipp_file_creation | bool | ||||
|  | ||||
| - name: "flush database, docker and proxy for '{{ application_id }}'"  | ||||
|   meta: flush_handlers | ||||
|   | ||||
| @@ -1,2 +1,3 @@ | ||||
| # Todo | ||||
| -  Propper implement and test the LDAP integration, the configuration values just had been set during refactoring | ||||
| - Propper implement and test the LDAP integration, the configuration values just had been set during refactoring | ||||
| - Move this whole overcomplicated handlers to the copying of a docker-compose.yml file. This is just legacy stuff | ||||
| @@ -1,19 +1,16 @@ | ||||
| --- | ||||
| - name: create docker-compose.yml for bigbluebutton | ||||
|   command: | ||||
|     cmd: bash ./scripts/generate-compose | ||||
|     chdir: "{{ bbb_repository_directory }}" | ||||
|     chdir: "{{ docker_repository_path }}" | ||||
|   environment: | ||||
|     COMPOSE_HTTP_TIMEOUT: 600 | ||||
|     DOCKER_CLIENT_TIMEOUT: 600 | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: Copy docker-compose.yml from origin to final location | ||||
|   copy: | ||||
|     src:  "{{ docker_compose_file_origine }}" | ||||
|     dest: "{{ docker_compose_file_final }}" | ||||
|     remote_src: yes | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: Replace bind mounts by named volume mounts | ||||
|   replace: | ||||
| @@ -26,7 +23,6 @@ | ||||
|     - { regexp: '\./data/freeswitch-meetings:/var/freeswitch/meetings', replace: 'freeswitch:/var/freeswitch/meetings' } | ||||
|     - { regexp: '\./data/greenlight:/usr/src/app/storage', replace: 'greenlight:/usr/src/app/storage' } | ||||
|     - { regexp: '\./data/mediasoup:/var/mediasoup', replace: 'mediasoup:/var/mediasoup' } | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: add volume to redis | ||||
|   lineinfile: | ||||
| @@ -34,14 +30,12 @@ | ||||
|     insertafter: "^\\s*redis:" | ||||
|     line: "    volumes:\n      - redis:/data" | ||||
|     firstmatch: yes | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: add volume to coturn | ||||
|   lineinfile: | ||||
|     path: "{{ docker_compose_file_final }}" | ||||
|     insertafter: "- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf" | ||||
|     line: "      - coturn:/var/lib/coturn" | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| # Implemented due to etherpad health bug. | ||||
| # @todo Remove when health check is working fine | ||||
| @@ -67,14 +61,18 @@ | ||||
|         mediasoup: | ||||
|     marker: "# {mark} ANSIBLE MANAGED BLOCK FOR VOLUMES" | ||||
|     insertbefore: "^services:" | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: Replace all './' with '/services/' in docker-compose.yml | ||||
|   ansible.builtin.replace: | ||||
|     path:     "{{ docker_compose_file_final }}" | ||||
|     regexp:   '\./' | ||||
|     replace:  './services/' | ||||
|   listen: setup bigbluebutton | ||||
|     replace:  '{{ docker_repository_path }}/' | ||||
| 
 | ||||
| - name: Prefix build context with docker_repository_path | ||||
|   ansible.builtin.replace: | ||||
|     path: "{{ docker_compose_file_final }}" | ||||
|     regexp: '(^\s*context:\s*)mod/(.*)' | ||||
|     replace: '\1{{ docker_repository_path }}/mod/\2' | ||||
| 
 | ||||
| - name: "Update healthcheck for bbb-graphql-server" | ||||
|   # This is neccessary because the healthcheck doesn't listen to the correct port | ||||
| @@ -82,20 +80,33 @@ | ||||
|     line: "    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8085/healthz\"]\n      interval: 30s\n      timeout: 10s\n      retries: 5\n      start_period: 10s" | ||||
|     path: "{{docker_compose_file_final}}" | ||||
|     insertafter: "bbb-graphql-server:" | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: docker compose pull bigbluebutton | ||||
|   command: | ||||
|     cmd: "docker-compose pull" | ||||
|     chdir: "{{ bbb_repository_directory }}" | ||||
|   listen: setup bigbluebutton | ||||
| 
 | ||||
| - name: docker compose up bigbluebutton | ||||
|   command: | ||||
|     cmd: "docker-compose -p bigbluebutton up -d --force-recreate --remove-orphans" | ||||
|     # Don't use the --build flag here. This leads to bugs | ||||
|     chdir: "{{ docker_compose.directories.instance }}" | ||||
|   environment: | ||||
|     COMPOSE_HTTP_TIMEOUT: 600 | ||||
|     DOCKER_CLIENT_TIMEOUT: 600 | ||||
|   listen: setup bigbluebutton | ||||
| - name: Add env_file to each service in docker-compose.yml | ||||
|   blockinfile: | ||||
|     path: "{{ docker_compose_file_final }}" | ||||
|     insertafter: '^  {{ service }}:$' | ||||
|     marker: "# {mark} ANSIBLE MANAGED BLOCK FOR ENV_FILE" | ||||
|     block: | | ||||
|         env_file: | ||||
|           - "{{ docker_compose.files.env }}" | ||||
|   loop: | ||||
|     - bbb-web | ||||
|     - freeswitch | ||||
|     - nginx | ||||
|     - etherpad | ||||
|     - bbb-pads | ||||
|     - bbb-export-annotations | ||||
|     - redis | ||||
|     - webrtc-sfu | ||||
|     - fsesl-akka | ||||
|     - apps-akka | ||||
|     - bbb-graphql-server | ||||
|     - bbb-graphql-actions | ||||
|     - bbb-graphql-middleware | ||||
|     - collabora | ||||
|     - periodic | ||||
|     - coturn | ||||
|     - greenlight | ||||
|     - postgres | ||||
|   loop_control: | ||||
|     loop_var: service | ||||
| @@ -1,34 +1,12 @@ | ||||
| --- | ||||
| # Docker Central Database Role can't be used here | ||||
| - name: "include docker-compose role" | ||||
|   include_role:  | ||||
|     name: docker-compose | ||||
|   vars: | ||||
|     database_instance:  "{{ application_id }}" | ||||
|     database_password:  "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret', True) }}" | ||||
|     database_username:  "postgres" | ||||
|     database_name:      ""                              # Multiple databases | ||||
|  | ||||
| - name:                 "Seed BigBlueButton Database for Backup" | ||||
|   include_tasks:        "{{ playbook_dir }}/roles/sys-bkp-docker-2-loc/tasks/seed-database-to-backup.yml" | ||||
|   vars: | ||||
|     database_instance:  "{{ application_id }}" | ||||
|     database_password:  "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret', True) }}" | ||||
|     database_username:  "postgres" | ||||
|     database_name:      ""                              # Multiple databases | ||||
|  | ||||
| - name: "include role srv-proxy-6-6-domain" | ||||
| - name: "For '{{ application_id }}': include docker-compose role" | ||||
|   include_role: | ||||
|     name: srv-proxy-6-6-domain | ||||
|  | ||||
| - name: pull docker repository | ||||
|   git: | ||||
|     repo: "https://github.com/bigbluebutton/docker.git" | ||||
|     dest: "{{ bbb_repository_directory }}" | ||||
|     update: yes | ||||
|     recursive: yes | ||||
|     version: main | ||||
|   notify: setup bigbluebutton | ||||
|     name: cmp-docker-proxy | ||||
|   vars: | ||||
|     database_instance:  "{{ application_id }}" | ||||
|     database_password:  "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret', True) }}" | ||||
|     database_username:  "postgres" | ||||
|     database_name:      ""                              # Multiple databases | ||||
|  | ||||
| - name: configure websocket_upgrade.conf | ||||
|   copy:  | ||||
| @@ -36,31 +14,26 @@ | ||||
|     dest: "{{nginx.directories.http.maps}}websocket_upgrade.conf" | ||||
|   notify: restart nginx | ||||
|  | ||||
| - name: "Remove directory {{ docker_compose.directories.env }}" | ||||
|   file: | ||||
|     path: "{{ docker_compose.directories.env }}" | ||||
|     state: absent | ||||
| - name: "Set BBB Facts" | ||||
|   set_fact: | ||||
|     bbb_env_file_link:            "{{ docker_repository_path }}.env" | ||||
|     bbb_env_file_origine:         "{{ docker_compose.files.env }}" | ||||
|     docker_compose_file_origine:  "{{ docker_repository_path }}docker-compose.yml" | ||||
|     docker_compose_file_final:    "{{ docker_compose.directories.instance }}docker-compose.yml" | ||||
|  | ||||
| - name: deploy .env | ||||
|   template:  | ||||
|     src:  env.j2 | ||||
|     dest: "{{ bbb_env_file_origine }}" | ||||
|   notify: setup bigbluebutton | ||||
|  | ||||
| - name: Create symbolic link from .env file to target location | ||||
|   file: | ||||
|     src:    "{{ bbb_env_file_origine }}" | ||||
|     dest:   "{{ bbb_env_file_link }}" | ||||
|     state:  link | ||||
|   notify: setup bigbluebutton | ||||
|  | ||||
| - name:           "Check if any container is running in {{ docker_compose.directories.instance }}" | ||||
|   command:        docker compose ps -q --filter status=running | ||||
|   args: | ||||
|     chdir:        "{{ docker_compose.directories.instance }}" | ||||
|   register:       docker_ps | ||||
|   changed_when:   (docker_ps.stdout | trim) == "" | ||||
|   notify:         setup bigbluebutton | ||||
| - name: "Setup docker-compose.yml file" | ||||
|   include_tasks: "docker-compose.yml" | ||||
|  | ||||
| - name: flush docker service | ||||
|   meta: flush_handlers | ||||
| @@ -76,6 +49,6 @@ | ||||
|   command: | ||||
|     cmd: docker compose exec greenlight bundle exec rake admin:create | ||||
|     chdir: "{{ docker_compose.directories.instance }}" | ||||
|   when: bigbluebutton_setup | ||||
|   when: bbb_setup | ||||
|   ignore_errors: true | ||||
|   register: admin_creation_result | ||||
| @@ -1,7 +1,7 @@ | ||||
| ENABLE_COTURN=true | ||||
| COTURN_TLS_CERT_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/fullchain.pem | ||||
| COTURN_TLS_KEY_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/privkey.pem | ||||
| ENABLE_GREENLIGHT={{applications | get_app_conf(application_id, 'enable_greenlight', True)}} | ||||
| ENABLE_GREENLIGHT={{ applications | get_app_conf(application_id, 'enable_greenlight', True) }} | ||||
|  | ||||
| # Enable Webhooks | ||||
| # used by some integrations | ||||
|   | ||||
| @@ -1,18 +1,18 @@ | ||||
| application_id:                           "web-app-bigbluebutton" | ||||
| bbb_repository_directory:                 "{{ docker_compose.directories.services }}" | ||||
| docker_compose_file_origine:              "{{ docker_compose.directories.services }}docker-compose.yml" | ||||
| docker_compose_file_final:                "{{ docker_compose.directories.instance }}docker-compose.yml" | ||||
|  | ||||
| # Database configuration | ||||
| database_type:                            "postgres" | ||||
| database_password:                        "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret') }}" | ||||
|  | ||||
| # Proxy | ||||
| domain:                                   "{{ domains | get_domain(application_id) }}" | ||||
| http_port:                                "{{ ports.localhost.http[application_id] }}" | ||||
| bbb_env_file_link:                        "{{ docker_compose.directories.instance }}.env"     | ||||
| bbb_env_file_origine:                     "{{ bbb_repository_directory }}.env" | ||||
|  | ||||
| docker_compose_skipp_file_creation: true  # Skipp creation of docker-compose.yml file | ||||
| # Docker | ||||
| docker_compose_skipp_file_creation:       true # Handled in this role | ||||
| docker_repository_address:                "https://github.com/bigbluebutton/docker.git" | ||||
| docker_pull_git_repository:               true | ||||
| docker_compose_flush_handlers:            false | ||||
|  | ||||
| # Setup  | ||||
| bigbluebutton_setup:                      "{{ applications | get_app_conf(application_id, 'setup') }}" | ||||
| bbb_setup:                                "{{ applications | get_app_conf(application_id, 'setup') }}" | ||||
| @@ -1,4 +1,4 @@ | ||||
| application_id:             "web-app-port-ui" | ||||
| docker_repository_address:  "https://github.com/kevinveenbirkenbach/port-ui" | ||||
| config_inventory_path:      "{{ inventory_dir }}/files/{{ inventory_hostname }}/docker/web-app-port-ui/config.yaml.j2" | ||||
| docker_pull_git_repository:          true | ||||
| application_id:               "web-app-port-ui" | ||||
| docker_repository_address:    "https://github.com/kevinveenbirkenbach/port-ui" | ||||
| config_inventory_path:        "{{ inventory_dir }}/files/{{ inventory_hostname }}/docker/web-app-port-ui/config.yaml.j2" | ||||
| docker_pull_git_repository:   true | ||||
| @@ -12,27 +12,6 @@ | ||||
|   until: snipeit_admin_check.status == 200 | ||||
|   when: not ( applications | get_app_conf(application_id, 'features.oauth2', False)) | ||||
|  | ||||
| - name: "Debug: show APP_KEY in container shell" | ||||
|   shell: | | ||||
|     docker-compose exec -T \ | ||||
|       -u {{ snipe_it_user }} \ | ||||
|       -e XDG_CONFIG_HOME=/tmp \ | ||||
|       -e APP_KEY='{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}' \ | ||||
|       application \ | ||||
|       sh -c 'echo "SHELL sees APP_KEY=$APP_KEY"' | ||||
|   args: | ||||
|     chdir: "{{ docker_compose.directories.instance }}" | ||||
|  | ||||
| - name: "Debug: show APP_KEY in container shell" | ||||
|   shell: | | ||||
|     docker-compose exec -T -u {{ snipe_it_user }} \ | ||||
|     -e XDG_CONFIG_HOME=/tmp \ | ||||
|     -e APP_KEY="{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}" \ | ||||
|     application \ | ||||
|     php artisan tinker --execute="echo 'CONFIG app.key: ' . config('app.key') . PHP_EOL;" | ||||
|   args: | ||||
|     chdir: "{{ docker_compose.directories.instance }}" | ||||
|  | ||||
| - name: "Set all LDAP settings via Laravel Setting model (inside container as {{ snipe_it_user }})" | ||||
|   shell: | | ||||
|     docker-compose exec -T \ | ||||
|   | ||||
| @@ -1,6 +1,14 @@ | ||||
| # General  | ||||
| application_id:     "web-app-snipe-it" | ||||
|  | ||||
| # Database | ||||
| database_password:  "{{ applications | get_app_conf(application_id, 'credentials.database_password', True) }}" | ||||
| database_type:      "mariadb" | ||||
|  | ||||
| # Docker | ||||
| docker_compose_flush_handlers:          true | ||||
|  | ||||
| # Snipe-IT specific | ||||
| snipe_it_url:       "{{ domains | get_url(application_id, web_protocol) }}" | ||||
| snipe_it_version:   "{{ applications | get_app_conf(application_id, 'docker.services.snipe-it.version', True) }}" | ||||
| snipe_it_image:     "{{ applications | get_app_conf(application_id, 'docker.services.snipe-it.image', True) }}" | ||||
|   | ||||
| @@ -13,7 +13,7 @@ database_type:                          0                       # Database type | ||||
| docker_compose_flush_handlers:          true                    # When this is set to true an auto-flush after the docker-compose.yml, and env deploy is triggered, otherwise you have todo it manual. | ||||
| docker_compose_skipp_file_creation:     false                   # Skipp creation of docker-compose.yml file | ||||
|  | ||||
| docker_pull_git_repository:                      true                    # This will automaticly pull a repository from the 'docker_repository_address' | ||||
| docker_pull_git_repository:             true                    # This will automaticly pull a repository from the 'docker_repository_address' | ||||
| docker_repository_address:              ""                      # The address of a repository which should be pulled | ||||
|  | ||||
| {# The following variable mapping is optional, but it makes it easier to read the code.#} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user