Matrix Docker Ansible eploy
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

365 строки
21 KiB

  1. ---
  2. # A bridge between Matrix and multiple project management services, such as GitHub, GitLab and JIRA.
  3. # Project source code URL: https://github.com/matrix-org/matrix-hookshot
  4. matrix_hookshot_enabled: true
  5. matrix_hookshot_identifier: matrix-hookshot
  6. matrix_hookshot_container_image_self_build: false
  7. matrix_hookshot_container_image_self_build_repo: "https://github.com/matrix-org/matrix-hookshot.git"
  8. matrix_hookshot_container_image_self_build_branch: "{{ 'main' if matrix_hookshot_version == 'latest' else matrix_hookshot_version }}"
  9. # Specifies additional networks for the Hookshot container to connect with
  10. matrix_hookshot_container_additional_networks: "{{ matrix_hookshot_container_additional_networks_auto + matrix_hookshot_container_additional_networks_custom }}"
  11. matrix_hookshot_container_additional_networks_auto: []
  12. matrix_hookshot_container_additional_networks_custom: []
  13. # renovate: datasource=docker depName=halfshot/matrix-hookshot
  14. matrix_hookshot_version: 5.4.1
  15. matrix_hookshot_docker_image: "{{ matrix_hookshot_docker_image_name_prefix }}halfshot/matrix-hookshot:{{ matrix_hookshot_version }}"
  16. matrix_hookshot_docker_image_name_prefix: "{{ 'localhost/' if matrix_hookshot_container_image_self_build else matrix_container_global_registry_prefix }}"
  17. matrix_hookshot_docker_image_force_pull: "{{ matrix_hookshot_docker_image.endswith(':latest') }}"
  18. matrix_hookshot_base_path: "{{ matrix_base_data_path }}/hookshot"
  19. matrix_hookshot_docker_src_files_path: "{{ matrix_hookshot_base_path }}/docker-src"
  20. matrix_hookshot_homeserver_address: ""
  21. matrix_hookshot_container_url: 'matrix-hookshot'
  22. matrix_hookshot_public_scheme: https
  23. matrix_hookshot_public_hostname: "{{ matrix_server_fqn_matrix }}"
  24. matrix_hookshot_public_endpoint: /hookshot
  25. # This is the base URL prefix shared among all endpoints.
  26. #
  27. # It intentionally does not include the path prefix (`matrix_hookshot_public_endpoint`),
  28. # because of how it's used - it's concatenated with paths that already use matrix_hookshot_public_endpoint` within them.
  29. matrix_hookshot_urlprefix: "{{ matrix_hookshot_public_scheme }}://{{ matrix_hookshot_public_hostname }}"
  30. # There is no need to edit ports. use matrix_hookshot_container_http_host_bind_ports below to expose ports instead.
  31. matrix_hookshot_appservice_port: 9993
  32. matrix_hookshot_appservice_hostname: "{{ matrix_hookshot_public_hostname }}"
  33. matrix_hookshot_appservice_endpoint: "{{ matrix_hookshot_public_endpoint }}/_matrix/app"
  34. # The variables below control the Redis cache parameters.
  35. # Using caching is required when experimental encryption is enabled (`matrix_hookshot_experimental_encryption_enabled`)
  36. # but may also speed up Hookshot startup, etc.
  37. matrix_hookshot_cache_redis_host: ''
  38. matrix_hookshot_cache_redis_port: "6379"
  39. matrix_hookshot_cache_redisUri: "{{ ('redis://' + matrix_hookshot_cache_redis_host + ':' + matrix_hookshot_cache_redis_port) if matrix_hookshot_cache_redis_host else '' }}" # noqa var-naming
  40. # Controls whether the experimental end-to-bridge encryption support is enabled.
  41. # This requires that:
  42. # - support to also be enabled in the homeserver, see the documentation of Hookshot.
  43. # - Hookshot to be pointed at a Redis instance via the `matrix_hookshot_cache_redis*` variables.
  44. matrix_hookshot_experimental_encryption_enabled: false
  45. # Controls whether metrics are enabled in the bridge configuration.
  46. # Enabling them is usually enough for a local (in-container) Prometheus to consume them.
  47. # If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_hookshot_metrics_proxying_enabled`.
  48. matrix_hookshot_metrics_enabled: false
  49. # Controls whether Hookshot metrics should be proxied (exposed) on a public URL.
  50. matrix_hookshot_metrics_proxying_enabled: false
  51. matrix_hookshot_metrics_proxying_hostname: ''
  52. matrix_hookshot_metrics_proxying_path_prefix: ''
  53. # There is no need to edit ports.
  54. # Read the documentation to learn about using Hookshot metrics with external Prometheus
  55. # If you still want something different, use matrix_hookshot_container_http_host_bind_ports below to expose ports instead.
  56. matrix_hookshot_metrics_port: 9001
  57. # There is no need to edit ports. use matrix_hookshot_container_http_host_bind_ports below to expose ports instead.
  58. matrix_hookshot_webhook_port: 9000
  59. matrix_hookshot_webhook_hostname: "{{ matrix_hookshot_public_hostname }}"
  60. matrix_hookshot_webhook_endpoint: "{{ matrix_hookshot_public_endpoint }}/webhooks"
  61. # You need to create a GitHub app to enable this and fill in the empty variables below
  62. # https://matrix-org.github.io/matrix-hookshot/setup/github.html
  63. matrix_hookshot_github_enabled: false
  64. matrix_hookshot_github_auth_id: ''
  65. # Set this variable to the contents of the generated and downloaded GitHub private key:
  66. # matrix_hookshot_github_private_key: |
  67. # -----BEGIN RSA PRIVATE KEY-----
  68. # 0123456789ABCDEF...
  69. # -----END RSA PRIVATE KEY-----
  70. # Alternatively, leave it empty and do it manually or use matrix-aux instead, see docs/matrix-bridge-hookshot.md for info.
  71. matrix_hookshot_github_private_key: ''
  72. matrix_hookshot_github_private_key_file: 'private-key.pem'
  73. matrix_hookshot_github_webhook_secret: '' # "Webhook secret" on the GitHub App page
  74. matrix_hookshot_github_oauth_enabled: false
  75. # You need to configure oauth settings only when you have enabled oauth (optional)
  76. matrix_hookshot_github_oauth_client_id: '' # "Client ID" on the GitHub App page
  77. matrix_hookshot_github_oauth_client_secret: '' # "Client Secret" on the GitHub App page
  78. # Default value of matrix_hookshot_github_oauth_endpoint: "/hookshot/webhooks/oauth"
  79. matrix_hookshot_github_oauth_endpoint: "{{ matrix_hookshot_webhook_endpoint }}/oauth"
  80. matrix_hookshot_github_oauth_redirect_uri: "{{ matrix_hookshot_urlprefix }}{{ matrix_hookshot_github_oauth_endpoint }}"
  81. # These are the default settings mentioned here and don't need to be modified: https://matrix-org.github.io/matrix-hookshot/usage/room_configuration/github_repo.html#configuration
  82. matrix_hookshot_github_defaultOptions_ignoreHooks: {} # noqa var-naming
  83. matrix_hookshot_github_defaultOptions_commandPrefix: '!gh' # noqa var-naming
  84. matrix_hookshot_github_defaultOptions_showIssueRoomLink: false # noqa var-naming
  85. matrix_hookshot_github_defaultOptions_prDiff: # noqa var-naming
  86. enabled: false
  87. maxLines: 5
  88. matrix_hookshot_github_defaultOptions_includingLabels: '' # noqa var-naming
  89. matrix_hookshot_github_defaultOptions_excludingLabels: '' # noqa var-naming
  90. matrix_hookshot_github_defaultOptions_hotlinkIssues_prefix: "#" # noqa var-naming
  91. matrix_hookshot_gitlab_enabled: true
  92. # Optionally add your instances, e.g.
  93. # matrix_hookshot_gitlab_instances:
  94. # gitlab.com:
  95. # url: https://gitlab.com
  96. # mygitlab:
  97. # url: https://gitlab.example.org
  98. matrix_hookshot_gitlab_instances:
  99. gitlab.com:
  100. url: https://gitlab.com
  101. # This will be the "Secret token" you have to enter into all GitLab instances for authentication
  102. matrix_hookshot_gitlab_webhook_secret: ''
  103. matrix_hookshot_figma_enabled: false
  104. # Default value of matrix_hookshot_figma_endpoint: "/hookshot/webhooks/figma/webhook"
  105. matrix_hookshot_figma_endpoint: "{{ matrix_hookshot_webhook_endpoint }}/figma/webhook"
  106. matrix_hookshot_figma_publicUrl: "{{ matrix_hookshot_urlprefix }}{{ matrix_hookshot_figma_endpoint }}" # noqa var-naming
  107. # To bridge figma webhooks, you need to configure one of multiple instances like this:
  108. # matrix_hookshot_figma_instances:
  109. # your-instance:
  110. # teamId: your-team-id
  111. # accessToken: your-personal-access-token
  112. # passcode: your-webhook-passcode
  113. matrix_hookshot_figma_instances: {}
  114. matrix_hookshot_jira_enabled: false
  115. # Get the these values from https://matrix-org.github.io/matrix-hookshot/setup/jira.html#jira-oauth
  116. matrix_hookshot_jira_webhook_secret: ''
  117. matrix_hookshot_jira_oauth_enabled: false
  118. matrix_hookshot_jira_oauth_client_id: ''
  119. matrix_hookshot_jira_oauth_client_secret: ''
  120. # Default value of matrix_hookshot_jira_oauth_endpoint: "/hookshot/webhooks/jira/oauth"
  121. matrix_hookshot_jira_oauth_endpoint: "{{ matrix_hookshot_webhook_endpoint }}/jira/oauth"
  122. matrix_hookshot_jira_oauth_redirect_uri: "{{ matrix_hookshot_urlprefix }}{{ matrix_hookshot_jira_oauth_endpoint }}"
  123. # No need to change these
  124. matrix_hookshot_generic_enabled: true
  125. matrix_hookshot_generic_enableHttpGet: false # noqa var-naming
  126. # Default value of matrix_hookshot_generic_endpoint: "/hookshot/webhooks"
  127. matrix_hookshot_generic_endpoint: "{{ matrix_hookshot_webhook_endpoint }}/webhook"
  128. # urlprefix gets updated with protocol & port in group_vars/matrix_servers
  129. matrix_hookshot_generic_urlPrefix: "{{ matrix_hookshot_urlprefix }}{{ matrix_hookshot_generic_endpoint }}" # noqa var-naming
  130. # If you're also using matrix-appservice-webhooks, take care that these prefixes don't overlap
  131. matrix_hookshot_generic_userIdPrefix: '_webhooks_' # noqa var-naming
  132. matrix_hookshot_generic_allowJsTransformationFunctions: false # noqa var-naming
  133. matrix_hookshot_generic_waitForComplete: false # noqa var-naming
  134. matrix_hookshot_feeds_enabled: true
  135. matrix_hookshot_feeds_pollIntervalSeconds: 600 # noqa var-naming
  136. matrix_hookshot_feeds_pollTimeoutSeconds: 30 # noqa var-naming
  137. matrix_hookshot_provisioning_enabled: false
  138. # There is no need to edit ports. use matrix_hookshot_container_http_host_bind_ports below to expose ports instead.
  139. matrix_hookshot_provisioning_port: 9002
  140. matrix_hookshot_provisioning_secret: ''
  141. # Provisioning will be automatically enabled if dimension is enabled and you have provided a provisioning secret, unless you override it
  142. matrix_hookshot_provisioning_internal: "/v1"
  143. matrix_hookshot_provisioning_hostname: "{{ matrix_hookshot_public_hostname }}"
  144. matrix_hookshot_provisioning_endpoint: "{{ matrix_hookshot_public_endpoint }}{{ matrix_hookshot_provisioning_internal }}"
  145. # Valid logging levels are: debug, info, warn, error
  146. matrix_hookshot_logging_level: warn
  147. matrix_hookshot_widgets_enabled: true
  148. matrix_hookshot_widgets_port: 9003
  149. matrix_hookshot_widgets_addToAdminRooms: false # default off as it is a beta feature # noqa var-naming
  150. matrix_hookshot_widgets_roomSetupWidget_enabled: true # noqa var-naming
  151. matrix_hookshot_widgets_roomSetupWidget_addOnInvite: false # noqa var-naming
  152. # `disallowedIpRanges` describes which IP ranges should be disallowed when resolving homeserver IP addresses (for security reasons). Unless you know what you are doing, it is recommended to not include this key. The following IPs are blocked by default, unless you supply another list.
  153. # matrix_hookshot_widgets_disallowedIpRanges:
  154. # - 127.0.0.0/8
  155. # - 10.0.0.0/8
  156. # - 172.16.0.0/12
  157. # - 192.168.0.0/16
  158. # - 100.64.0.0/10
  159. # - 192.0.0.0/24
  160. # - 169.254.0.0/16
  161. # - 192.88.99.0/24
  162. # - 198.18.0.0/15
  163. # - 192.0.2.0/24
  164. # - 198.51.100.0/24
  165. # - 203.0.113.0/24
  166. # - 224.0.0.0/4
  167. # - ::1/128
  168. # - fe80::/10
  169. # - fc00::/7
  170. # - 2001:db8::/32
  171. # - ff00::/8
  172. # - fec0::/10
  173. matrix_hookshot_widgets_disallowedIpRanges: '' # noqa var-naming
  174. matrix_hookshot_widgets_internal: "/widgetapi"
  175. matrix_hookshot_widgets_hostname: "{{ matrix_hookshot_public_hostname }}"
  176. matrix_hookshot_widgets_endpoint: "{{ matrix_hookshot_public_endpoint }}{{ matrix_hookshot_widgets_internal }}"
  177. matrix_hookshot_widgets_publicUrl: "{{ matrix_hookshot_urlprefix }}{{ matrix_hookshot_widgets_endpoint }}/v1/static/" # noqa var-naming
  178. matrix_hookshot_widgets_branding_widgetTitle: "Hookshot Configuration" # noqa var-naming
  179. # You can configure access to the bridge as documented here https://matrix-org.github.io/matrix-hookshot/setup.html#permissions
  180. # When empty, the default permissions are applied.
  181. # Example:
  182. # matrix_hookshot_permissions:
  183. # - actor: *
  184. # services:
  185. # - service: *
  186. # level: commands
  187. # - actor: example.com
  188. # services:
  189. # - service: "*"
  190. # level: admin
  191. matrix_hookshot_permissions: []
  192. matrix_hookshot_bot_displayname: Hookshot Bot
  193. matrix_hookshot_bot_avatar: 'mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d'
  194. matrix_hookshot_container_network: ""
  195. # A list of extra arguments to pass to the container
  196. matrix_hookshot_container_extra_arguments: []
  197. # matrix_hookshot_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
  198. # See `../templates/labels.j2` for details.
  199. #
  200. # To inject your own other container labels, see `matrix_hookshot_container_labels_additional_labels`.
  201. matrix_hookshot_container_labels_traefik_enabled: true
  202. matrix_hookshot_container_labels_traefik_docker_network: "{{ matrix_hookshot_container_network }}"
  203. matrix_hookshot_container_labels_traefik_entrypoints: web-secure
  204. matrix_hookshot_container_labels_traefik_tls_certResolver: default # noqa var-naming
  205. # Controls whether labels will be added that expose Hookshot's webhooks endpoint
  206. matrix_hookshot_container_labels_webhooks_enabled: true
  207. matrix_hookshot_container_labels_webhooks_traefik_rule: "Host(`{{ matrix_hookshot_webhook_hostname }}`) && PathPrefix(`{{ matrix_hookshot_webhook_endpoint }}`)"
  208. matrix_hookshot_container_labels_webhooks_traefik_priority: 0
  209. matrix_hookshot_container_labels_webhooks_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}"
  210. matrix_hookshot_container_labels_webhooks_traefik_tls: "{{ matrix_hookshot_container_labels_webhooks_traefik_entrypoints != 'web' }}"
  211. matrix_hookshot_container_labels_webhooks_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming
  212. # Controls whether labels will be added that expose Hookshot's appservice endpoint
  213. matrix_hookshot_container_labels_appservice_enabled: true
  214. matrix_hookshot_container_labels_appservice_traefik_rule: "Host(`{{ matrix_hookshot_appservice_hostname }}`) && PathPrefix(`{{ matrix_hookshot_appservice_endpoint }}`)"
  215. matrix_hookshot_container_labels_appservice_traefik_priority: 0
  216. matrix_hookshot_container_labels_appservice_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}"
  217. matrix_hookshot_container_labels_appservice_traefik_tls: "{{ matrix_hookshot_container_labels_appservice_traefik_entrypoints != 'web' }}"
  218. matrix_hookshot_container_labels_appservice_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming
  219. # Controls whether labels will be added that expose Hookshot's widgets endpoint
  220. matrix_hookshot_container_labels_widgets_enabled: "{{ matrix_hookshot_widgets_enabled }}"
  221. matrix_hookshot_container_labels_widgets_traefik_rule: "Host(`{{ matrix_hookshot_widgets_hostname }}`) && PathPrefix(`{{ matrix_hookshot_widgets_endpoint }}`)"
  222. matrix_hookshot_container_labels_widgets_traefik_priority: 0
  223. matrix_hookshot_container_labels_widgets_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}"
  224. matrix_hookshot_container_labels_widgets_traefik_tls: "{{ matrix_hookshot_container_labels_widgets_traefik_entrypoints != 'web' }}"
  225. matrix_hookshot_container_labels_widgets_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming
  226. # Controls whether labels will be added that expose Hookshot's provisioning endpoint
  227. matrix_hookshot_container_labels_provisioning_enabled: "{{ matrix_hookshot_provisioning_enabled }}"
  228. matrix_hookshot_container_labels_provisioning_traefik_rule: "Host(`{{ matrix_hookshot_provisioning_hostname }}`) && PathPrefix(`{{ matrix_hookshot_provisioning_endpoint }}`)"
  229. matrix_hookshot_container_labels_provisioning_traefik_priority: 0
  230. matrix_hookshot_container_labels_provisioning_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}"
  231. matrix_hookshot_container_labels_provisioning_traefik_tls: "{{ matrix_hookshot_container_labels_provisioning_traefik_entrypoints != 'web' }}"
  232. matrix_hookshot_container_labels_provisioning_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming
  233. # Controls whether labels will be added that expose Hookshot's provisioning endpoint
  234. matrix_hookshot_container_labels_metrics_enabled: "{{ matrix_hookshot_metrics_enabled and matrix_hookshot_metrics_proxying_enabled }}"
  235. matrix_hookshot_container_labels_metrics_traefik_rule: "Host(`{{ matrix_hookshot_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_hookshot_metrics_proxying_path_prefix }}`)"
  236. matrix_hookshot_container_labels_metrics_traefik_priority: 0
  237. matrix_hookshot_container_labels_metrics_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}"
  238. matrix_hookshot_container_labels_metrics_traefik_tls: "{{ matrix_hookshot_container_labels_metrics_traefik_entrypoints != 'web' }}"
  239. matrix_hookshot_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming
  240. matrix_hookshot_container_labels_metrics_middleware_basic_auth_enabled: false
  241. # See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
  242. matrix_hookshot_container_labels_metrics_middleware_basic_auth_users: ''
  243. # matrix_hookshot_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
  244. # See `../templates/labels.j2` for details.
  245. #
  246. # Example:
  247. # matrix_hookshot_container_labels_additional_labels: |
  248. # my.label=1
  249. # another.label="here"
  250. matrix_hookshot_container_labels_additional_labels: ''
  251. # List of systemd services that service depends on.
  252. matrix_hookshot_systemd_required_services_list: "{{ matrix_hookshot_systemd_required_services_list_default + matrix_hookshot_systemd_required_services_list_auto + matrix_hookshot_systemd_required_services_list_custom }}"
  253. matrix_hookshot_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
  254. matrix_hookshot_systemd_required_services_list_auto: []
  255. matrix_hookshot_systemd_required_services_list_custom: []
  256. # List of systemd services that service wants
  257. matrix_hookshot_systemd_wanted_services_list: []
  258. # List of ports to bind to the host to expose them directly.
  259. # Supply docker port bind arguments in a list like this:
  260. #
  261. # matrix_hookshot_container_http_host_bind_ports:
  262. # - "127.0.0.1:9999:{{ matrix_hookshot_metrics_port }}"
  263. #
  264. # Above example will bind the metrics port in the container to port 9999 on localhost.
  265. matrix_hookshot_container_http_host_bind_ports: []
  266. # These tokens will be set automatically
  267. matrix_hookshot_appservice_token: ''
  268. matrix_hookshot_homeserver_token: ''
  269. # Default configuration template which covers the generic use case.
  270. # You can customize it by controlling the various variables inside it.
  271. #
  272. # For a more advanced customization, you can extend the default (see `matrixhookshot_configuration_extension_yaml`)
  273. # or completely replace this variable with your own template.
  274. matrix_hookshot_configuration_yaml: "{{ lookup('template', 'templates/config.yml.j2') }}"
  275. matrix_hookshot_configuration_extension_yaml: |
  276. # Your custom YAML configuration goes here.
  277. # This configuration extends the default starting configuration (`matrix_hookshot_configuration_yaml`).
  278. #
  279. # You can override individual variables from the default configuration, or introduce new ones.
  280. #
  281. # If you need something more special, you can take full control by
  282. # completely redefining `matrix_hookshot_configuration_yaml`.
  283. matrix_hookshot_configuration_extension: "{{ matrix_hookshot_configuration_extension_yaml | from_yaml if matrix_hookshot_configuration_extension_yaml | from_yaml is mapping else {} }}"
  284. # Holds the final configuration (a combination of the default and its extension).
  285. # You most likely don't need to touch this variable. Instead, see `matrix_hookshot_configuration_yaml`.
  286. matrix_hookshot_configuration: "{{ matrix_hookshot_configuration_yaml | from_yaml | combine(matrix_hookshot_configuration_extension, recursive=True) }}"
  287. # Default registration template which covers the generic use case.
  288. # You can customize it by controlling the various variables inside it.
  289. #
  290. # For a more advanced customization, you can extend the default (see `matrixhookshot_registration_extension_yaml`)
  291. # or completely replace this variable with your own template.
  292. matrix_hookshot_registration_yaml: "{{ lookup('template', 'templates/registration.yml.j2') }}"
  293. matrix_hookshot_registration_extension_yaml: |
  294. # Your custom YAML registration goes here.
  295. # This registration extends the default starting registration (`matrix_hookshot_registration_yaml`).
  296. #
  297. # You can override individual variables from the default registration, or introduce new ones.
  298. #
  299. # If you need something more special, you can take full control by
  300. # completely redefining `matrix_hookshot_registration_yaml`.
  301. matrix_hookshot_registration_extension: "{{ matrix_hookshot_registration_extension_yaml | from_yaml if matrix_hookshot_registration_extension_yaml | from_yaml is mapping else {} }}"
  302. # Holds the final registration (a combination of the default and its extension).
  303. # You most likely don't need to touch this variable. Instead, see `matrix_hookshot_registration_yaml`.
  304. matrix_hookshot_registration: "{{ matrix_hookshot_registration_yaml | from_yaml | combine(matrix_hookshot_registration_extension, recursive=True) }}"