octopize.deploy_tool 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. octopize_deploy_tool-0.1.0/.gitignore +63 -0
  2. octopize_deploy_tool-0.1.0/PKG-INFO +346 -0
  3. octopize_deploy_tool-0.1.0/README.md +317 -0
  4. octopize_deploy_tool-0.1.0/pyproject.toml +123 -0
  5. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/__init__.py +26 -0
  6. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/cli_test_harness.py +217 -0
  7. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/configure.py +705 -0
  8. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/defaults.yaml +63 -0
  9. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/download_templates.py +251 -0
  10. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/input_gatherer.py +324 -0
  11. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/printer.py +216 -0
  12. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/state_manager.py +136 -0
  13. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/__init__.py +25 -0
  14. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/authentik.py +46 -0
  15. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/authentik_blueprint.py +79 -0
  16. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/base.py +199 -0
  17. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/database.py +37 -0
  18. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/email.py +88 -0
  19. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/logging.py +32 -0
  20. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/required.py +81 -0
  21. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/storage.py +32 -0
  22. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/telemetry.py +58 -0
  23. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/steps/user.py +89 -0
  24. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/version_compat.py +344 -0
  25. octopize_deploy_tool-0.1.0/tests/MISSING_CLI_TESTS.md +323 -0
  26. octopize_deploy_tool-0.1.0/tests/QUICK_REFERENCE.md +52 -0
  27. octopize_deploy_tool-0.1.0/tests/TESTING_GUIDE.md +549 -0
  28. octopize_deploy_tool-0.1.0/tests/__init__.py +1 -0
  29. octopize_deploy_tool-0.1.0/tests/conftest.py +268 -0
  30. octopize_deploy_tool-0.1.0/tests/fixtures/__init__.py +195 -0
  31. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.deployment-state.yaml +46 -0
  32. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.env +97 -0
  33. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/admin_emails +1 -0
  34. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_name +1 -0
  35. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_password +1 -0
  36. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_user +1 -0
  37. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_secret_key +1 -0
  38. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authjwt_secret_key +1 -0
  39. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/clevercloud_sso_salt +1 -0
  40. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_admin_password +1 -0
  41. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_admin_user +1 -0
  42. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_name +1 -0
  43. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_password +1 -0
  44. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_user +1 -0
  45. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/file_encryption_key +1 -0
  46. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/file_jwt_secret_key +1 -0
  47. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/organization_name +1 -0
  48. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/pepper +1 -0
  49. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/storage_admin_access_key_id +1 -0
  50. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/storage_admin_secret_access_key +1 -0
  51. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/telemetry_s3_access_key_id +0 -0
  52. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  53. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  54. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/docker-compose.yml +556 -0
  55. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/nginx/nginx.conf +93 -0
  56. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/input.yaml +13 -0
  57. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/output.txt +50 -0
  58. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.deployment-state.yaml +40 -0
  59. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.env +98 -0
  60. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/admin_emails +1 -0
  61. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_name +1 -0
  62. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_password +1 -0
  63. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_user +1 -0
  64. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_secret_key +1 -0
  65. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authjwt_secret_key +1 -0
  66. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/clevercloud_sso_salt +1 -0
  67. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_admin_password +1 -0
  68. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_admin_user +1 -0
  69. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_name +1 -0
  70. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_password +1 -0
  71. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_user +1 -0
  72. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/file_encryption_key +1 -0
  73. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/file_jwt_secret_key +1 -0
  74. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/organization_name +1 -0
  75. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/pepper +1 -0
  76. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/storage_admin_access_key_id +1 -0
  77. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/storage_admin_secret_access_key +1 -0
  78. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  79. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/docker-compose.yml +556 -0
  80. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/nginx/nginx.conf +93 -0
  81. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/input.yaml +18 -0
  82. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/output.txt +50 -0
  83. octopize_deploy_tool-0.1.0/tests/fixtures/config_not_found/output.txt +1 -0
  84. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.deployment-state.yaml +46 -0
  85. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.env +97 -0
  86. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/admin_emails +1 -0
  87. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_name +1 -0
  88. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_password +1 -0
  89. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_user +1 -0
  90. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_secret_key +1 -0
  91. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authjwt_secret_key +1 -0
  92. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/clevercloud_sso_salt +1 -0
  93. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_admin_password +1 -0
  94. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_admin_user +1 -0
  95. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_name +1 -0
  96. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_password +1 -0
  97. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_user +1 -0
  98. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/file_encryption_key +1 -0
  99. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/file_jwt_secret_key +1 -0
  100. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/organization_name +1 -0
  101. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/pepper +1 -0
  102. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/storage_admin_access_key_id +1 -0
  103. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/storage_admin_secret_access_key +1 -0
  104. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/telemetry_s3_access_key_id +0 -0
  105. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  106. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  107. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/deployment-config.yaml +32 -0
  108. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/docker-compose.yml +556 -0
  109. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/nginx/nginx.conf +93 -0
  110. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.deployment-state.yaml +46 -0
  111. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.env +97 -0
  112. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/admin_emails +1 -0
  113. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_name +1 -0
  114. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_password +1 -0
  115. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_user +1 -0
  116. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_secret_key +1 -0
  117. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authjwt_secret_key +1 -0
  118. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/clevercloud_sso_salt +1 -0
  119. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_admin_password +1 -0
  120. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_admin_user +1 -0
  121. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_name +1 -0
  122. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_password +1 -0
  123. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_user +1 -0
  124. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/file_encryption_key +1 -0
  125. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/file_jwt_secret_key +1 -0
  126. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/organization_name +1 -0
  127. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/pepper +1 -0
  128. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/storage_admin_access_key_id +1 -0
  129. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/storage_admin_secret_access_key +1 -0
  130. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/telemetry_s3_access_key_id +0 -0
  131. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  132. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  133. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/docker-compose.yml +556 -0
  134. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/nginx/nginx.conf +93 -0
  135. octopize_deploy_tool-0.1.0/tests/fixtures/help/output.txt +20 -0
  136. octopize_deploy_tool-0.1.0/tests/fixtures/invalid_port_config/config.yaml +5 -0
  137. octopize_deploy_tool-0.1.0/tests/fixtures/invalid_port_config/output.txt +51 -0
  138. octopize_deploy_tool-0.1.0/tests/fixtures/invalid_url_config/config.yaml +3 -0
  139. octopize_deploy_tool-0.1.0/tests/fixtures/invalid_url_config/output.txt +51 -0
  140. octopize_deploy_tool-0.1.0/tests/fixtures/malformed_yaml/config.yaml +3 -0
  141. octopize_deploy_tool-0.1.0/tests/fixtures/malformed_yaml/output.txt +4 -0
  142. octopize_deploy_tool-0.1.0/tests/fixtures/missing_templates/output.txt +1 -0
  143. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.deployment-state.yaml +40 -0
  144. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.env +98 -0
  145. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/admin_emails +1 -0
  146. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_name +1 -0
  147. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_password +1 -0
  148. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_user +1 -0
  149. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_secret_key +1 -0
  150. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authjwt_secret_key +1 -0
  151. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/clevercloud_sso_salt +1 -0
  152. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_admin_password +1 -0
  153. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_admin_user +1 -0
  154. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_name +1 -0
  155. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_password +1 -0
  156. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_user +1 -0
  157. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/file_encryption_key +1 -0
  158. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/file_jwt_secret_key +1 -0
  159. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/organization_name +1 -0
  160. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/pepper +1 -0
  161. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/storage_admin_access_key_id +1 -0
  162. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/storage_admin_secret_access_key +1 -0
  163. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  164. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/docker-compose.yml +556 -0
  165. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/nginx/nginx.conf +93 -0
  166. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/input.yaml +18 -0
  167. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/output.txt +50 -0
  168. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/config.yaml +16 -0
  169. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.deployment-state.yaml +50 -0
  170. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.env +97 -0
  171. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/admin_emails +0 -0
  172. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_name +1 -0
  173. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_password +1 -0
  174. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_user +1 -0
  175. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_secret_key +1 -0
  176. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authjwt_secret_key +1 -0
  177. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/aws_mail_account_access_key_id +0 -0
  178. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/aws_mail_account_secret_access_key +0 -0
  179. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/clevercloud_sso_salt +1 -0
  180. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_admin_password +1 -0
  181. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_admin_user +1 -0
  182. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_name +1 -0
  183. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_password +1 -0
  184. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_user +1 -0
  185. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/file_encryption_key +1 -0
  186. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/file_jwt_secret_key +1 -0
  187. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/organization_name +1 -0
  188. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/pepper +1 -0
  189. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/storage_admin_access_key_id +1 -0
  190. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/storage_admin_secret_access_key +1 -0
  191. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/telemetry_s3_access_key_id +0 -0
  192. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  193. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/authentik/octopize-avatar-blueprint.yaml +773 -0
  194. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/docker-compose.yml +556 -0
  195. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/nginx/nginx.conf +93 -0
  196. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/output.txt +51 -0
  197. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_incomplete_config/config.yaml +4 -0
  198. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_incomplete_config/output.txt +51 -0
  199. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_no_config/output.txt +9 -0
  200. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_partial_config/config.yaml +4 -0
  201. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_partial_config/output.txt +51 -0
  202. octopize_deploy_tool-0.1.0/tests/fixtures/output_dir_nested/output.txt +50 -0
  203. octopize_deploy_tool-0.1.0/tests/fixtures/output_dir_permission_denied/output.txt +1 -0
  204. octopize_deploy_tool-0.1.0/tests/fixtures/save_config_interactive/output.txt +52 -0
  205. octopize_deploy_tool-0.1.0/tests/fixtures/save_config_with_existing/config.yaml +3 -0
  206. octopize_deploy_tool-0.1.0/tests/fixtures/save_config_with_existing/input.yaml +18 -0
  207. octopize_deploy_tool-0.1.0/tests/fixtures/save_config_with_existing/output.txt +53 -0
  208. octopize_deploy_tool-0.1.0/tests/fixtures/template_from_local_verbose/output.txt +53 -0
  209. octopize_deploy_tool-0.1.0/tests/fixtures/template_source_empty/output.txt +1 -0
  210. octopize_deploy_tool-0.1.0/tests/fixtures/template_source_not_found/output.txt +1 -0
  211. octopize_deploy_tool-0.1.0/tests/fixtures/template_source_partial/output.txt +1 -0
  212. octopize_deploy_tool-0.1.0/tests/fixtures/type_mismatch_config/config.yaml +5 -0
  213. octopize_deploy_tool-0.1.0/tests/fixtures/type_mismatch_config/output.txt +51 -0
  214. octopize_deploy_tool-0.1.0/tests/integration/README.md +268 -0
  215. octopize_deploy_tool-0.1.0/tests/integration/__init__.py +1 -0
  216. octopize_deploy_tool-0.1.0/tests/integration/test_cli_integration.py +713 -0
  217. octopize_deploy_tool-0.1.0/tests/steps/test_authentik.py +75 -0
  218. octopize_deploy_tool-0.1.0/tests/steps/test_authentik_blueprint.py +140 -0
  219. octopize_deploy_tool-0.1.0/tests/steps/test_base.py +69 -0
  220. octopize_deploy_tool-0.1.0/tests/steps/test_database.py +65 -0
  221. octopize_deploy_tool-0.1.0/tests/steps/test_email.py +119 -0
  222. octopize_deploy_tool-0.1.0/tests/steps/test_logging.py +98 -0
  223. octopize_deploy_tool-0.1.0/tests/steps/test_required.py +96 -0
  224. octopize_deploy_tool-0.1.0/tests/steps/test_state_manager.py +336 -0
  225. octopize_deploy_tool-0.1.0/tests/steps/test_storage.py +57 -0
  226. octopize_deploy_tool-0.1.0/tests/steps/test_telemetry.py +111 -0
  227. octopize_deploy_tool-0.1.0/tests/steps/test_user.py +170 -0
  228. octopize_deploy_tool-0.1.0/tests/steps/test_user_validation.py +166 -0
  229. octopize_deploy_tool-0.1.0/tests/test_cli_harness.py +277 -0
  230. octopize_deploy_tool-0.1.0/tests/unit/test_deployment_configurator.py +739 -0
  231. octopize_deploy_tool-0.1.0/tests/unit/test_deployment_runner.py +312 -0
  232. octopize_deploy_tool-0.1.0/tests/unit/test_input_gatherer.py +176 -0
  233. octopize_deploy_tool-0.1.0/tests/unit/test_printer.py +136 -0
  234. octopize_deploy_tool-0.1.0/tests/unit/test_rich_implementations.py +190 -0
  235. octopize_deploy_tool-0.1.0/tests/unit/test_version_validation.py +82 -0
@@ -0,0 +1,63 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ *.manifest
32
+ *.spec
33
+
34
+ # Unit test / coverage reports
35
+ htmlcov/
36
+ .tox/
37
+ .nox/
38
+ .coverage
39
+ .coverage.*
40
+ .cache
41
+ nosetests.xml
42
+ coverage.xml
43
+ *.cover
44
+ *.py,cover
45
+ .hypothesis/
46
+ .pytest_cache/
47
+
48
+ # Virtual environments
49
+ venv/
50
+ ENV/
51
+ env/
52
+ .venv
53
+
54
+ # IDE
55
+ .vscode/
56
+ .idea/
57
+ *.swp
58
+ *.swo
59
+ *~
60
+
61
+ # OS
62
+ .DS_Store
63
+ Thumbs.db
@@ -0,0 +1,346 @@
1
+ Metadata-Version: 2.4
2
+ Name: octopize.deploy_tool
3
+ Version: 0.1.0
4
+ Summary: Deployment configuration tool for Octopize Avatar platform
5
+ Project-URL: Homepage, https://octopize.io
6
+ Project-URL: Documentation, https://docs.octopize.io/docs/deploying/self-hosted
7
+ Project-URL: Repository, https://github.com/octopize/avatar-deployment
8
+ Project-URL: Issues, https://github.com/octopize/avatar-deployment/issues
9
+ Author-email: Octopize <contact@octopize.io>
10
+ License: MIT
11
+ Keywords: avatar,configuration,deployment,octopize
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: System :: Installation/Setup
19
+ Classifier: Topic :: System :: Systems Administration
20
+ Requires-Python: >=3.13
21
+ Requires-Dist: jinja2>=3.1.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: rich>=13.0.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: mypy; extra == 'dev'
26
+ Requires-Dist: pytest>=7.0; extra == 'dev'
27
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Octopize Avatar Deployment Tool
31
+
32
+ Automated configuration tool for deploying Octopize Avatar platform using Docker Compose.
33
+
34
+ ## Overview
35
+
36
+ This tool simplifies Avatar deployment by:
37
+ - **📦 Standalone package** - No need to clone the entire repository
38
+ - **⬇️ Downloads templates** automatically from GitHub
39
+ - **🎯 Deployment presets** - dev-mode, production, airgapped configurations
40
+ - **🔐 Secure secrets generation** - Automatic creation of encryption keys
41
+ - **✅ Stateless by design** - Minimal bundled dependencies
42
+ - **🔄 Resumable configuration** - State management for interrupted setups
43
+
44
+ ## Architecture
45
+
46
+ ### What's Bundled vs Downloaded
47
+
48
+ **Bundled in PyPI Package:**
49
+ - `configure.py` - Main configuration logic
50
+ - `state_manager.py` - State management for resuming
51
+ - `download_templates.py` - Template downloader
52
+ - `defaults.yaml` - Default values and presets
53
+
54
+ **Downloaded from GitHub (on-demand):**
55
+ - `.env.template` - Environment configuration template
56
+ - `nginx.conf.template` - Nginx configuration template
57
+ - `docker-compose.yml` - Docker services definition
58
+ - `.template-version` - Template version information
59
+ - Other deployment files
60
+
61
+ These templates are located in `docker/templates/` in the avatar-deployment repository.
62
+
63
+ This design means you can install and run the tool without cloning the repository!
64
+
65
+ ## Quick Start
66
+
67
+ ### Option 1: Using uvx (Recommended - After PyPI Publication)
68
+
69
+ ```bash
70
+ uvx octopize-avatar-deploy --output-dir /app/avatar
71
+ ```
72
+
73
+ ### Option 2: Using pip
74
+
75
+ ```bash
76
+ pip install octopize-avatar-deploy
77
+ octopize-avatar-deploy --output-dir /app/avatar
78
+ ```
79
+
80
+ ### Option 3: From Source with uv
81
+
82
+ ```bash
83
+ # Sparse clone (only deployment-tool directory)
84
+ git clone --depth 1 --filter=blob:none --sparse https://github.com/octopize/avatar-deployment
85
+ cd avatar-deployment
86
+ git sparse-checkout set deployment-tool
87
+
88
+ # Run with uv
89
+ cd deployment-tool
90
+ uv run configure.py --output-dir /app/avatar
91
+ ```
92
+
93
+ ## Deployment Presets
94
+
95
+ Choose a preset to quickly configure for your environment:
96
+
97
+ ### `default` - Production Configuration
98
+ - Console logging: **disabled** (use structured logs)
99
+ - Sentry monitoring: **enabled**
100
+ - Telemetry: **enabled**
101
+ - Best for: Production deployments with monitoring
102
+
103
+ ### `dev-mode` - Development Configuration
104
+ - Console logging: **enabled** (see logs in terminal)
105
+ - Sentry monitoring: **disabled**
106
+ - Telemetry: **disabled**
107
+ - Best for: Local development and testing
108
+
109
+ ### `airgapped` - Air-Gapped Deployment
110
+ - Console logging: **disabled**
111
+ - Sentry monitoring: **disabled** (no external connections)
112
+ - Telemetry: **disabled** (no external connections)
113
+ - Best for: Secure, isolated environments
114
+
115
+ ### `custom` - Manual Configuration
116
+ - Configure all options interactively
117
+ - Best for: Specific requirements
118
+
119
+ ## Usage
120
+
121
+ ### Interactive Mode with Preset
122
+
123
+ ```bash
124
+ octopize-avatar-deploy --output-dir /app/avatar --preset dev-mode
125
+ ```
126
+
127
+ The tool will:
128
+ 1. Download latest templates from GitHub
129
+ 2. Apply preset configuration
130
+ 3. Prompt for required values (PUBLIC_URL, ENV_NAME)
131
+ 4. Generate configuration files
132
+
133
+ ### Non-Interactive Mode
134
+
135
+ ```bash
136
+ # Create config file
137
+ cat > my-config.yaml << EOF
138
+ PUBLIC_URL: avatar.mycompany.com
139
+ ENV_NAME: mycompany-prod
140
+ AVATAR_API_VERSION: 2.20.1
141
+ AVATAR_WEB_VERSION: 0.40.0
142
+ MAIL_PROVIDER: smtp
143
+ SMTP_HOST: mail.mycompany.com
144
+ EOF
145
+
146
+ # Run with config
147
+ octopize-avatar-deploy \
148
+ --config my-config.yaml \
149
+ --preset default \
150
+ --non-interactive \
151
+ --output-dir /app/avatar
152
+ ```
153
+
154
+ ### Advanced Options
155
+
156
+ ```bash
157
+ octopize-avatar-deploy \
158
+ --output-dir /app/avatar \
159
+ --preset dev-mode \
160
+ --download-branch main \ # Git branch to download from
161
+ --skip-download \ # Use cached templates
162
+ --save-config \ # Save config to deployment-config.yaml
163
+ --verbose # Show detailed progress
164
+ ```
165
+
166
+ ## Command Line Options
167
+
168
+ ```
169
+ --output-dir DIR Output directory (default: current directory)
170
+ --preset NAME Use preset: default, dev-mode, airgapped
171
+ --config FILE YAML configuration file
172
+ --non-interactive Non-interactive mode (use config/defaults)
173
+ --auth-type TYPE Authentication: email or username (default: email)
174
+ --save-config Save config to deployment-config.yaml
175
+ --download-branch BRANCH Git branch for templates (default: main)
176
+ --skip-download Use cached templates
177
+ --verbose Detailed output
178
+ ```
179
+
180
+ ## What Gets Generated
181
+
182
+ After running the tool, you'll have:
183
+
184
+ ```
185
+ /app/avatar/
186
+ ├── .env # Environment configuration
187
+ ├── nginx.conf # Nginx reverse proxy config
188
+ ├── .secrets/ # Generated secrets (gitignored)
189
+ │ ├── db_password
190
+ │ ├── authentik_secret_key
191
+ │ ├── avatar_api_encryption_key
192
+ │ └── ...
193
+ ├── docker-compose.yml # Downloaded from GitHub
194
+ └── .avatar-templates/ # Cached templates (auto-downloaded)
195
+ ├── .env.template
196
+ ├── nginx.conf.template
197
+ ├── docker-compose.yml
198
+ └── .template-version
199
+ ```
200
+
201
+ ## Configuration Presets in Detail
202
+
203
+ Presets are defined in `defaults.yaml`:
204
+
205
+ ```yaml
206
+ presets:
207
+ default:
208
+ description: "Production-ready with telemetry and monitoring"
209
+ application:
210
+ use_console_logging: "false"
211
+ sentry_enabled: "true"
212
+ telemetry:
213
+ enabled: true
214
+
215
+ dev-mode:
216
+ description: "Development with console logging"
217
+ application:
218
+ use_console_logging: "true"
219
+ sentry_enabled: "false"
220
+ telemetry:
221
+ enabled: false
222
+
223
+ airgapped:
224
+ description: "No external monitoring/telemetry"
225
+ application:
226
+ use_console_logging: "false"
227
+ sentry_enabled: "false"
228
+ telemetry:
229
+ enabled: false
230
+ ```
231
+
232
+ You can override preset values during interactive configuration.
233
+
234
+ ## Template Download Mechanism
235
+
236
+ Templates are downloaded from GitHub on first run:
237
+
238
+ 1. **Check cache** - `.avatar-templates/` directory
239
+ 2. **Download if needed** - From `github.com/octopize/avatar-deployment`
240
+ 3. **Use cached** - On subsequent runs (unless `--skip-download` is used)
241
+
242
+ This ensures:
243
+ - ✅ Always get latest templates (from specified branch)
244
+ - ✅ Offline support (once cached)
245
+ - ✅ No repository cloning required
246
+ - ✅ Minimal package size
247
+
248
+ ## State Management
249
+
250
+ The tool saves progress to `.deployment-state.yaml` allowing you to:
251
+
252
+ - **Resume interrupted configurations**
253
+ - **Track which steps completed**
254
+ - **Avoid re-entering values**
255
+
256
+ Steps:
257
+ 1. Collect required config
258
+ 2. Collect optional config
259
+ 3. Generate .env file
260
+ 4. Generate nginx.conf
261
+ 5. Generate secrets
262
+ 6. Prompt for user secrets (optional)
263
+ 7. Finalize
264
+
265
+ ```bash
266
+ # If interrupted, just run again:
267
+ octopize-avatar-deploy --output-dir /app/avatar
268
+
269
+ # Tool will ask: "Continue from where you left off? [Y/n]"
270
+ ```
271
+
272
+ ## Troubleshooting
273
+
274
+ ### Templates not downloading
275
+
276
+ ```bash
277
+ # Force re-download
278
+ rm -rf .avatar-templates/
279
+ octopize-avatar-deploy --output-dir /app/avatar --verbose
280
+ ```
281
+
282
+ ### Use specific Git branch
283
+
284
+ ```bash
285
+ # Download from development branch
286
+ octopize-avatar-deploy \
287
+ --output-dir /app/avatar \
288
+ --download-branch develop \
289
+ --verbose
290
+ ```
291
+
292
+ ### Offline mode
293
+
294
+ ```bash
295
+ # Download templates once
296
+ octopize-avatar-deploy --output-dir /app/avatar
297
+
298
+ # Then use cached versions
299
+ octopize-avatar-deploy --output-dir /app/avatar --skip-download
300
+ ```
301
+
302
+ ## Development
303
+
304
+ ### Project Structure
305
+
306
+ ```
307
+ deployment-tool/
308
+ ├── configure.py # Main script (bundled)
309
+ ├── state_manager.py # State management (bundled)
310
+ ├── download_templates.py # Template downloader (bundled)
311
+ ├── defaults.yaml # Defaults and presets (bundled)
312
+ ├── tests/ # Test suite
313
+ ├── README.md
314
+ └── pyproject.toml # Package configuration
315
+ ```
316
+
317
+ ### Running Tests
318
+
319
+ ```bash
320
+ cd deployment-tool
321
+ pytest tests/
322
+ ```
323
+
324
+ ### Building Package
325
+
326
+ ```bash
327
+ pip install build
328
+ python -m build
329
+ ```
330
+
331
+ ## Related Documentation
332
+
333
+ - [Deployment Guide](../deploying-on-single-instance.md)
334
+ - [Docker Compose Configuration](../docker-compose.yml)
335
+ - [Migration Guide](../MIGRATION_GUIDE.md)
336
+
337
+ ## Support
338
+
339
+ For issues and questions:
340
+ - Email: help@octopize.io
341
+ - Documentation: https://docs.octopize.io
342
+ - Repository: https://github.com/octopize/avatar-deployment
343
+
344
+ ## License
345
+
346
+ Apache License v2.0
@@ -0,0 +1,317 @@
1
+ # Octopize Avatar Deployment Tool
2
+
3
+ Automated configuration tool for deploying Octopize Avatar platform using Docker Compose.
4
+
5
+ ## Overview
6
+
7
+ This tool simplifies Avatar deployment by:
8
+ - **📦 Standalone package** - No need to clone the entire repository
9
+ - **⬇️ Downloads templates** automatically from GitHub
10
+ - **🎯 Deployment presets** - dev-mode, production, airgapped configurations
11
+ - **🔐 Secure secrets generation** - Automatic creation of encryption keys
12
+ - **✅ Stateless by design** - Minimal bundled dependencies
13
+ - **🔄 Resumable configuration** - State management for interrupted setups
14
+
15
+ ## Architecture
16
+
17
+ ### What's Bundled vs Downloaded
18
+
19
+ **Bundled in PyPI Package:**
20
+ - `configure.py` - Main configuration logic
21
+ - `state_manager.py` - State management for resuming
22
+ - `download_templates.py` - Template downloader
23
+ - `defaults.yaml` - Default values and presets
24
+
25
+ **Downloaded from GitHub (on-demand):**
26
+ - `.env.template` - Environment configuration template
27
+ - `nginx.conf.template` - Nginx configuration template
28
+ - `docker-compose.yml` - Docker services definition
29
+ - `.template-version` - Template version information
30
+ - Other deployment files
31
+
32
+ These templates are located in `docker/templates/` in the avatar-deployment repository.
33
+
34
+ This design means you can install and run the tool without cloning the repository!
35
+
36
+ ## Quick Start
37
+
38
+ ### Option 1: Using uvx (Recommended - After PyPI Publication)
39
+
40
+ ```bash
41
+ uvx octopize-avatar-deploy --output-dir /app/avatar
42
+ ```
43
+
44
+ ### Option 2: Using pip
45
+
46
+ ```bash
47
+ pip install octopize-avatar-deploy
48
+ octopize-avatar-deploy --output-dir /app/avatar
49
+ ```
50
+
51
+ ### Option 3: From Source with uv
52
+
53
+ ```bash
54
+ # Sparse clone (only deployment-tool directory)
55
+ git clone --depth 1 --filter=blob:none --sparse https://github.com/octopize/avatar-deployment
56
+ cd avatar-deployment
57
+ git sparse-checkout set deployment-tool
58
+
59
+ # Run with uv
60
+ cd deployment-tool
61
+ uv run configure.py --output-dir /app/avatar
62
+ ```
63
+
64
+ ## Deployment Presets
65
+
66
+ Choose a preset to quickly configure for your environment:
67
+
68
+ ### `default` - Production Configuration
69
+ - Console logging: **disabled** (use structured logs)
70
+ - Sentry monitoring: **enabled**
71
+ - Telemetry: **enabled**
72
+ - Best for: Production deployments with monitoring
73
+
74
+ ### `dev-mode` - Development Configuration
75
+ - Console logging: **enabled** (see logs in terminal)
76
+ - Sentry monitoring: **disabled**
77
+ - Telemetry: **disabled**
78
+ - Best for: Local development and testing
79
+
80
+ ### `airgapped` - Air-Gapped Deployment
81
+ - Console logging: **disabled**
82
+ - Sentry monitoring: **disabled** (no external connections)
83
+ - Telemetry: **disabled** (no external connections)
84
+ - Best for: Secure, isolated environments
85
+
86
+ ### `custom` - Manual Configuration
87
+ - Configure all options interactively
88
+ - Best for: Specific requirements
89
+
90
+ ## Usage
91
+
92
+ ### Interactive Mode with Preset
93
+
94
+ ```bash
95
+ octopize-avatar-deploy --output-dir /app/avatar --preset dev-mode
96
+ ```
97
+
98
+ The tool will:
99
+ 1. Download latest templates from GitHub
100
+ 2. Apply preset configuration
101
+ 3. Prompt for required values (PUBLIC_URL, ENV_NAME)
102
+ 4. Generate configuration files
103
+
104
+ ### Non-Interactive Mode
105
+
106
+ ```bash
107
+ # Create config file
108
+ cat > my-config.yaml << EOF
109
+ PUBLIC_URL: avatar.mycompany.com
110
+ ENV_NAME: mycompany-prod
111
+ AVATAR_API_VERSION: 2.20.1
112
+ AVATAR_WEB_VERSION: 0.40.0
113
+ MAIL_PROVIDER: smtp
114
+ SMTP_HOST: mail.mycompany.com
115
+ EOF
116
+
117
+ # Run with config
118
+ octopize-avatar-deploy \
119
+ --config my-config.yaml \
120
+ --preset default \
121
+ --non-interactive \
122
+ --output-dir /app/avatar
123
+ ```
124
+
125
+ ### Advanced Options
126
+
127
+ ```bash
128
+ octopize-avatar-deploy \
129
+ --output-dir /app/avatar \
130
+ --preset dev-mode \
131
+ --download-branch main \ # Git branch to download from
132
+ --skip-download \ # Use cached templates
133
+ --save-config \ # Save config to deployment-config.yaml
134
+ --verbose # Show detailed progress
135
+ ```
136
+
137
+ ## Command Line Options
138
+
139
+ ```
140
+ --output-dir DIR Output directory (default: current directory)
141
+ --preset NAME Use preset: default, dev-mode, airgapped
142
+ --config FILE YAML configuration file
143
+ --non-interactive Non-interactive mode (use config/defaults)
144
+ --auth-type TYPE Authentication: email or username (default: email)
145
+ --save-config Save config to deployment-config.yaml
146
+ --download-branch BRANCH Git branch for templates (default: main)
147
+ --skip-download Use cached templates
148
+ --verbose Detailed output
149
+ ```
150
+
151
+ ## What Gets Generated
152
+
153
+ After running the tool, you'll have:
154
+
155
+ ```
156
+ /app/avatar/
157
+ ├── .env # Environment configuration
158
+ ├── nginx.conf # Nginx reverse proxy config
159
+ ├── .secrets/ # Generated secrets (gitignored)
160
+ │ ├── db_password
161
+ │ ├── authentik_secret_key
162
+ │ ├── avatar_api_encryption_key
163
+ │ └── ...
164
+ ├── docker-compose.yml # Downloaded from GitHub
165
+ └── .avatar-templates/ # Cached templates (auto-downloaded)
166
+ ├── .env.template
167
+ ├── nginx.conf.template
168
+ ├── docker-compose.yml
169
+ └── .template-version
170
+ ```
171
+
172
+ ## Configuration Presets in Detail
173
+
174
+ Presets are defined in `defaults.yaml`:
175
+
176
+ ```yaml
177
+ presets:
178
+ default:
179
+ description: "Production-ready with telemetry and monitoring"
180
+ application:
181
+ use_console_logging: "false"
182
+ sentry_enabled: "true"
183
+ telemetry:
184
+ enabled: true
185
+
186
+ dev-mode:
187
+ description: "Development with console logging"
188
+ application:
189
+ use_console_logging: "true"
190
+ sentry_enabled: "false"
191
+ telemetry:
192
+ enabled: false
193
+
194
+ airgapped:
195
+ description: "No external monitoring/telemetry"
196
+ application:
197
+ use_console_logging: "false"
198
+ sentry_enabled: "false"
199
+ telemetry:
200
+ enabled: false
201
+ ```
202
+
203
+ You can override preset values during interactive configuration.
204
+
205
+ ## Template Download Mechanism
206
+
207
+ Templates are downloaded from GitHub on first run:
208
+
209
+ 1. **Check cache** - `.avatar-templates/` directory
210
+ 2. **Download if needed** - From `github.com/octopize/avatar-deployment`
211
+ 3. **Use cached** - On subsequent runs (unless `--skip-download` is used)
212
+
213
+ This ensures:
214
+ - ✅ Always get latest templates (from specified branch)
215
+ - ✅ Offline support (once cached)
216
+ - ✅ No repository cloning required
217
+ - ✅ Minimal package size
218
+
219
+ ## State Management
220
+
221
+ The tool saves progress to `.deployment-state.yaml` allowing you to:
222
+
223
+ - **Resume interrupted configurations**
224
+ - **Track which steps completed**
225
+ - **Avoid re-entering values**
226
+
227
+ Steps:
228
+ 1. Collect required config
229
+ 2. Collect optional config
230
+ 3. Generate .env file
231
+ 4. Generate nginx.conf
232
+ 5. Generate secrets
233
+ 6. Prompt for user secrets (optional)
234
+ 7. Finalize
235
+
236
+ ```bash
237
+ # If interrupted, just run again:
238
+ octopize-avatar-deploy --output-dir /app/avatar
239
+
240
+ # Tool will ask: "Continue from where you left off? [Y/n]"
241
+ ```
242
+
243
+ ## Troubleshooting
244
+
245
+ ### Templates not downloading
246
+
247
+ ```bash
248
+ # Force re-download
249
+ rm -rf .avatar-templates/
250
+ octopize-avatar-deploy --output-dir /app/avatar --verbose
251
+ ```
252
+
253
+ ### Use specific Git branch
254
+
255
+ ```bash
256
+ # Download from development branch
257
+ octopize-avatar-deploy \
258
+ --output-dir /app/avatar \
259
+ --download-branch develop \
260
+ --verbose
261
+ ```
262
+
263
+ ### Offline mode
264
+
265
+ ```bash
266
+ # Download templates once
267
+ octopize-avatar-deploy --output-dir /app/avatar
268
+
269
+ # Then use cached versions
270
+ octopize-avatar-deploy --output-dir /app/avatar --skip-download
271
+ ```
272
+
273
+ ## Development
274
+
275
+ ### Project Structure
276
+
277
+ ```
278
+ deployment-tool/
279
+ ├── configure.py # Main script (bundled)
280
+ ├── state_manager.py # State management (bundled)
281
+ ├── download_templates.py # Template downloader (bundled)
282
+ ├── defaults.yaml # Defaults and presets (bundled)
283
+ ├── tests/ # Test suite
284
+ ├── README.md
285
+ └── pyproject.toml # Package configuration
286
+ ```
287
+
288
+ ### Running Tests
289
+
290
+ ```bash
291
+ cd deployment-tool
292
+ pytest tests/
293
+ ```
294
+
295
+ ### Building Package
296
+
297
+ ```bash
298
+ pip install build
299
+ python -m build
300
+ ```
301
+
302
+ ## Related Documentation
303
+
304
+ - [Deployment Guide](../deploying-on-single-instance.md)
305
+ - [Docker Compose Configuration](../docker-compose.yml)
306
+ - [Migration Guide](../MIGRATION_GUIDE.md)
307
+
308
+ ## Support
309
+
310
+ For issues and questions:
311
+ - Email: help@octopize.io
312
+ - Documentation: https://docs.octopize.io
313
+ - Repository: https://github.com/octopize/avatar-deployment
314
+
315
+ ## License
316
+
317
+ Apache License v2.0