Compare commits

..
711 Commits
Author SHA1 Message Date
Carlos Bordon 5558b87c88 Merge pull request #2521 from wazuh/merge-4.14.7-into.5.0.0
Merge 4.14.7 into.5.0.0
2026-07-02 10:43:07 -03:00
Gonzalo Acuña e6f11f8dea Merge branch '5.0.0' into merge-4.14.7-into.5.0.0
Signed-off-by: Gonzalo Acuña <33964202+teddytpc1@users.noreply.github.com>
2026-07-02 10:37:43 -03:00
Wazuh CI ae059f2b2e Merge pull request #2520 from wazuh/enhancement/wqa8012-bump-5.0.0
Bump 5.0.0 branch
2026-07-02 14:34:24 +02:00
wazuhci 07b8ca9d16 feat: bump 5.0.0 2026-07-02 12:34:19 +00:00
Gonzalo Acuña f8dbec813f Merge pull request #2517 from wazuh/bug/2477-bumper-script-issue-when-the-tag-is-set-to-false
Fixed bumper including missing tag input
2026-07-02 08:49:36 -03:00
Carlos Anguita López 905b5b9a93 update changelog 2026-07-02 13:48:05 +02:00
Carlos Anguita 024a32bc15 Merge branch '5.0.0' into bug/2477-bumper-script-issue-when-the-tag-is-set-to-false 2026-07-02 11:54:09 +02:00
Carlos Anguita López bfe8dc4484 add logic to accept version, stage and tag input together 2026-07-01 16:24:48 +02:00
Gonzalo Acuña 452e8aa073 Merge pull request #2502 from wazuh/change/5303-change-artifact-upload-download
Change artifact upload and download
2026-06-30 14:40:02 -03:00
Victor Carlos Erenu e18a5a7be9 Change secret name 2026-07-01 00:06:34 +07:00
Victor Carlos Erenu f2dd1d7f79 Change secret name 2026-07-01 00:06:13 +07:00
Gonzalo Acuña ea6bc171b6 Merge pull request #2504 from wazuh/change/5303-change-artifact-upload-download-4.x
Change upload and download methods
2026-06-30 13:49:50 -03:00
fcaffieri 04af11919c Remove md report of fixes 2026-06-30 13:35:28 -03:00
fcaffieri fa8d6b3de9 Add support for generate_presigned_dev_urls srcipt 2026-06-30 13:34:46 -03:00
Victor Carlos Erenu 21c6a01579 change of quotation mark type 2026-06-30 22:54:11 +07:00
Victor Carlos Erenu 8f0ae452cb Add path verification 2026-06-30 22:45:07 +07:00
Victor Carlos Erenu 5a9355c1ae Change upload and download methods 2026-06-30 20:38:52 +07:00
Victor Carlos Erenu b1af5a8357 Change upload and download methods 2026-06-30 19:42:39 +07:00
Victor Carlos Erenu 3df074ee9d Change upload and download methods 2026-06-30 19:27:36 +07:00
Victor Carlos Erenu 0548e0da2a Change upload and download methods 2026-06-30 19:19:28 +07:00
Victor Carlos Erenu e3d402a190 Change upload and download methods 2026-06-30 18:45:20 +07:00
Victor Carlos Erenu 14cdfe9bd6 Change upload and download methods 2026-06-30 18:05:30 +07:00
Gonzalo Acuña 60d80917f5 Merge pull request #2505 from wazuh/change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker
Added bump-issue-link support for Revert Stage Bump
2026-06-29 15:36:24 -03:00
Carlos Bordon 998ac07576 Updated changelog 2026-06-29 15:31:52 -03:00
Wazuh CI ed8970d642 Merge pull request #2509 from wazuh/enhancement/wqa2507-revert-bump-change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker
Revert bump change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker branch
2026-06-29 20:26:19 +02:00
wazuhci fb90896200 feat: revert change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker references 2026-06-29 18:26:14 +00:00
Wazuh CI 51572613ab Merge pull request #2508 from wazuh/enhancement/wqa2506-bump-change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker
Bump change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker branch
2026-06-29 20:24:48 +02:00
wazuhci 20745769bd feat: bump change/2460-add-bump-issue-link-support-for-revert-stage-bump-in-wazuh-docker 2026-06-29 18:24:41 +00:00
Carlos Bordon 217b7c868a Added bump-issue-link support for Revert Stage Bump 2026-06-29 15:16:32 -03:00
Carlos Anguita López 90120cd9fc add input tag and adapt logic 2026-06-29 16:23:39 +02:00
Gonzalo Acuña b1cfa44f2f Merge pull request #2491 from wazuh/enhancement/3277-add-wazuh-devops-test-module-doc
Add integration test module docs
2026-06-26 13:59:57 -03:00
Gonzalo Acuña 40d7702ee5 Merge branch '5.0.0' into enhancement/3277-add-wazuh-devops-test-module-doc 2026-06-26 13:50:16 -03:00
fcaffieri a8db1820a6 Add integration test docs 2026-06-26 12:50:58 -03:00
fcaffieri d43ae89451 update CHANGELOG 2026-06-26 12:50:40 -03:00
Gonzalo Acuña a215bf5a9e Merge pull request #2499 from wazuh/merge-4.14.7-into-5.0.0
Merge 4.14.7 into 5.0.0
2026-06-26 10:01:08 -03:00
Victor Carlos Erenu d67d766983 Resolving conflicts 2026-06-26 19:57:59 +07:00
Carlos Bordon b51db5be38 Merge pull request #2498 from wazuh/merge-4.14.6-into-4.14.7
Merge 4.14.6 into 4.14.7
2026-06-26 09:42:38 -03:00
Victor Carlos Erenu 3051d11c55 Resolving conflicts 2026-06-26 19:31:28 +07:00
Carlos Anguita 499184cbeb Revert retag v4.14.6-rc2 (#2496) 2026-06-26 13:17:06 +02:00
Carlos Anguita a36afdcf36 Retag v4.14.6-rc2 (#2495) 2026-06-26 13:06:54 +02:00
Julia Magán 9d34602ce6 Merge pull request #2494 from wazuh/bug/2492-push-docker-images-fails-for-4146-rc-2
Fixed login in Docker Hub before triggering the QEMU action
2026-06-26 12:50:54 +02:00
Carlos Anguita López b24e9558bb update changelog 2026-06-26 12:38:31 +02:00
Carlos Anguita López 31b5b475fe log in docker before triggering the QEMU action 2026-06-26 12:02:36 +02:00
Gonzalo Acuña b6ddd4a66e Merge pull request #2482 from wazuh/change/3418-revamp-changelog
Apply new changelog definitions
2026-06-25 12:05:16 -03:00
Victor Carlos Erenu eafea2e8b4 Apply new changelog definitions 2026-06-25 20:55:20 +07:00
Victor Ereñú 8cb1db4eca Revert 4.14.6-rc2 image tags (#2487) 2026-06-25 13:23:02 +02:00
Wazuh CI 8dd3df1e20 Merge pull request #2486 from wazuh/enhancement/wqa7876-bump-4.14.6
Bump 4.14.6 branch
2026-06-25 11:32:55 +02:00
wazuhci 2b79c8d412 feat: bump 4.14.6 2026-06-25 09:32:48 +00:00
Victor Carlos Erenu 3803e9accd Apply new changelog definitions 2026-06-24 23:30:35 +07:00
Gonzalo Acuña f92b6b1e8a Merge pull request #2480 from wazuh/merge-4.14.7-into-5.0.0
Merge 4.14.7 into 5.0.0
2026-06-24 09:37:40 -03:00
Victor Carlos Erenu 3a5e345894 Resolving conflicts 2026-06-23 22:56:12 +07:00
Gonzalo Acuña 704ce6dc07 Merge pull request #2478 from wazuh/merge-4.14.6-into-4.14.7
Merge 4.14.6 into 4.14.7
2026-06-23 11:17:55 -03:00
Victor Carlos Erenu 7feacc4403 Update LTS changelog 2026-06-23 21:12:27 +07:00
Victor Carlos Erenu 6e2c61d462 Merge branch '4.14.7' of github.com:wazuh/wazuh-docker into merge-4.14.6-into-4.14.7 2026-06-23 20:55:15 +07:00
Gonzalo Acuña 7899d39155 Merge pull request #2470 from wazuh/change/3493-change-runners-4.14.6
Change runners on repository workflows 4.14.6
2026-06-23 09:35:09 -03:00
Gonzalo Acuña e0ad433d59 Merge pull request #2471 from wazuh/change/3493-change-runners-5.x
Change runners on repository workflows 5.x
2026-06-23 09:28:11 -03:00
Victor Carlos Erenu b14c5535ed Merge branch '5.0.0' of github.com:wazuh/wazuh-docker into change/3493-change-runners-5.x 2026-06-22 22:34:59 +07:00
Carlos Bordon 94f01fb7b0 Merge pull request #2476 from wazuh/change/2475-fix-500-branch-after-bump
Fixed 5.0.0 branch references after bump
2026-06-22 11:50:39 -03:00
Carlos Bordon 2fceb8c110 Fixed 5.0.0 branch references after bump 2026-06-22 11:48:22 -03:00
Victor Carlos Erenu 712489f131 change runners for 4.x workflows 2026-06-22 20:32:12 +07:00
Victor Carlos Erenu aae5a6d44a Merge branch '5.0.0' of github.com:wazuh/wazuh-docker into change/3493-change-runners-5.x 2026-06-22 19:53:45 +07:00
Victor Carlos Erenu 0c04e23e41 Update changelog 2026-06-22 19:40:51 +07:00
Victor Carlos Erenu 6371c2497f Update changelog 2026-06-22 19:21:20 +07:00
Wazuh CI fa09e68533 Merge pull request #2472 from wazuh/enhancement/wqa7796-bump-5.0.0
Bump 5.0.0 branch
2026-06-22 14:19:32 +02:00
wazuhci 749763c547 feat: bump 5.0.0 2026-06-22 12:19:27 +00:00
Victor Carlos Erenu 33d0fc3462 Change Docker login step 2026-06-20 00:47:42 +07:00
Victor Carlos Erenu fde156181a Change runners name 2026-06-20 00:40:35 +07:00
Victor Carlos Erenu 4ad604f33c Change runners on repository workflows 2026-06-20 00:32:06 +07:00
Victor Carlos Erenu 67df871d7d Add docker login 2026-06-19 23:39:54 +07:00
Victor Carlos Erenu 97f687c409 Add docker login 2026-06-19 22:37:58 +07:00
Victor Carlos Erenu 95d142a9b7 Add docker login 2026-06-19 22:23:40 +07:00
Victor Carlos Erenu b6fb072693 Delete goss test 2026-06-19 20:51:53 +07:00
Victor Carlos Erenu 27287b1e19 Adapt goss run with codebuild configuration 2026-06-19 19:24:22 +07:00
Victor Carlos Erenu a185f0dc75 Change runners on repository workflows 2026-06-19 18:37:55 +07:00
Victor Carlos Erenu 92866daabb Change runners on repository workflows 2026-06-19 18:23:43 +07:00
Victor Carlos Erenu fd6e53b1e3 Change runners on repository workflows 2026-06-19 18:16:54 +07:00
Gonzalo Acuña 82027cf53f Merge pull request #2445 from wazuh/change/3418-pr-revamp-4.x
PR revamp modifications 4.x
2026-06-16 10:52:15 -03:00
Gonzalo Acuña 564bd29e9b Merge pull request #2446 from wazuh/change/3418-pr-revamp-5.x
PR revamp modifications 5.x
2026-06-16 10:52:07 -03:00
Victor Carlos Erenu c6c00fa9db Change PR check name 2026-06-16 20:06:29 +07:00
Victor Carlos Erenu ef52a72417 Change workflow name 2026-06-16 18:59:23 +07:00
Victor Carlos Erenu 32b5377e53 Update changelog 2026-06-10 23:25:07 +07:00
Victor Carlos Erenu 70f585de4d Update changelog 2026-06-10 23:23:32 +07:00
Victor Carlos Erenu 271f6c2eb8 Add types 2026-06-10 21:14:32 +07:00
Victor Carlos Erenu 07368ab1e7 Add types 2026-06-10 21:14:03 +07:00
Victor Carlos Erenu 669560769a Merge branch 'main' of github.com:wazuh/wazuh-docker into change/3418-pr-revamp-5.x 2026-06-10 21:08:09 +07:00
Victor Carlos Erenu 01b7e6de60 Add affected branchs 2026-06-10 21:06:12 +07:00
Victor Carlos Erenu 644cdba3a9 Add affected branchs 2026-06-10 21:04:49 +07:00
Victor Carlos Erenu 68faac3ac1 Move the Wazuh version of the workflow name from the end to the beginning 2026-06-10 20:16:37 +07:00
Victor Carlos Erenu b509441887 Move the Wazuh version of the workflow name from the end to the beginning 2026-06-10 20:12:21 +07:00
Marcos Sánchez Delgado 1ec0ec5fbe Merge pull request #2448 from wazuh/revert-2447-enhancement/wqa7556-bump-main
Revert "Bump main branch"
2026-06-09 17:51:29 +02:00
Marcos Sánchez Delgado f6a7b9765c Update version stage from beta2 to beta3
Signed-off-by: Marcos Sánchez Delgado <101177239+MARCOSD4@users.noreply.github.com>
2026-06-09 17:50:33 +02:00
Marcos Sánchez Delgado f73b2a9946 Revert "Bump main branch" 2026-06-09 17:49:32 +02:00
Wazuh CI d121ebc067 Merge pull request #2447 from wazuh/enhancement/wqa7556-bump-main
Bump main branch
2026-06-09 17:29:49 +02:00
wazuhci 4d1530fc97 feat: bump main 2026-06-09 15:29:44 +00:00
Victor Carlos Erenu 16d0b02ff5 PR revamp modifications 2026-06-09 02:20:08 +07:00
Victor Carlos Erenu e181132921 PR revamp modifications 2026-06-09 01:51:42 +07:00
Gonzalo Acuña e7d724e631 Merge pull request #2444 from wazuh/bug/2443-fix-reported-wf-vulnerabilities
Fix WF docker images vulnerabilities
2026-06-08 11:59:03 -03:00
fcaffieri 2436b23032 Update CHANGELOG 2026-06-08 10:25:13 -03:00
fcaffieri 77c66b89b7 Fix WF docker images vulnerabilities 2026-06-05 17:30:02 -03:00
Gonzalo Acuña 0a25b40745 Merge pull request #2428 from wazuh/enhancement/2188-wazuh-docker-integration-tests
Implement the wazuh-docker integration testing module
2026-06-03 15:02:36 -03:00
Carlos Bordon 22617992ce Merge branch 'main' into enhancement/2188-wazuh-docker-integration-tests 2026-06-03 14:20:29 -03:00
Gonzalo Acuña 91af732e64 Merge pull request #2442 from wazuh/merge-4.14.7-into-main
Merge 4.14.7 into main
2026-06-03 10:03:35 -03:00
Victor Carlos Erenu 143a0bb598 Merge branch 'main' of github.com:wazuh/wazuh-docker into merge-4.14.7-into-main 2026-06-03 18:19:44 +07:00
Gonzalo Acuña b5ab0bb116 Merge pull request #2440 from wazuh/merge-4.14.6-into-4.14.7
Merge 4.14.6 into 4.14.7
2026-06-02 16:10:03 -03:00
Victor Carlos Erenu 7eb415ae3c Resolving conflicts 2026-06-02 22:52:41 +07:00
Gonzalo Acuña 4879dba2ce Merge pull request #2439 from wazuh/merge-LTS-changelog-into-4.14.6
Add LTS Changelog entries into 4.14.6 branch
2026-06-02 12:24:57 -03:00
Victor Carlos Erenu ad96562a5b Add LTS Changelog entries into 4.14.6 branch 2026-06-02 19:21:11 +07:00
fcaffieri 68a50f2bc5 Add test plan to github summary 2026-05-29 15:47:07 -03:00
fcaffieri 7598697f3b Add test cases if only version is pass through input parameter 2026-05-29 15:06:40 -03:00
fcaffieri 6dd0716918 Fix case of registry prod and version y revision parameters inputs 2026-05-29 13:11:24 -03:00
fcaffieri f79abbf64a Add registry parameter 2026-05-29 12:12:05 -03:00
fcaffieri 3f27301ba1 Add registry parameter 2026-05-29 12:12:00 -03:00
fcaffieri 31d8b1566c Update CHANGELOG 2026-05-29 10:44:59 -03:00
fcaffieri 9bed763ce5 Remove steps used for debug 2026-05-29 10:43:30 -03:00
fcaffieri 9966909cc3 Merge branch 'enhancement/2188-wazuh-docker-integration-tests' of https://github.com/wazuh/wazuh-docker into enhancement/2188-wazuh-docker-integration-tests 2026-05-29 10:35:39 -03:00
fcaffieri 2f4ab3f71e Fix copilot suggestions 2026-05-29 10:35:13 -03:00
Federico Caffieri 35eb02d856 Merge branch 'main' into enhancement/2188-wazuh-docker-integration-tests 2026-05-29 10:31:15 -03:00
1106e7cdb4 Merge 4.14.7 into main (#2438)
* feat: bump 4.14.6

* Revert "Bump 4.14.6 branch"

* feat: bump 4.14.6

* Revert Image tag to 4.14.6 (#2434)

---------

Co-authored-by: Wazuh CI <22834044+wazuhci@users.noreply.github.com>
Co-authored-by: Marcos Sánchez Delgado <101177239+MARCOSD4@users.noreply.github.com>
Co-authored-by: Julia Magán <80041853+juliamagan@users.noreply.github.com>
Co-authored-by: Victor Ereñú <56500015+vcerenu@users.noreply.github.com>
2026-05-29 12:33:25 +02:00
f26185d10a Merge merge-4.14.6-into-4.14.7 into 4.14.7 [automated] (#2436)
* feat: bump 4.14.6

* Revert "Bump 4.14.6 branch"

* feat: bump 4.14.6

* Revert Image tag to 4.14.6 (#2434)

---------

Co-authored-by: Marcos Sánchez Delgado <101177239+MARCOSD4@users.noreply.github.com>
Co-authored-by: Julia Magán <80041853+juliamagan@users.noreply.github.com>
Co-authored-by: Victor Ereñú <56500015+vcerenu@users.noreply.github.com>
Co-authored-by: Enrique Araque <minixute@gmail.com>
2026-05-29 12:29:22 +02:00
fcaffieri fb2148da39 Add logic to use -latest if dev images 2026-05-28 21:55:05 -03:00
fcaffieri df1ef1cb1f Add missing param list into build image WF call 2026-05-28 21:35:13 -03:00
fcaffieri 29d43e591e Add registry dev or prod param 2026-05-28 20:36:46 -03:00
fcaffieri af388f132a Add docker image build and push call 2026-05-28 20:27:36 -03:00
Victor Ereñú ced3ac5b63 Revert Image tag to 4.14.6 (#2434) 2026-05-28 12:17:48 +02:00
Wazuh CI 5d3d85c690 Merge pull request #2433 from wazuh/enhancement/wqa7441-bump-4.14.6
Bump 4.14.6 branch
2026-05-28 11:22:54 +02:00
wazuhci 3a68597fa9 feat: bump 4.14.6 2026-05-28 09:22:46 +00:00
Julia Magán 4c1a286578 Merge pull request #2432 from wazuh/revert-2431-enhancement/wqa7441-bump-4.14.6
Revert "Bump 4.14.6 branch"
2026-05-28 11:17:35 +02:00
Marcos Sánchez Delgado 072f5f1407 Revert "Bump 4.14.6 branch" 2026-05-28 11:09:02 +02:00
Wazuh CI 6fbb0c5af5 Merge pull request #2431 from wazuh/enhancement/wqa7441-bump-4.14.6
Bump 4.14.6 branch
2026-05-28 10:56:33 +02:00
wazuhci c71ff5e51f feat: bump 4.14.6 2026-05-28 08:56:25 +00:00
Federico Caffieri 2bef0aa78c Merge branch 'main' into enhancement/2188-wazuh-docker-integration-tests 2026-05-27 18:24:32 -03:00
fcaffieri 2698ef8c2c Add revision tests 2026-05-27 18:21:07 -03:00
fcaffieri 47287f7ee3 Add sleep for dashboard to single and multi node test 2026-05-27 18:12:02 -03:00
Gonzalo Acuña ded51b6e96 Merge pull request #2427 from wazuh/change/2422-wazuh-manager-healthcheck
Adapt Wazuh manager healthcheck with local binaries
2026-05-27 13:38:44 -03:00
Victor Carlos Erenu b34ab60fdb Update changelog 2026-05-27 22:43:06 +07:00
Victor Carlos Erenu 3f16c3b9b9 Change Wazuh manager healthcheck 2026-05-27 01:41:44 +07:00
fcaffieri f4f7af55ff Add wait for multi-node delay configurations 2026-05-22 19:24:53 -03:00
fcaffieri d46f24c707 Add version for test version 2026-05-22 18:27:31 -03:00
Carlos Bordon 96308e55ce Merge pull request #2426 from wazuh/merge-4.14.7-into-main
Merge 4.14.7 into main
2026-05-22 10:00:06 -03:00
Gonzalo Acuña 3b3ad41314 Changelog fix 2026-05-22 09:58:57 -03:00
Gonzalo Acuña 6c5d14cb55 Conflicts resolution 2026-05-22 09:47:29 -03:00
fcaffieri 1bb1ddda73 Log certificates permission 2026-05-21 20:58:48 -03:00
fcaffieri d888b01e9e Fix certificate greneration 2026-05-21 19:52:22 -03:00
fcaffieri 89174ffc61 Generate all files and then copy into VM all together 2026-05-21 18:38:09 -03:00
fcaffieri 306acecc48 Add dev flag to parse revision beta1 2026-05-21 15:59:41 -03:00
fcaffieri aa275c4f1e Add steps for certificates creation 2026-05-21 15:06:09 -03:00
Wazuh CI 9093e85c18 Merge pull request #2421 from wazuh/enhancement/wqa7360-bump-4.14.7
Bump 4.14.7 branch
2026-05-21 19:14:25 +02:00
wazuhci d60510a2ac feat: bump 4.14.7 2026-05-21 17:14:13 +00:00
fcaffieri 13cad85988 Add debug to critical steps 2026-05-21 12:39:34 -03:00
Wazuh CI 07c3948dce Merge pull request #2418 from wazuh/enhancement/wqa7336-revert-bump-main
Revert bump main branch
2026-05-21 16:26:42 +02:00
wazuhci c2a385083b feat: revert main references 2026-05-21 14:26:35 +00:00
fcaffieri e774a93f9a Fix github secrets 2026-05-21 10:53:37 -03:00
fcaffieri 3811e886a0 Fix matrix input 2026-05-21 10:39:45 -03:00
Carlos Bordon a0d808c0d6 Merge pull request #2410 from wazuh/enhancement/2188-wazuh-docker-integration-tests-create-WF
Create WF into main branch
2026-05-21 08:02:08 -03:00
Carlos Bordon a6fe792ec3 Merge branch 'main' into enhancement/2188-wazuh-docker-integration-tests-create-WF 2026-05-21 08:00:14 -03:00
Wazuh CI 5c1dfafdd7 Merge pull request #2415 from wazuh/enhancement/wqa7336-bump-main
Bump main branch
2026-05-21 12:08:43 +02:00
wazuhci 88ef9edf19 feat: bump main 2026-05-21 10:08:36 +00:00
fcaffieri 9c9f1bccbc Create WF into main branch 2026-05-20 17:32:06 -03:00
fcaffieri d47e4a43e9 Revert change maded for tests 2026-05-20 17:25:34 -03:00
fcaffieri d168d7d86f Upload WF only for test 2026-05-20 17:23:43 -03:00
fcaffieri d7a27eb63a Create WF for integration testing 2026-05-20 17:22:46 -03:00
Gonzalo Acuña 03c6ea62ca Merge pull request #2406 from wazuh/bug/2404-wazuh-manager4104-rc1-docker-container-fails-to-start-error-5011-in-create_userpy-4.14.6
Changed `update_user` function from `wazuh.security` to `wazuh.rbac.orm` module
2026-05-19 12:24:11 -03:00
Carlos Anguita López 61050a7dd2 update changelog 2026-05-19 17:15:23 +02:00
Carlos Anguita López b07223d1d3 change update_user used function from wazuh.security to wazuh.rbac.orm 2026-05-19 17:10:56 +02:00
Carlos Anguita López 7fe0c468e8 delete certs tests from goss.yaml 2026-05-19 17:10:09 +02:00
Carlos Bordon 54b4f68a28 Merge pull request #2399 from wazuh/change/3262-avoid-running-gh-workflows-on-draft-prs
Forbid pr_check workflow execution in draft PRs
2026-05-19 08:30:29 -03:00
Enrique Araque 2fd6f5aeb7 Update changelog 2026-05-14 15:42:43 +02:00
Enrique Araque bd9286b225 remove unnecesary conditions 2026-05-14 15:39:54 +02:00
Enrique Araque 8bac944a92 forbid pr check workflow execution in draft prs 2026-05-14 15:29:33 +02:00
Gonzalo Acuña b5c43c34e7 Merge pull request #2393 from wazuh/change/2375-change-uid-gid-on-wazuh-images
Unification of user UID and GID
2026-05-13 14:08:04 -03:00
Victor Carlos Erenu 03a27b5645 Fix find command on wazuh manager init 2026-05-13 22:19:05 +07:00
Victor Carlos Erenu a70b0bd492 Change UID user on build stage 2026-05-13 21:23:26 +07:00
Victor Carlos Erenu 6b9e2fbfb3 Add changelog 2026-05-13 00:24:42 +07:00
Victor Carlos Erenu b06d9c97bc Change root-ca certificates path 2026-05-13 00:05:08 +07:00
Victor Carlos Erenu c137354203 Change UID and GID of owner users 2026-05-12 21:04:22 +07:00
Gonzalo Acuña 388b2c2225 Merge pull request #2390 from wazuh/change/indexer-engine-start
Add Wazuh indexer engine start on entrypoint
2026-05-11 16:58:31 -03:00
Victor Carlos Erenu 92c091d977 Add changelog 2026-05-12 02:40:07 +07:00
Victor Carlos Erenu 7927df1d34 Change image version for test deployment 2026-05-12 01:29:55 +07:00
Victor Carlos Erenu 3b4cc5973c Change image version for test deployment 2026-05-12 00:04:45 +07:00
Victor Carlos Erenu fab6c9ce6e Change image version for test deployment 2026-05-11 23:43:22 +07:00
Victor Carlos Erenu ccf61969ff Change image version for test deployment 2026-05-11 23:06:25 +07:00
Victor Carlos Erenu 28a9485f2c Change image version for test deployment 2026-05-11 22:36:27 +07:00
Victor Carlos Erenu 77c8526c1c Add Wazuh indexer engine start on entrypoint 2026-05-11 21:44:42 +07:00
Gonzalo Acuña 239dee0ebe Merge pull request #2358 from wazuh/enhancement/change-image-build-process
Image build process update
2026-05-05 16:18:20 -03:00
Victor Carlos Erenu 00fb4eac7b Add changelog 2026-04-30 18:01:09 +07:00
Victor Carlos Erenu f5c6655b4e fix artifact-urls directory 2026-04-30 02:17:51 +07:00
Victor Carlos Erenu 684ba9ba26 fix artifact-urls directory 2026-04-29 23:48:21 +07:00
Victor Carlos Erenu 77d4b938a6 Change image build process 2026-04-29 23:11:51 +07:00
Victor Carlos Erenu 6b744ec15f Change image build process 2026-04-29 00:27:20 +07:00
Victor Carlos Erenu b0ec957542 Change image build process 2026-04-28 22:46:56 +07:00
Victor Carlos Erenu 2a49af4249 Change image build process 2026-04-28 20:48:45 +07:00
Victor Carlos Erenu 2131887019 Change image build process 2026-04-28 20:16:38 +07:00
Gonzalo Acuña 93ac3e59f9 Merge pull request #2350 from wazuh/merge-4.14.6.into-main
Merge 4.14.6 into main
2026-04-27 10:07:10 -03:00
Victor Carlos Erenu e3b30d3d23 Merge branch 'main' of github.com:wazuh/wazuh-docker into merge-4.14.6.into-main 2026-04-27 20:03:28 +07:00
Gonzalo Acuña dd1b0e9afa Merge pull request #2349 from wazuh/merge-4.14.5.into-4.14.6
Merge 4.14.5 into 4.14.6
2026-04-27 09:58:19 -03:00
Victor Carlos Erenu 601adce637 Add newline 2026-04-27 19:41:40 +07:00
Victor Carlos Erenu 992a78c4a0 Resolving conflicts 2026-04-27 19:31:00 +07:00
Gonzalo Acuña 325371a644 Merge pull request #2344 from wazuh/change/2333-change-new-path-artifact_urls-file
Add new path on artifact_urls file
2026-04-24 16:46:48 -03:00
Gonzalo Acuña 8d9afc6037 Merge branch 'main' into change/2333-change-new-path-artifact_urls-file 2026-04-24 15:55:41 -03:00
Gonzalo Acuña 739dbca613 Merge pull request #2345 from wazuh/bug/2337-delete-setcap
Delete setcap command on deprecated file
2026-04-24 15:54:16 -03:00
Victor Carlos Erenu 6feb42ab07 Merge branch 'main' of github.com:wazuh/wazuh-docker into bug/2337-delete-setcap 2026-04-25 01:34:27 +07:00
Victor Carlos Erenu 75959484f3 Resolving conflicts 2026-04-25 01:33:21 +07:00
Victor Carlos Erenu ebbf3b585f Update artifact_urls directory path 2026-04-25 01:32:02 +07:00
Gonzalo Acuña 3384ccbc9b Merge pull request #2346 from wazuh/change/2341-dev-images-build
Presigned URLs generation enhancement
2026-04-24 15:29:11 -03:00
Gonzalo Acuña 38a9c54eea Changelog update 2026-04-24 15:16:20 -03:00
Gonzalo Acuña 3f9f48302a Presigned URLs generation enhancement 2026-04-24 14:54:33 -03:00
Victor Carlos Erenu 28fefbc5b6 Add changelog 2026-04-24 22:52:01 +07:00
Victor Carlos Erenu df8c1555ed Merge branch 'main' of github.com:wazuh/wazuh-docker into change/2333-change-new-path-artifact_urls-file 2026-04-24 22:49:21 +07:00
Victor Carlos Erenu 1c527dc643 Merge branch 'main' of github.com:wazuh/wazuh-docker into bug/2337-delete-setcap 2026-04-24 20:36:40 +07:00
Victor Carlos Erenu 9e086e4eab Add changelog 2026-04-24 20:36:05 +07:00
Victor Carlos Erenu 1fddae6f5c Delete setcap command on deprecated file 2026-04-24 20:31:48 +07:00
Gonzalo Acuña 5950bdc474 Merge pull request #2330 from wazuh/enhancement/2320-add-revert-option
Add revert option into bumper workflow
2026-04-24 10:19:18 -03:00
Victor Carlos Erenu ad71d8596d Add new path on artifact_urls file 2026-04-24 19:55:07 +07:00
Victor Carlos Erenu 158aedd989 Move changelog entries 2026-04-24 18:53:40 +07:00
Victor Carlos Erenu 3adc3aedd5 Recover deleted changelog 2026-04-23 15:18:17 +07:00
Victor Carlos Erenu 6087f14835 Add changelog 2026-04-23 14:37:58 +07:00
Victor Carlos Erenu 56c73be50c Add step for fetch full history into revert path 2026-04-23 02:52:33 +07:00
Victor Carlos Erenu cea9f3c90f Add revert option into bumper workflow 2026-04-23 01:53:56 +07:00
Gonzalo Acuña 8f38789a11 Merge pull request #2315 from wazuh/change/4473-add-checks-for-download
Add checks for artifact_urls.yaml download
2026-04-17 14:47:45 -03:00
Victor Carlos Erenu d60c0ff94e Add changelog 2026-04-18 00:28:55 +07:00
Victor Carlos Erenu 09f170b01a Add checks for artifact_urls.yaml download 2026-04-18 00:24:07 +07:00
Gonzalo Acuña acf3f1fc3b Merge pull request #2314 from wazuh/merge-4.14.6-into-main
Merge 4.14.6 into main
2026-04-17 09:59:07 -03:00
Victor Carlos Erenu 3adc7093f5 Resolving conflicts 2026-04-17 02:34:46 +07:00
Victor Carlos Erenu df46b699f1 Resolving conflicts 2026-04-17 02:11:49 +07:00
Victor Carlos Erenu 257d75e4ed Resolving conflicts 2026-04-17 01:39:13 +07:00
Victor Carlos Erenu c752e9f9b2 Resolving conflicts 2026-04-17 01:37:11 +07:00
Gonzalo Acuña 21e4202e39 Merge pull request #2313 from wazuh/bug/35457-modify-tag-building-process
Modify the choice of a correct tag
2026-04-16 14:12:56 -03:00
Victor Carlos Erenu 2d093f452f Add changelog 2026-04-16 23:50:12 +07:00
Victor Carlos Erenu e5c55cd8fe modify the choice of a correct tag 2026-04-16 22:44:27 +07:00
Gonzalo Acuña 985054089d Merge pull request #2312 from wazuh/bug/2279-vulns-issue
GH issue notification fix
2026-04-16 11:49:46 -03:00
Gonzalo Acuña 1bd499f9bd Changelog update 2026-04-16 11:35:25 -03:00
Gonzalo Acuña 64a7811cf4 Push images worfklow notification improvements 2026-04-16 10:17:23 -03:00
Carlos Anguita 4161af024f Merge pull request #2311 from wazuh/enhancement/2309-change-image-tag-for-4.14.5rc1
Revert docker image tag for 4.14.5 RC1
2026-04-16 11:02:41 +02:00
Enrique Araque 6aa5015a0b Revert docker image tag for 4.14.5 RC1 2026-04-16 10:52:20 +02:00
Wazuh CI 2d1c28ca8a Merge pull request #2310 from wazuh/enhancement/wqa6598-bump-4.14.5
Bump 4.14.5 branch
2026-04-16 10:21:07 +02:00
wazuhci bab0839cea feat: bump 4.14.5 2026-04-16 08:21:00 +00:00
Gonzalo Acuña 3a4773f0e5 Merge pull request #2308 from wazuh/enhancement/35457-revert-stage-v5.0.0-beta1
Revert stage v5.0.0-beta1
2026-04-15 16:34:24 -03:00
Victor Carlos Erenu ffed80385b Revert stage v5.0.0-beta1 2026-04-16 02:31:04 +07:00
Gonzalo Acuña f9abf8d672 Merge pull request #2307 from wazuh/enhancement/35457-new-stage-v5.0.0-beta1
New stage v5.0.0-beta1
2026-04-15 16:25:52 -03:00
Victor Carlos Erenu e36a96dea8 New stage v5.0.0-beta1 2026-04-16 02:23:46 +07:00
Gonzalo Acuña 4556f5b87e Merge pull request #2306 from wazuh/bug/35457-image-build
Artifact URL download fix
2026-04-15 16:15:14 -03:00
Gonzalo Acuña cf2f21baea Changelog update 2026-04-15 16:10:35 -03:00
Gonzalo Acuña fa4c3ec687 Artifact URL download fix 2026-04-15 16:02:43 -03:00
Gonzalo Acuña 9d56dc051e GH issue creation changes 2026-04-15 15:00:53 -03:00
Gonzalo Acuña c2e87d4d0a Merge pull request #2293 from wazuh/change/2276-set_as_main-option
Add set_as_main option
2026-04-15 13:48:21 -03:00
Gonzalo Acuña b976edbb2c Merge pull request #2305 from wazuh/enhancement/2303-revert-new-stage-on-main-branch
Enhancement/2303 revert new stage on main branch
2026-04-15 09:26:23 -03:00
Victor Carlos Erenu 2b7f8200e6 Revert stage beta1 on main branch 2026-04-15 19:22:37 +07:00
Victor Carlos Erenu d173a3b1ea Revert stage beta1 on main branch 2026-04-15 19:20:12 +07:00
Carlos Bordon ab1e5b936d Merge pull request #2304 from wazuh/enhancement/2303-support-new-stage-v5.0.0-beta1
Support new stage beta1
2026-04-15 09:08:45 -03:00
Victor Carlos Erenu 5bc782a5ed Bump image_tag input 2026-04-15 19:01:18 +07:00
Victor Carlos Erenu d5e2b7a948 Add newline on version.json 2026-04-15 18:49:55 +07:00
Victor Carlos Erenu f7fc2108e4 Support new stage beta1 2026-04-15 18:39:32 +07:00
Victor Carlos Erenu 84612f5231 Add tag input 2026-04-15 03:13:05 +07:00
Victor Carlos Erenu 1331bd3870 Add tag input 2026-04-15 03:04:08 +07:00
Victor Carlos Erenu dc7d56e7ff Add tag input 2026-04-15 02:50:58 +07:00
Gonzalo Acuña 8865a8ea08 Merge branch 'main' into change/2276-set_as_main-option 2026-04-14 14:49:27 -03:00
Gonzalo Acuña 8755cab095 Merge pull request #2294 from wazuh/change/2276-bumper-workflows
Adapt bumper workflows to change main branch
2026-04-14 14:05:35 -03:00
Victor Carlos Erenu aa8677b087 Add changelog 2026-04-14 23:23:48 +07:00
Victor Carlos Erenu ba9fc02441 Test bumper workflows 2026-04-14 22:51:44 +07:00
Victor Carlos Erenu c8e04c1cfd Change bumper workflows 2026-04-14 22:50:41 +07:00
Victor Carlos Erenu 0465f44c14 Change main reference 2026-04-14 22:40:52 +07:00
Victor Carlos Erenu d8c238a8d1 Delete set -x option 2026-04-14 22:31:15 +07:00
Victor Carlos Erenu ed29a8b11a Add changelog 2026-04-14 03:12:31 +07:00
Victor Carlos Erenu 32d82b1c68 Add set_as_main option 2026-04-14 02:46:00 +07:00
Wazuh CI 90f233ea53 Merge pull request #2292 from wazuh/enhancement/wqa6473-bump-4.14.6
Bump 4.14.6 branch
2026-04-10 12:19:45 +02:00
wazuhci 460d0ff38f feat: bump 4.14.6 2026-04-10 10:19:40 +00:00
Carlos Bordon cf8bfea424 Merge pull request #2289 from wazuh/change/2288-delete-API-references
Delete all API user and password references and Wazuh agent references
2026-04-08 09:34:37 -03:00
Carlos Bordon 70d0a55f46 Merge pull request #2291 from wazuh/change/3084-main-update-workflow-action-versions
Merge 4.14.5 into main
2026-04-08 09:28:01 -03:00
Carlos Bordon 9d87298016 Fixed merge conflict 2026-04-08 08:36:28 -03:00
Carlos Bordon 8dc360086e Merge 4.14.5 into main 2026-04-08 08:33:59 -03:00
Victor EreñúandCopilot 9d19f070de Update docs/ref/configuration/environment-variables.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-08 21:33:20 +10:00
Carlos Bordon f584612eb5 Merge pull request #2290 from wazuh/change/3084-update-workflow-action-versions
Updated GitHub actions version for wazuh-docker workflows
2026-04-08 08:30:34 -03:00
Carlos Bordon ef76f33729 Updated changelog 2026-04-08 08:26:23 -03:00
Victor Carlos Erenu 06c0801e4d Add changelog 2026-04-08 17:49:23 +07:00
Victor Carlos Erenu 0730460319 Delete Wazuh agent env variables on Dockerfile 2026-04-08 02:27:21 +07:00
Victor Carlos Erenu 016a91963a Restore API variables on test and delete docs references 2026-04-07 23:40:08 +07:00
Victor Carlos Erenu 4e298f0a80 Change healthcheck test 2026-04-07 23:07:30 +07:00
Victor Carlos Erenu e1c09f9387 Delete create_user.py reference 2026-04-07 02:48:48 +07:00
Victor Carlos Erenu 32ed31003a Delete all API user and password references and Wazuh agent references 2026-04-07 02:41:30 +07:00
Carlos Bordon 757be8713e Updated GitHub actions version for wazuh-docker workflows 2026-04-06 16:01:13 -03:00
Gonzalo Acuña 9de7fdc034 Merge pull request #2287 from wazuh/change/2283-create-certs-directory
Create certificate directory with default user and group
2026-04-06 13:37:34 -03:00
Victor Carlos Erenu 639ba06866 Add changelog 2026-04-06 23:11:07 +07:00
Victor Carlos Erenu a869dfb7f5 Create certificate directory with default user and group 2026-04-06 21:27:17 +07:00
8eca20a5ae Standarize Artifact URL keys (#2286)
* Standardize artifact URL keys for Docker builds

* Changelog update

---------

Co-authored-by: Gonzalo Acuña <teddytpc1@gmail.com>
Co-authored-by: Gonzalo Acuña <33964202+teddytpc1@users.noreply.github.com>
2026-04-06 09:01:41 +02:00
Gonzalo Acuña 0eb0d7914f Merge pull request #2285 from wazuh/change/2283-create-certificates-scripts
Certificates configuration script
2026-04-01 14:38:33 -03:00
Victor Carlos Erenu 5745995e5c Standarize certificates configuration script 2026-04-01 21:30:52 +07:00
Victor Carlos Erenu 1ac37f1ee8 Add unninstal steps 2026-04-01 02:28:42 +07:00
Victor Carlos Erenu 0f142766cc Add changelog 2026-04-01 01:59:31 +07:00
Victor Carlos Erenu cf5d4fa36e Modify PR checks 2026-04-01 01:54:42 +07:00
Victor Carlos Erenu 91d5899365 Configure certificates owner 2026-04-01 01:45:30 +07:00
Gonzalo Acuña 40b07a62b8 Merge pull request #2275 from wazuh/bug/2274-change-API-query-method
Change API query method
2026-03-27 11:20:34 -03:00
Victor Carlos Erenu 0a56d9aa8a Add changelog 2026-03-27 18:37:45 +07:00
Victor Carlos Erenu ddcfd78fa4 Change API query method 2026-03-27 17:28:00 +07:00
Gonzalo Acuña b184eac35e Merge pull request #2272 from wazuh/change/error_in_PR_test
Change Wazuh manager Healthcheck
2026-03-26 15:56:17 -03:00
Gonzalo Acuña 178c7f0639 Update healthcheck curl options order 2026-03-26 10:41:01 -03:00
Gonzalo AcuñaandCopilot 1a6d97c01b Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-26 10:23:59 -03:00
Victor Carlos Erenu 39fa6cabbd Add changelog 2026-03-26 19:54:59 +07:00
Victor Carlos Erenu a8e5e46352 Fix Wazuh manager healthcheck 2026-03-26 19:47:38 +07:00
Victor Carlos Erenu 523fbd1ac3 modify env to vars variable type 2026-03-26 02:40:36 +07:00
Gonzalo Acuña bc6e3b7d39 Merge pull request #2266 from wazuh/change/3059-modify-artifact-URLs-file-name
Modify artifact URLs file name
2026-03-25 15:03:06 -03:00
Victor Carlos Erenu 05e338e2fd Change variable type 2026-03-26 00:14:57 +07:00
Victor Carlos Erenu 3a935850c0 Change artifact file name to env variable 2026-03-26 00:00:23 +07:00
Victor Carlos Erenu 90d9a49bd6 Add changelog 2026-03-21 01:59:11 +07:00
Victor Carlos Erenu c626938730 Modify artifact URLs file name 2026-03-21 01:49:28 +07:00
Gonzalo Acuña 631b5e97f1 Merge pull request #2263 from wazuh/change/2258-delete-WAZUH_AGENT_GROUP-variable
Delete WAZUH_AGENT_GROUP variable
2026-03-20 13:56:58 -03:00
Victor Carlos Erenu cac582daac Change changelog 2026-03-20 21:47:51 +07:00
Victor Carlos Erenu c36a970289 Add changelog 2026-03-20 21:44:12 +07:00
Gonzalo Acuña c2e09a713a Merge pull request #2262 from wazuh/bug/2257-fix-WAZUH_AGENT_GROUP-variable
Fix WAZUH_AGENT_GROUP variable
2026-03-20 11:32:13 -03:00
Victor Carlos Erenu d28f8c0a13 Merge branch 'main' of github.com:wazuh/wazuh-docker into change/2258-delete-WAZUH_AGENT_GROUP-variable 2026-03-20 19:59:13 +07:00
Victor Carlos Erenu b88cac5ada Resolving cnoflicts 2026-03-20 19:47:53 +07:00
Carlos Bordon 2134ebf660 Merge pull request #2259 from wazuh/change/2218-url-presigned-file-update-wazuh-docker-image-creation-workflow
Use URL signing script to generate presigned internal package URLs.
2026-03-20 08:31:10 -03:00
Carlos Bordon 79a51847ea Fixed agent revision 2026-03-20 07:55:49 -03:00
Carlos Bordon 7f43ac75a4 Merge pull request #2261 from wazuh/bug/3018-improve-bumper-early-exits-to-4.14.5
Fix bumper script
2026-03-19 16:39:44 -03:00
Carlos Bordon 8916845c26 Merge with main 2026-03-19 15:32:07 -03:00
Carlos Bordon d374891660 Added assistant revision input to the build workflow 2026-03-19 15:30:34 -03:00
Carlos Bordon a74ebe1406 Merge pull request #2264 from wazuh/change/4323-update-devops-repositories-docs-config-and-tooling-versions-to-meet-new-standards
Updated wazuh-docker documentation config and tooling versions to meet new standards
2026-03-19 13:18:45 -03:00
Carlos Bordon 3b954c3c3a Fixed book.toml file 2026-03-19 12:57:26 -03:00
Carlos Bordon fc034c872d Fixed pr check 2026-03-19 12:48:13 -03:00
Carlos Bordon abdc49312f Added fixes proposed by copilot 2026-03-19 11:30:08 -03:00
Carlos Bordon 3d3688bb16 Updated changelog 2026-03-19 11:24:34 -03:00
Carlos Bordon 161f9b8357 Updated wazuh-docker documentation config and tooling versions to meet new standards 2026-03-19 11:22:08 -03:00
Carlos Bordon 52c68b5f39 Added Wazuh installation assistant tool as component 2026-03-19 10:46:38 -03:00
Carlos Bordon 913c8dfbcb Added wazuh installation assistant tools revision 2026-03-19 10:18:47 -03:00
Carlos Bordon 21cac99447 The validation of empty parameters is removed from the execution of the URL signing script. 2026-03-19 08:40:32 -03:00
Victor Carlos Erenu f749bb9ff0 Delete WAZUH_AGENT_GROUP references 2026-03-19 18:01:36 +07:00
Victor Carlos Erenu 94f88baab2 Add changelog 2026-03-19 17:42:39 +07:00
Victor Carlos Erenu ddd2f89717 Fix CHANGE_AGENT_GROUP parameter 2026-03-19 17:26:01 +07:00
Victor Carlos Erenu 0625d0464e Fix WAZUH_AGENT_GROUP variable 2026-03-19 17:23:36 +07:00
fcaffieri 93bc4a813e Update CHANGELOG 2026-03-18 17:33:12 -03:00
Carlos Bordon a248bdcd39 Updated certs tool download command 2026-03-18 17:05:42 -03:00
Carlos Bordon 5616e581af Changed yq installation method for url pre signed process 2026-03-18 16:49:07 -03:00
fcaffieri 43c836f4a1 Fix bumper script 2026-03-18 16:41:55 -03:00
Carlos Bordon 7d974ffd7c Added fixes proposed by GitHub copilot 2026-03-18 16:39:17 -03:00
Carlos Bordon 4b07a75602 Updated changelog 2026-03-18 16:08:28 -03:00
Carlos Bordon d72ae07e80 Fixed url presigned process for customs builds 2026-03-18 15:40:17 -03:00
Victor Carlos Erenu 303b5c5bbf Delete WAZUH_AGENT_GROUP variable 2026-03-19 01:36:04 +07:00
Carlos Bordon e69144bb43 Updated build image script 2026-03-18 15:13:31 -03:00
Carlos Bordon bc7b573e9d Fixed commit variables 2026-03-18 14:32:08 -03:00
Carlos Bordon 207683170e Added venv activation 2026-03-18 14:18:35 -03:00
Carlos Bordon 9987c5e627 Added wazuh Docker clone in presigned url job 2026-03-18 13:23:38 -03:00
Carlos Bordon be86d03c87 Testing wazuh Docker image build with presigned url script 2026-03-18 12:48:01 -03:00
Gonzalo Acuña 40f2fc5163 Merge pull request #2253 from wazuh/enh/2250-Align_cert_generation_steps_with_current_cert-tool_ip_validation
Update certificate configuration to use separate IP and DNS fields
2026-03-17 14:13:09 -03:00
Jesus Garcia dc0ea4d8f9 Update certificate configuration to use separate IP and DNS fields for proper certificate generation 2026-03-17 09:04:47 -05:00
Gonzalo Acuña d63219473c Merge pull request #2252 from wazuh/enhancement/2229-delete-volumes
Modify Healthchecks
2026-03-16 16:44:54 -03:00
Victor Carlos Erenu 49375d75f7 Delete active-response reference 2026-03-17 02:43:44 +07:00
Victor Carlos Erenu 8da0704978 Add changelog 2026-03-17 02:09:47 +07:00
Victor Carlos Erenu 2f8503dba9 change healthchecks 2026-03-17 02:06:48 +07:00
Victor Carlos Erenu 1346a10477 Delete docker unused volumes and change user and password for healthcheck 2026-03-17 01:41:56 +07:00
Gonzalo Acuña 950acfd2ed Merge pull request #2251 from wazuh/enhancement/2229-start-healthchecks
Add deployment healthchecks
2026-03-16 14:48:14 -03:00
Victor Carlos Erenu 270b755548 Delete permanent_data exceptions 2026-03-17 00:02:08 +07:00
Victor Carlos Erenu 75aceb19a4 Delete permanent_data folder and exceptions for Active Response on Wazuh manager 2026-03-16 23:56:55 +07:00
Victor Carlos Erenu dab5cacd0b Resolving conflicts 2026-03-16 21:55:57 +07:00
Victor Carlos Erenu 554cc10c5b Add changelog 2026-03-16 21:54:11 +07:00
Victor Carlos Erenu 1f6977a06b Add healthchecks for single node deployment 2026-03-16 21:51:00 +07:00
Gonzalo Acuña 31df17e0f5 Merge pull request #2242 from wazuh/chg/3021-Dedicated_runners_for_the_artifact_generation_workflows
Update artifact generation jobs to use wz-linux dedicated runner group
2026-03-13 16:14:20 -03:00
Gonzalo Acuña 9b8f23f4da Merge pull request #2249 from wazuh/merge-4.14.5-into-main
Merge 4.14.5 into main
2026-03-13 14:49:54 -03:00
Jesus Garcia c33f7b9243 Merge branch '4.14.5' into main 2026-03-13 12:33:21 -05:00
Gonzalo Acuña c72666d907 Merge pull request #2248 from wazuh/merge-4.14.4-into-4.14.5
Merge 4.14.4 into 4.14.5
2026-03-13 14:25:05 -03:00
Jesus Garcia aa28804c81 Merge branch '4.14.4' into 4.14.5 2026-03-13 12:21:22 -05:00
Jesus Garcia 3f7485e0dd Update changelog 2026-03-13 11:58:59 -05:00
Jesus Garcia cb2848d413 Change build-and-push job to use wz-linux-amd64 group for runs-on 2026-03-13 10:43:47 -05:00
Carlos Anguita 7af31ddfb4 Merge pull request #2245 from wazuh/enhancement/2243-change-image-tag-for-4.14.4rc2 2026-03-13 10:19:50 +01:00
Enrique Araque 452f953fe6 revert docker image tag 2026-03-13 10:16:11 +01:00
Wazuh CI 5c18f635b1 Merge pull request #2244 from wazuh/enhancement/wqa5865-bump-4.14.4
Bump 4.14.4 branch
2026-03-13 09:32:17 +01:00
wazuhci adb9f41174 feat: bump 4.14.4 2026-03-13 08:32:13 +00:00
Victor Carlos Erenu c64411b4f5 Add healthchecks to docker deployments 2026-03-12 18:16:18 +07:00
Gonzalo Acuña 955918877f Merge pull request #2238 from wazuh/enhancement/2237-fix-set_correct_permOwner_function
Fix set_correct_permOwner function
2026-03-10 14:26:19 -03:00
Victor Carlos Erenu 627f57c8b9 Add changelog 2026-03-07 02:10:25 +07:00
Victor Carlos Erenu 3aa51f547b Fix set_correct_permOwner function 2026-03-07 02:07:51 +07:00
Carlos Anguita e9d3d7a06e Merge pull request #2235 from wazuh/enhancement/2233-revert-images-4.14.4-rc1 2026-03-06 13:05:30 +01:00
Victor Carlos Erenu b4844e89fe Revert images to 4.14.4-rc1 2026-03-06 19:00:35 +07:00
Gonzalo Acuña bafc5a4e45 Merge pull request #2234 from wazuh/enhancement/2233-bump-4.14.4-rc1
Bump images to 4.14.4-rc1
2026-03-06 08:48:30 -03:00
Victor Carlos Erenu a30314eb3d Bump images to 4.14.4-rc1 2026-03-06 18:47:32 +07:00
Victor Carlos Erenu 35ab398833 Bump images to 4.14.4-rc1 2026-03-06 18:43:07 +07:00
Gonzalo Acuña a5744c6728 Merge pull request #2231 from wazuh/enhancement/2230-workflow-dispatch-option
Add workflow dispatch option
2026-03-04 08:48:22 -03:00
Victor Carlos Erenu 5243a86984 Add changelog 2026-03-04 18:06:11 +07:00
Victor Carlos Erenu 220d6b93e6 Add workflow dispatch option 2026-03-04 00:59:04 +07:00
Carlos Bordon 997e681dbe Merge pull request #2223 from wazuh/enhancement/2207-adapt-docker-deployment
Change Wazuh manager certificates names
2026-02-26 11:47:10 -03:00
Victor Carlos Erenu bfa3d9db58 Change Wazuh agent check 2026-02-26 01:03:01 +07:00
Victor Carlos Erenu 552d0c8d59 Change cert permissions 2026-02-25 21:50:46 +07:00
Victor Carlos Erenu c11ecfe883 Change binary names 2026-02-25 21:16:42 +07:00
Carlos Bordon 3c79627767 Merge pull request #2226 from wazuh/bug/6648-fix-INDEXER_URL-subst
INDEXER_URL substitution fix
2026-02-24 14:13:06 -03:00
Victor Carlos Erenu 5b6c8ec021 Add Changelog 2026-02-24 23:26:36 +07:00
Victor Carlos Erenu 4633e9acdb Fix INDEXER_URL single_node 2026-02-24 23:22:32 +07:00
Victor Carlos Erenu 03febcb005 Fix INDEXER_URL substitution 2026-02-24 23:21:38 +07:00
Victor Carlos Erenu d61b76c44d Merge branch 'main' of github.com:wazuh/wazuh-docker into enhancement/2207-adapt-docker-deployment 2026-02-21 00:55:01 +07:00
Carlos Bordonandwazuhci 06a2a28c8d Merge 4.14.5 into main (#2225)
* feat: bump 4.14.5

* Delete Readme file

---------

Co-authored-by: wazuhci <22834044+wazuhci@users.noreply.github.com>
2026-02-20 13:04:24 -03:00
Victor Carlos Erenu 90b2e6d464 Delete Readme file 2026-02-20 22:59:53 +07:00
Victor Carlos Erenu ab72a53520 Resolving conflicts 2026-02-20 22:59:00 +07:00
Victor Carlos Erenu 930f30d84f Add Changelog 2026-02-20 21:59:12 +07:00
Victor Carlos Erenu b455dc3938 Change Wazuh manager certificates names 2026-02-20 21:56:56 +07:00
Victor Ereñú 175faaed8d Merge pull request #2220 from wazuh/enhancement/2206-adapt-image-build
Separate Agent/Manager - Docker - Adapt image build process
2026-02-19 10:44:48 -03:00
Gonzalo Acuña 40c88305bc Merge pull request #2215 from wazuh/enh/2197-Missing_documentation_in_the_wazuh-docker_repository
Add missing documentation sections in the repository
2026-02-13 16:30:24 -03:00
Jesus Garcia 93975b3715 Move persistence configuration into configuration-files.md 2026-02-13 12:55:12 -05:00
Gonzalo Acuña 7c1029dfb4 Merge pull request #2217 from wazuh/enhancement/2943-remove-revision-input
Remove revision input
2026-02-13 14:51:19 -03:00
Jesus Garcia b3d34a9983 Add general instructions for Docker volume persistence 2026-02-13 12:38:16 -05:00
Wazuh CI ff2c9bac28 Merge pull request #2219 from wazuh/enhancement/wqa5640-bump-4.14.5
Bump 4.14.5 branch
2026-02-13 18:23:37 +01:00
wazuhci 5bbc250263 feat: bump 4.14.5 2026-02-13 17:23:33 +00:00
Victor Carlos Erenu 70c0a61a51 Add Changelog 2026-02-13 22:59:43 +07:00
Victor Carlos Erenu bda9fdfe71 pull main changes 2026-02-13 19:02:06 +07:00
Victor Carlos Erenu 06c2c2c46a Remove revision references 2026-02-13 17:36:03 +07:00
Jesus Garcia cb4062c2b7 Add specific links to tech docs 2026-02-12 14:54:39 -05:00
Jesus Garcia 917e8ddb91 Merge remote-tracking branch 'origin/main' into enh/2197-Missing_documentation_in_the_wazuh-docker_repository 2026-02-12 12:54:01 -05:00
Jesus Garcia 5f625d4bd5 Update docs to meet new requirements 2026-02-12 12:50:51 -05:00
Gonzalo Acuña d1e7fd888f Merge pull request #2212 from wazuh/bug/2196-build-images-script-improvement
Improve build script and workflow component revisions handling
2026-02-12 14:36:56 -03:00
Jesus Garcia 5f7576ce16 Add changelog 2026-02-11 08:23:14 -05:00
Jesus Garcia f7efef25d7 Enhance docker docs structure 2026-02-11 08:21:37 -05:00
Jesus Garcia 60896b92a0 Update changelog 2026-02-09 16:41:31 -05:00
Jesus Garcia 052fb765ed Compute component references dynamically 2026-02-09 13:25:44 -05:00
Jesus Garcia a480db9efc Improve build script and workflow component revisions handling 2026-02-09 13:16:48 -05:00
Gonzalo Acuña 8f50eee1d0 Merge pull request #2205 from wazuh/merge-4.14.4-into-main
Merge 4.14.4 into main
2026-02-06 12:30:34 -03:00
Gonzalo Acuña 51ab4da8e4 Merge pull request #2204 from wazuh/merge-4.14.3-into-4.14.4
Merge 4.14.3 into 4.14.4
2026-02-06 12:23:31 -03:00
Victor Carlos Erenu 40d7e24b19 Resolving conflicts 2026-02-06 22:21:11 +07:00
Enrique Araque 21e9cb178c revert docker image tag for 4.14.3 rc3 (#2202) 2026-02-06 10:36:38 +01:00
Enrique Araque 1fbc6fafbd update changelog (#2201) 2026-02-06 10:29:54 +01:00
Wazuh CI 2286b87110 Merge pull request #2200 from wazuh/enhancement/wqa5570-bump-4.14.3
Bump 4.14.3 branch
2026-02-06 09:34:53 +01:00
wazuhci 97a59ed3c0 feat: bump 4.14.3 2026-02-06 08:34:44 +00:00
Gonzalo Acuña 935222dc42 Merge pull request #2195 from wazuh/enhacement/2960-add-version-and-revision-on-artifacts
Add Wazuh version and revision into wazuh-certs-tool and config file
2026-02-04 10:00:33 -03:00
Victor Carlos Erenu 73214a2e24 Revert artifact URL file name 2026-02-04 19:21:07 +07:00
Victor Carlos Erenu 33426b5526 Add changelog 2026-02-04 02:33:17 +07:00
Victor Carlos Erenu 4915507603 Change the wazuh-certs-tool URL get method 2026-02-04 01:56:29 +07:00
Victor Carlos Erenu c0f8f52acd Change artifact download method 2026-02-03 21:29:19 +07:00
Victor Carlos Erenu 4f8ee2caea Change artifacts URLs file name 2026-02-03 19:01:18 +07:00
Victor Carlos Erenu 56636c0dd7 Add Wazuh version and revision into wazuh-certs-tool and config file 2026-02-03 02:35:52 +07:00
Carlos Bordon affb232e93 Merge pull request #2194 from wazuh/merge-4.14.4-into-main
Merge 4.14.4 into main
2026-01-30 14:56:03 -03:00
Victor Carlos Erenu 1676a3fc79 Resolving conflicts 2026-01-31 00:36:07 +07:00
Victor Carlos Erenu ad3469fa4c Resolving conflicts 2026-01-31 00:32:09 +07:00
Gonzalo Acuña 2e62b840c4 Merge pull request #2193 from wazuh/merge-4.14.3-into-4.14.4
Merge 4.14.3 into 4.14.4
2026-01-30 13:53:14 -03:00
Gonzalo Acuña a34aa2aff7 Merge branch '4.14.4' into merge-4.14.3-into-4.14.4 2026-01-30 13:50:26 -03:00
Gonzalo Acuña 72396e77dd Merge pull request #2183 from wazuh/enh/2172-Improve_S3_artifact_URLs_handling
Improve S3 artifact URLs handling
2026-01-29 10:50:51 -03:00
Enrique Araque 2c1f8e1a5c remove docker image tags for 4.14.4-rc2 (#2191) 2026-01-29 13:38:11 +01:00
Wazuh CI 68936d1e51 Merge pull request #2190 from wazuh/enhancement/wqa5506-bump-4.14.3
Bump 4.14.3 branch
2026-01-29 12:31:11 +01:00
wazuhci a63e3d6e28 feat: bump 4.14.3 2026-01-29 11:31:05 +00:00
Jesus Garcia 827e3bde13 Set default component commit list 2026-01-28 09:40:30 -05:00
Jesus Garcia a2ea59285e Removed unused checkout step 2026-01-28 08:21:17 -05:00
Jesus Garcia d0b2f5b8a5 Separate ref for each component 2026-01-28 08:20:59 -05:00
Gonzalo Acuña 65bbc83d0b Merge pull request #2184 from wazuh/enh/2164-Allow_building_separate_targets--4.14.4
Backport from 5.0.0: Allow building separate targets #2177
2026-01-27 15:28:30 -03:00
Jesus Garcia 4fc9a1b970 Clarify 'reference' variables and implement 'commit_list' parameter logic 2026-01-27 12:04:02 -05:00
Jesus Garcia 6565cf9212 Backport from 5.0.0: Allow building separate targets #2177 2026-01-27 09:03:48 -05:00
Jesus Garcia 418998b9ff Update changelog 2026-01-26 14:55:55 -05:00
Jesus Garcia 776b86540b Remove free space step 2026-01-26 13:24:33 -05:00
Jesus Garcia 3579ff06f5 Update variable names to common used names 2026-01-26 12:42:55 -05:00
Jesus Garcia ba91ba880a Add separate URL generation job to Docker image push workflow 2026-01-26 11:22:03 -05:00
Gonzalo Acuña bbbff422c5 Merge pull request #2177 from wazuh/enh/2164-Allow_building_separate_targets
Allow building separate targets
2026-01-26 11:41:27 -03:00
Jesus Garcia cd6c492417 Add type definition for 'products' input in Docker image push workflow 2026-01-26 08:13:35 -05:00
Jesus Garcia d03bba2b93 Merge branch 'enh/2164-Allow_building_separate_targets' 2026-01-23 10:37:11 -05:00
Jesus Garcia a376ab05d8 Update 'products' parameter to make it not required 2026-01-23 10:31:56 -05:00
a79c49785b Merge 4.14.4 into main (#2182)
Co-authored-by: Victor Carlos Erenu <victor.erenu@wazuh.com>
Co-authored-by: wazuhci <22834044+wazuhci@users.noreply.github.com>
Co-authored-by: Enrique Araque <enrique.araque@wazuh.com>
2026-01-23 10:42:37 +01:00
Gonzalo AcuñaandVictor Carlos Erenu 9a9a2539e5 Merge 4.14.3 into 4.14.4 (#2181)
Co-authored-by: Victor Carlos Erenu <victor.erenu@wazuh.com>
2026-01-23 10:25:16 +01:00
Jesus Garcia 236df154fc Merge branch 'enh/2164-Allow_building_separate_targets' 2026-01-21 19:07:39 -05:00
Gonzalo Acuña 33a497ab92 Merge pull request #2179 from wazuh/enhancement/2175-Add-devel-option
Add developement option when tag name is only version without stage
2026-01-21 15:45:06 -03:00
Victor Carlos Erenu a8b8931e66 Add Changelog 2026-01-20 20:17:28 +07:00
Victor Carlos Erenu 4a153bda1b Add developement option when tag name is only version without stage 2026-01-20 20:15:05 +07:00
Gonzalo Acuña d6bf577dbd Merge pull request #2178 from wazuh/enhancement/2175-Add-IMAGE_TAG-stage-reference-main
Add IMAGE_TAG stage reference
2026-01-20 09:20:27 -03:00
Gonzalo Acuña 149b559687 Merge pull request #2176 from wazuh/enhancement/2175-IMAGE_TAG-stage-reference
Add IMAGE_TAG stage reference
2026-01-20 09:20:10 -03:00
Victor Carlos Erenu 80893ba051 Add Changelog 2026-01-19 23:07:51 +07:00
Victor Carlos Erenu 914a6c44ec Add Changelog 2026-01-19 22:36:36 +07:00
Victor Carlos Erenu fbd5140c84 Change IMAGE_TAG dev reference 2026-01-19 21:50:38 +07:00
Victor Carlos Erenu f78e8f5127 Change IMAGE_TAG dev reference 2026-01-19 21:02:05 +07:00
Victor Carlos Erenu bc8c42920b Change IMAGE_TAG dev reference 2026-01-19 21:01:32 +07:00
Jesus Garcia a34ff08a09 Update changelog 2026-01-19 08:26:20 -05:00
Jesus Garcia 7991ad6284 Enhance build-images.sh script to handle multiple components 2026-01-19 08:23:24 -05:00
Victor Carlos Erenu efdd97d6ab Add Changelog 2026-01-19 20:16:03 +07:00
Victor Carlos Erenu 4d5255313e Add IMAGE_TAG stage reference 2026-01-19 20:12:54 +07:00
Victor Carlos Erenu b400373b2c Add IMAGE_TAG reference 2026-01-19 19:13:36 +07:00
Jesus Garcia a9e602439d Add support for building multiple Wazuh components separately 2026-01-16 15:13:59 -05:00
Wazuh CI f69599fcda Merge pull request #2174 from wazuh/enhancement/wqa5435-bump-4.14.4
Bump 4.14.4 branch
2026-01-16 15:17:07 +01:00
wazuhci 57ee45eaae feat: bump 4.14.4 2026-01-16 14:17:01 +00:00
Gonzalo Acuña 6b881b3a03 Merge pull request #2173 from wazuh/enhancement/2171-delete-agent-conf-files
Delete Wazuh agent configuration files
2026-01-16 11:07:52 -03:00
Victor Carlos Erenu 6993fb9591 Add Changelog 2026-01-16 21:07:19 +07:00
Victor Carlos Erenu 91fe1215ae Delete Wazuh agent configuration files 2026-01-16 19:51:43 +07:00
Enrique Araque a1b816abe0 revert docker image tag for 4.14.3-rc1 (#2169) 2026-01-15 12:28:05 +01:00
Wazuh CI 0a03300e13 Merge pull request #2168 from wazuh/enhancement/wqa5413-bump-4.14.3
Bump 4.14.3 branch
2026-01-15 10:49:35 +01:00
wazuhci 9c42711c4c feat: bump 4.14.3 2026-01-15 09:49:30 +00:00
Gonzalo Acuña a9b612f6c9 Merge pull request #2166 from wazuh/merge-4.14.3-into-main
Merge 4.14.3 into main
2026-01-14 15:48:52 -03:00
Victor Carlos Erenu 1879f77825 Resolving conflicts 2026-01-15 01:26:06 +07:00
Victor Carlos Erenu ffeb009a2d Resolving conflicts 2026-01-15 01:23:07 +07:00
Gonzalo Acuña 8d83e83f23 Merge pull request #2165 from wazuh/merge-4.14.2-into-4.14.3
Merge 4.14.2 into 4.14.3
2026-01-14 15:14:51 -03:00
Victor Carlos Erenu e89fa28f89 Resolving conflicts 2026-01-15 01:11:42 +07:00
Gonzalo Acuña 1b37078744 Merge pull request #2158 from wazuh/enhancement/2156-modify_run_as_parameter_main
Modify run_as parameter value - main
2026-01-13 12:21:24 -03:00
Gonzalo Acuña 151b203779 Merge pull request #2157 from wazuh/enhancement/2156-modify_run_as_parameter
Modify run_as parameter value - v4.14.3
2026-01-13 12:21:17 -03:00
Victor Carlos Erenu 5b9c04a7b2 Add changelog 2026-01-13 00:23:09 +07:00
Victor Carlos Erenu 65ee71c945 Add changelog 2026-01-13 00:21:35 +07:00
Victor Carlos Erenu 813682cfaf Modify run_as parameter value 2026-01-13 00:16:57 +07:00
Victor Carlos Erenu 78df3b454a Add changelog 2026-01-13 00:11:38 +07:00
Victor Carlos Erenu 57c1de55b5 Modify run_as parameter value 2026-01-13 00:08:55 +07:00
Gonzalo Acuña 884180ed49 Merge pull request #2150 from wazuh/enhancement/2730-windows-macOS-prerequisites
Change macOS and Windows deployment documentation
2026-01-06 16:17:10 -03:00
Victor Carlos Erenu 88e46d80a3 Delete multilingual statement 2026-01-07 00:37:49 +07:00
Victor Carlos Erenu e2f3c81611 Add Changelog 2026-01-06 23:34:52 +07:00
Victor Carlos Erenu af1e954146 Delete required version 2026-01-06 01:58:42 +07:00
Victor Carlos Erenu e53e51ff44 Add Windows and macOS prerequisites 2026-01-06 01:52:35 +07:00
Gonzalo Acuña 0ee58a8b5c Merge pull request #2149 from wazuh/enh/2099-adapt-wazuh-agent-to-multiarch
Adapt Wazuh Agent Dockerfile for multi-architecture support
2026-01-05 11:05:36 -03:00
Jesus Garcia 7623439395 Add changelog 2026-01-05 08:49:32 -05:00
Jesus Garcia 5b2afd1acb Adapt Wazuh agent Dockerfile s6 overlay for multi-architecture support 2026-01-02 08:33:56 -05:00
Enrique Araque 7f2c8d25b3 Merge pull request #2147 from wazuh/rollback-bump-5.0.0-alpha0
Rollback bump 5.0.0-alpha0 tag
2025-12-31 12:45:40 +01:00
Carlos Bordon 6d9a01750a Rollback bump 5.0.0-alpha0 tag 2025-12-31 08:42:26 -03:00
Carlos Bordon 75e4dcbc96 Merge pull request #2146 from wazuh/bump-to-v5.0.0-alpha0
Bump Docker images to alpha0 tag
2025-12-31 08:40:00 -03:00
Carlos Bordon 9d08a8a669 Updated wazuh agent image 2025-12-31 08:36:40 -03:00
Carlos Bordon e1d072b234 Bump Docker images to alpha0 tag 2025-12-31 08:28:38 -03:00
Gonzalo Acuña 4db4e328cc Merge pull request #2131 from wazuh/enhancement/2698-PR-test-adaptation
Modify docker build image process
2025-12-29 16:14:47 -03:00
Victor Carlos Erenu dc9da8aacb Fix S6 overlay arch into Wazuh agent image build 2025-12-30 01:23:33 +07:00
Victor Carlos Erenu 0fedd684b5 Fix S6 overlay arch into Wazuh agent image build 2025-12-30 01:13:51 +07:00
Victor Carlos Erenu 6e93c01ab1 Fix S6 overlay arch into Wazuh agent image build 2025-12-30 01:01:34 +07:00
Victor Carlos Erenu 84441f9da9 Fix S6 overlay arch into Wazuh agent image build 2025-12-30 00:54:13 +07:00
Victor Carlos Erenu 54b470d89b Change Wazuh agent check 2025-12-29 23:48:04 +07:00
Victor Carlos Erenu 01c72c2c8b Change Wazuh agent check 2025-12-29 22:53:50 +07:00
Victor Carlos Erenu eb00d13ad3 change workflow name and delete trivy check workflows 2025-12-29 20:49:11 +07:00
Victor Carlos Erenu e0a4e3f9fc Add newline 2025-12-27 02:49:45 +07:00
Victor Carlos Erenu 47ee381f48 Add Changelog 2025-12-27 02:45:08 +07:00
Victor Carlos Erenu 7a1d4c4331 Merge branch 'main' of github.com:wazuh/wazuh-docker into enhancement/2698-PR-test-adaptation 2025-12-27 02:43:36 +07:00
Gonzalo Acuña 26c3f12724 Merge pull request #2129 from wazuh/bug/2128-delete-lists-references
Delete etc/lists references
2025-12-26 16:33:43 -03:00
Victor Carlos Erenu 2c28bd04c6 Add changelog deleted 2025-12-26 20:02:43 +07:00
Victor Ereñú e677faab5a Merge branch 'main' into bug/2128-delete-lists-references 2025-12-26 19:43:58 +07:00
Victor Carlos Erenu cd99438abc Add a last step with docker logs check 2025-12-26 02:06:37 +07:00
Victor Carlos Erenu c9e0f3f099 Change cluster worker node name 2025-12-26 01:47:57 +07:00
Victor Carlos Erenu 07634d7df5 Modify manager list work 2025-12-26 01:18:53 +07:00
Victor Carlos Erenu 2573671e47 Add free space step for single node deployment 2025-12-26 01:01:46 +07:00
Victor Carlos Erenu d586b48d8f Add double-quote and chenge TOKEN variable 2025-12-26 00:51:36 +07:00
Victor Carlos Erenu d264717f64 Add docker logs review 2025-12-26 00:36:12 +07:00
Victor Carlos Erenu e91e15bbd9 Modify service ip 2025-12-25 23:58:15 +07:00
Victor Carlos Erenu 0b894153c0 Add retry option in Wazuh manager test 2025-12-25 23:44:43 +07:00
Victor Carlos Erenu cf8c10d817 Modify list separator 2025-12-25 20:12:35 +07:00
Victor Carlos Erenu 7c5b3f3b54 Modify list separator and amount of replies 2025-12-25 20:01:39 +07:00
Victor Carlos Erenu ea05bb5207 Modify Wazuh manager test 2025-12-25 19:37:13 +07:00
Victor Carlos Erenu 1f656b7b36 Modify sleep time for count documents 2025-12-25 18:24:08 +07:00
Victor Carlos Erenu 2ccc4b0686 Add env variables 2025-12-25 17:38:03 +07:00
Gonzalo Acuña 1722c75c98 Merge pull request #2141 from wazuh/merge-4.14.3-into-main
Merge 4.14.3 into main
2025-12-24 09:49:09 -03:00
Carlos Bordon 5a803bc877 Updated build images parameters 2025-12-24 09:24:00 -03:00
Carlos Bordon 960efa9cda Removed certificates files from main 2025-12-24 09:10:09 -03:00
Carlos Bordon dd2bcb5074 Merge 4.14.3 into main 2025-12-24 09:04:13 -03:00
Carlos Bordon 30ea265513 Merge pull request #2140 from wazuh/merge-4.14.2-into-4.14.3
Merge 4.14.2 into 4.14.3
2025-12-24 07:41:52 -03:00
Carlos Anguita López 7ae0a4a81c merge 4.14.2-into-4.14.3 2025-12-24 11:25:18 +01:00
Victor Carlos Erenu 5df15e8568 Fix multi node config.yml 2025-12-24 01:50:49 +07:00
Victor Carlos Erenu bf56fab8c8 Add config.yml check 2025-12-24 01:42:08 +07:00
Victor Carlos Erenu d0ca1e6163 Add checking into steps and container names 2025-12-24 01:31:35 +07:00
Victor Carlos Erenu 76122bd3b8 Add checking into steps and container names 2025-12-24 01:21:59 +07:00
Victor Carlos Erenu 73c8b33bcd Fix first attempts of cluster initialization 2025-12-24 00:20:02 +07:00
Victor Carlos Erenu 9762d6a82a Resolving Conflicts 2025-12-23 23:53:28 +07:00
Victor Carlos Erenu b120c4c8c8 Add Wazuh indexer check with Attempts 2025-12-23 23:50:24 +07:00
Gonzalo Acuña 309f6577ae Merge pull request #2137 from wazuh/enh/2099-improve-docs
Improve documentation for Docker image building process and remove unused parameter
2025-12-22 13:31:41 -03:00
Gonzalo Acuña 19f3e4a1f5 Merge pull request #2136 from wazuh/enh/2714-Development__DevOps_5.0_adaptation__Docker__Documentation
Update documentation for Wazuh Docker image builder and workflow usage
2025-12-22 13:31:07 -03:00
Jesus Garcia e4e41ef4ba Add shebang to build-images.sh script, enhance script structure, update push.yml workflow file to use working-directory, and remove indexer-certs-creator directory 2025-12-22 11:16:39 -05:00
Jesus Garcia 024bb8553a Add working directory to push.yml workflow and add shebang to image build script 2025-12-22 11:03:55 -05:00
Jesus Garcia a5fc8fd88c Improve documentation for Docker image building process and remove unused reference option 2025-12-22 10:17:01 -05:00
Jesus Garcia f04ed6e608 Update documentation for Wazuh Docker image builder and workflow usage
---
- All relevant content of README.md files was migrated to docs/ section in their respective section.
- These README files has been deleted (4 files)
- All README.md files (additional to the project's root and docs/) have been edited.
---
- Both files build-docker-images/README.md and docs/dev/build-image.md have almost same content, so it was discarded the README file
- As the directory and docker image are going to be disused, the certs-gen documentation contents of indexer-certs-creator/README.md was not mig>
- The 'bash' command added to the docs/dev/build-image.md was removed
- Added workflow usage docs file to the the SUMMARY.md file
---
- Removed '$' parameter and added 'bash' to all markdown code blocks headings (```)
---
2025-12-22 08:36:09 -05:00
Victor Carlos Erenu 1aa5a2acc4 Add matrix for GHA runners 2025-12-22 17:56:13 +07:00
Victor Carlos Erenu a055dc86c6 Add registry into Wazuh agent docker-compose.yml file 2025-12-20 01:59:57 +07:00
Victor Carlos Erenu c2520efc9f Remove goss old configuration 2025-12-20 01:42:54 +07:00
Victor Carlos Erenu b442796857 Remove goss old configuration 2025-12-20 01:02:31 +07:00
Victor Carlos Erenu c1b5220775 Remove goss old configuration 2025-12-20 00:49:46 +07:00
Victor Carlos Erenu 282210300e Remove goss old configuration 2025-12-20 00:37:17 +07:00
Victor Carlos Erenu 9326dce891 Remove goss old configuration 2025-12-20 00:16:54 +07:00
Victor Carlos Erenu b6ffcb4138 Remove goss old configuration 2025-12-20 00:09:39 +07:00
Victor Carlos Erenu b33447c483 Remove goss old configuration 2025-12-20 00:01:38 +07:00
Victor Carlos Erenu 85bb9078dc Remove goss old configuration 2025-12-19 23:44:45 +07:00
Victor Carlos Erenu 37ba5312c9 Remove goss old configuration 2025-12-19 23:13:36 +07:00
Victor Carlos Erenu 98f7b25b54 Remove goss old configuration 2025-12-19 23:00:46 +07:00
Victor Carlos Erenu 460a01e591 Remove goss old configuration 2025-12-19 22:48:28 +07:00
Victor Carlos Erenu 58b1e0518e Remove goss old configuration 2025-12-19 22:41:13 +07:00
Victor Carlos Erenu 50363c8b45 Remove goss old configuration 2025-12-19 22:34:52 +07:00
Victor Carlos Erenu 9d5aa65521 Remove goss old configuration 2025-12-19 22:28:26 +07:00
Victor Carlos Erenu f532db7356 Remove goss old configuration 2025-12-19 22:23:39 +07:00
Victor Carlos Erenu abe0ebe9a8 Add sleep time 2025-12-19 21:32:35 +07:00
Victor Carlos Erenu 165f4ebf79 Add sleep time 2025-12-19 20:39:39 +07:00
Victor Carlos Erenu a87e1482b0 Add sleep time 2025-12-19 20:36:32 +07:00
Victor Carlos Erenu 4521ddb897 Add checkout in Goss job 2025-12-19 18:06:47 +07:00
Victor Carlos Erenu 194bd5440e Change goss version 2025-12-19 02:06:18 +07:00
Victor Carlos Erenu 7703b325bd Modify curl and dgoss run 2025-12-19 00:17:41 +07:00
Victor Carlos Erenu da752c2fc6 Add ECR login and sign cert tool script URL 2025-12-18 23:48:40 +07:00
Victor Carlos Erenu 93aaff79b0 Fix variables and multi node deployment 2025-12-18 23:12:25 +07:00
Gonzalo Acuña 8caec1bd38 Merge pull request #2132 from wazuh/enhancement/2097-Docker_ARM_4.x__Adapt_to_multi-architecture_build
Update indexer-certs-gen README.md for clarity on procedure
2025-12-18 12:59:56 -03:00
Victor Carlos Erenu 33a4d10eda Add secret pemissions 2025-12-18 22:22:10 +07:00
Jesus Garcia dd165bf3ec Update indexer-certs-gen README.md for clarity on procedure 2025-12-18 10:16:30 -05:00
Victor Carlos Erenu 2e6c22dc5c Fix ref name 2025-12-18 22:11:57 +07:00
Victor Carlos Erenu 323794b8a3 Add permissions 2025-12-18 21:03:20 +07:00
Victor Carlos Erenu 1da196f215 Change workflow image builder 2025-12-18 21:00:41 +07:00
Victor Carlos Erenu 4dc87bd936 Change needed 2025-12-18 20:32:20 +07:00
Victor Carlos Erenu 760534b57f Add permissions 2025-12-18 20:29:17 +07:00
Victor Carlos Erenu 009e71cb9f Modify docker build image process 2025-12-18 20:22:15 +07:00
Gonzalo Acuña 3724f5196a Merge pull request #2130 from wazuh/enhancement/2097-Docker_ARM_4.x__Adapt_to_multi-architecture_build
Update certs generator image version to 0.0.4
2025-12-18 09:03:51 -03:00
Gonzalo Acuña c05e6cf16e Merge branch '4.14.3' into enhancement/2097-Docker_ARM_4.x__Adapt_to_multi-architecture_build 2025-12-18 09:03:32 -03:00
Jesus Garcia 9138f7a9f5 Update certs generator image version to 0.0.4 in multi-node and single-node configurations 2025-12-17 15:27:21 -05:00
Gonzalo Acuña 11261d380a Merge pull request #2127 from wazuh/enhancement/edr-6591-agent-group
Agent group parameter added
2025-12-17 16:45:05 -03:00
Victor Carlos Erenu fbed17f773 Add and fix changelog references 2025-12-18 02:37:19 +07:00
Victor Carlos Erenu d86827a369 Delete etc/lists references 2025-12-18 02:30:34 +07:00
Gonzalo Acuña e493c6d113 Merge branch '4.14.3' into enhancement/edr-6591-agent-group 2025-12-17 16:18:58 -03:00
Gonzalo Acuña f7927bf238 Changelog update 2025-12-17 16:13:13 -03:00
Gonzalo Acuña a41a20774c Merge pull request #2120 from wazuh/enhancement/2097-Docker_ARM_4.x__Adapt_to_multi-architecture_build
Adapt to multi architecture build
2025-12-17 14:51:53 -03:00
Jesus Garcia f51fc2e4ae Add check (input.dev must be false) for image validation and GH issue notification in push workflow 2025-12-17 12:10:46 -05:00
Jesus Garcia 089ce24ffc Enhance script execution of build and improve docs clarity 2025-12-17 01:37:49 -05:00
Gonzalo Acuña 424559518e Merge pull request #2126 from wazuh/enh/2097-certsgen-imagebuild
Modify to build certs gen image
2025-12-17 01:37:49 -05:00
Jesus Garcia a509f0f8ea Add changelog 2025-12-17 01:37:49 -05:00
Jesus Garcia c6a427af70 Update documentation of certs-gen procedure 2025-12-17 01:37:49 -05:00
Jesus Garcia 6675465180 Adapt manager Dockerfile for multi-architecture builds 2025-12-17 01:37:49 -05:00
Jesus Garcia 08c7cbda53 Modify to build certs gen image 2025-12-17 01:37:49 -05:00
Victor Carlos Erenu 0fe3103940 Bring changes from PR #2054 2025-12-17 01:37:40 -05:00
Gonzalo Acuña b3fde321bf Agent group parameter added 2025-12-16 15:45:25 -03:00
Carlos Bordon 44c3cf7b1f Merge pull request #2121 from wazuh/change/2108-remove-all-filebeat-references-and-update-the-wazuh-app-references-to-opensearch_dashboards
Remove all filebeat references and update the wazuh app references to opensearch dashboards
2025-12-15 16:05:30 -03:00
Carlos Bordon 6abda02e8b Merge with main branch 2025-12-15 11:13:44 -03:00
Carlos Bordon 0a9ce33b09 Removed config.yml files 2025-12-15 11:03:22 -03:00
Carlos Anguita 2437a31513 Merge pull request #2125 from wazuh/merge-4.14.3-into-main 2025-12-12 12:08:47 +01:00
Enrique Araque 8371ae27e8 Update build docker images readme 2025-12-12 11:47:21 +01:00
Enrique Araque 6c9c733713 Merge branch '4.14.3' into merge-4.14.3-into-main 2025-12-12 11:44:13 +01:00
Carlos Anguita 88c4f238d2 Merge pull request #2124 from wazuh/merge-4.14.2-into-4.14.3 2025-12-12 11:16:36 +01:00
Enrique Araque 65c04aaaeb Merge branch '4.14.2' into merge-4.14.2-into-4.14.3 2025-12-12 11:02:26 +01:00
Carlos Bordon c89d4eed9b Updated wazuh images 2025-12-10 12:38:27 -03:00
Carlos Bordon 8b41c47efc Updated Wazuh manager certificates mounth 2025-12-10 10:18:12 -03:00
Carlos Bordon 232bc0a77d Updated docker images tag 2025-12-09 19:02:15 -03:00
Carlos Bordon 181a6b470b Fixed multi node certificates path 2025-12-09 18:57:26 -03:00
Carlos Bordon d58fc84a2b Updated multi node deployment 2025-12-09 18:08:41 -03:00
Carlos Bordon a5e5b82c28 Updated wazuh dashboard config script 2025-12-05 16:56:08 -03:00
Carlos Bordon b0df035478 Replaced wazuh_app_config by wazuh_dashboard_config script 2025-12-05 16:01:50 -03:00
Carlos Bordon 53e3c95637 Fixed configuration directory from builder 2025-12-05 15:24:56 -03:00
Carlos Bordon 55cd4be54d Copy wazuh dashboard configuration dir 2025-12-05 13:28:31 -03:00
Carlos Bordon 572c8d417e Updated Wazuh app configuration script 2025-12-05 11:15:50 -03:00
Carlos Bordon 0aa7750c49 Added wazuh_app script execution to config.sh file 2025-12-05 10:21:33 -03:00
Carlos Bordon f7d2cb2c3d Added debug symbols 2025-12-04 16:27:09 -03:00
Carlos Bordon daf6eb6435 Removed config.sh file from wazuh dashboard 2025-12-04 16:11:36 -03:00
Carlos Bordon e539ae625e Added EOF to wazuh app config script 2025-12-04 15:51:58 -03:00
Carlos Bordon d57dbb9e76 Updated script execution 2025-12-04 15:40:14 -03:00
Carlos Bordon 09d62e90bf Updated Wazuh app configuration file 2025-12-04 15:32:32 -03:00
Carlos Bordon 133c6c94a1 Updated config.sh for Wazuh dashboard 2025-12-04 14:55:08 -03:00
Carlos Bordon 9f5847d2ad Updated config.sh for wazuh indexer 2025-12-04 14:45:56 -03:00
Carlos Bordon 70ce270235 Updated wazuh-indexer configuration 2025-12-04 14:34:51 -03:00
Carlos Bordon 0e84e10791 Updated test of Docker images 2025-12-04 14:17:59 -03:00
Carlos Bordon 19dda0c176 Updated wazuh certs tool url 2025-12-03 15:03:09 -03:00
Carlos Bordon 05aece7433 Added debug symbols for config.sh 2025-12-03 14:45:33 -03:00
Carlos Bordon fc8262b791 Testing with wazuh certs tool from 4.13 2025-12-03 14:15:57 -03:00
Carlos Bordon 9ebecf410e Testing the docker images build with filebeat reference removed 2025-12-03 11:49:22 -03:00
Wazuh CI f42ec2ba7c Merge pull request #2110 from wazuh/enhancement/wqa5045-bump-4.14.3
Bump 4.14.3 branch
2025-12-03 12:55:30 +01:00
wazuhci 982d3a649e feat: bump 4.14.3 2025-12-03 11:55:26 +00:00
Carlos Anguita ccbb78131b Merge pull request #2096 from wazuh/merge-4.14.2-into-main 2025-11-28 13:24:49 +01:00
Enrique Araque c037570220 Merge branch '4.14.2' into merge-4.14.2-into-main 2025-11-28 13:21:22 +01:00
Enrique Araque f751d0af6b Merge pull request #2087 from wazuh/merge-4.14.2-into-main
Merge 4.14.2 into main
2025-11-21 17:17:51 +01:00
Enrique Araque 3757a3faca Merge branch '4.14.2' into merge-4.14.2-into-main 2025-11-21 16:48:15 +01:00
Gonzalo Acuña 5285140096 Merge pull request #2081 from wazuh/change/2694-modify-deployments
Configure deployment with environment variables
2025-11-19 15:37:39 -03:00
Victor Carlos Erenu f3f8471496 Modify image tag and version 2025-11-19 01:30:36 +07:00
Victor Carlos Erenu 51c4751a1d fix wazuh_certs_tool parameter 2025-11-19 00:24:47 +07:00
Victor Carlos Erenu a832d96966 modify file extension 2025-11-19 00:17:10 +07:00
Victor Carlos Erenu 5b43cf9053 modify gitignore 2025-11-19 00:15:15 +07:00
Victor Carlos Erenu 6e3a11a01c Change variable name 2025-11-19 00:10:29 +07:00
Victor Carlos Erenu 819595a25f Delete url echo 2025-11-15 02:03:33 +07:00
Victor Carlos Erenu 8c0b724bd3 Delete url echo 2025-11-15 02:02:58 +07:00
Victor Carlos Erenu 1ceb1734e8 Modify cluster configuration 2025-11-15 01:16:01 +07:00
Victor Carlos Erenu 0fa0b3186a Add Changelog 2025-11-15 00:33:26 +07:00
Victor Carlos Erenu 1c6c1be20a Add newline 2025-11-15 00:18:57 +07:00
Victor Carlos Erenu fb6de67a94 Delete Filebeat DN 2025-11-15 00:13:49 +07:00
Victor Carlos Erenu 1e343cf274 Modify docker deployments 2025-11-15 00:04:22 +07:00
Carlos Anguita b6bbd7de04 Merge pull request #2075 from wazuh/merge-4.14.2-into-main 2025-11-13 10:55:18 +01:00
Enrique Araque d73c158a9a Merge branch '4.14.2' into merge-4.14.2-into-main 2025-11-13 10:53:01 +01:00
Gonzalo Acuña 2f02e0adeb Merge pull request #2072 from wazuh/change/2693-delete-config-files
Exclude config files customized from image build
2025-11-11 15:39:59 -03:00
Victor Carlos Erenu d60c2ebb35 dashboard entrypoint 2025-11-11 21:47:44 +07:00
Victor Carlos Erenu c9f379d02e Add download check 2025-11-11 21:44:08 +07:00
Victor Carlos Erenu cd8253845f Modify cert generation process 2025-11-11 20:24:45 +07:00
Victor Carlos Erenu e104803267 Add Wazuh dashboard ad manager entrypoint configuration 2025-11-11 00:13:46 +07:00
Carlos Bordon d444c12b85 Merge pull request #2070 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-11-07 14:27:39 -03:00
Gonzalo Acuña 530cae664a Merge branch 'main' into merge-4.14.1-into-main 2025-11-07 14:19:57 -03:00
Victor Carlos Erenu 9f12a03bfc Delete old comment 2025-11-05 22:12:17 +07:00
Victor Carlos Erenu 742a948715 Delete config files and adapt dockerfiles 2025-11-05 22:08:36 +07:00
Gonzalo Acuña 1e55bb13ca Merge pull request #2062 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-10-31 14:46:28 -03:00
Carlos Bordon 7854ca13b4 Merge 4.14.1 into main 2025-10-31 14:39:58 -03:00
Gonzalo Acuña 4710105faa Merge pull request #2058 from wazuh/change/2695-package-install-option
Modify Wazuh components install method
2025-10-30 16:21:00 -03:00
Victor Carlos Erenu 913dd89e27 Add changelog 2025-10-31 01:01:58 +07:00
Victor Carlos Erenu fd5034c3d5 Modify packages_url.txt filename 2025-10-31 00:44:42 +07:00
Victor Carlos Erenu eb49d515d8 Add free space step 2025-10-30 23:32:32 +07:00
Victor Carlos Erenu 8c6a0a9319 Add free space step 2025-10-30 23:28:06 +07:00
Victor Carlos Erenu cb8a69026f Add url variables 2025-10-30 23:09:19 +07:00
Victor Carlos Erenu 46829ed9ee Add architecture target 2025-10-30 22:58:39 +07:00
Victor Carlos Erenu d654b17189 Add packages-url.txt artifact 2025-10-30 22:35:14 +07:00
Victor Carlos Erenu d46c4ef5b2 Add rpm path 2025-10-30 22:32:31 +07:00
Victor Carlos Erenu 34ebf7a859 Add quotes to URLs 2025-10-30 22:23:29 +07:00
Victor Carlos Erenu 3a605b3f6a Delete filebeat options 2025-10-30 22:17:16 +07:00
Victor Carlos Erenu babaea694e Change install option 2025-10-30 22:11:30 +07:00
Gonzalo Acuña c893d86b4a Merge pull request #2054 from wazuh/change/2697-image-workflow-rebuild
Image builder Workflow Rebuild
2025-10-27 15:32:34 -03:00
Victor Carlos Erenu 9882a9ca6d Change expiration time 2025-10-28 01:29:44 +07:00
Victor Ereñú 355daccb69 Merge branch 'main' into change/2697-image-workflow-rebuild 2025-10-28 01:11:45 +07:00
Victor Carlos Erenu 184675bab5 Modify Wazuh image builder 2025-10-28 01:09:49 +07:00
Carlos Bordon 2df9e3a942 Merge pull request #2049 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-10-23 13:01:59 -03:00
Victor Carlos Erenu 152a5476f7 Resolving conflicts 2025-10-23 22:56:51 +07:00
Gonzalo Acuña 53a5d1a7e4 Merge pull request #2030 from wazuh/enhancement/1933-server-clean-up
Wazuh server clean-up
2025-10-03 14:03:37 -03:00
vcerenu 93812b3d07 Add changelog 2025-10-01 14:26:22 -03:00
vcerenu cb6fa28bbc Wazuh server clean-up 2025-10-01 13:30:25 -03:00
Gonzalo Acuña e6f077bb1f Merge pull request #2019 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-09-24 15:44:43 -03:00
Victor Ereñú 35af57be29 Merge branch 'main' into merge-4.14.1-into-main 2025-09-24 15:07:39 -03:00
Gonzalo Acuña 87be7e6b36 Merge pull request #2008 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-09-19 06:19:22 -03:00
Gonzalo Acuña 180236e269 Merge branch 'main' into merge-4.14.1-into-main 2025-09-19 05:41:23 -03:00
Gonzalo Acuña e0f6ab5dda Merge pull request #1993 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-09-05 09:30:30 -03:00
Victor Ereñú a990518208 Merge branch 'main' into merge-4.14.1-into-main 2025-09-05 09:29:24 -03:00
Gonzalo Acuña a136444ee9 Merge pull request #1974 from wazuh/merge-4.14.1-into-main
Merge 4.14.1 into main
2025-08-14 09:03:55 -03:00
vcerenu 0989e11d43 Resolving conflicts 2025-08-14 09:00:41 -03:00
vcerenu 6c87ecf7f0 Resolving conflicts 2025-08-14 08:56:57 -03:00
Gonzalo Acuña c129cd9835 Merge pull request #1945 from wazuh/merge-4.14.0-into-main
Merge 4.14.0 into main
2025-07-25 10:11:45 -03:00
vcerenu a1afcd2c40 Merge branch 'main' of github.com:wazuh/wazuh-docker into merge-4.14.0-into-main 2025-07-25 10:00:39 -03:00
Carlos Anguita a809b4b60b Merge pull request #1903 from wazuh/merge-4.14.0-into-main 2025-06-27 12:34:13 +02:00
Gonzalo Acuña 78948b164a Merge pull request #1899 from wazuh/enhancement/1891-opensearch-deprecated-settings
Fix Opensearch deprecated settings
2025-06-23 13:55:48 -03:00
fcaffieri de11f97bf0 Update CHANGELOG 2025-06-23 13:41:56 -03:00
fcaffieri f7cbdd4884 Update CHANGELOG 2025-06-23 13:33:22 -03:00
fcaffieri 184802c3b9 Fix Opensearch deprecated settings 2025-06-23 13:29:39 -03:00
Gonzalo Acuña 6bac41a05d Merge pull request #1895 from wazuh/enhancement/1892-bumper-main
Bumper propagation to main
2025-06-19 11:44:56 -03:00
Carlos Bordon a3479b0035 Merge pull request #1888 from wazuh/merge-4.14.0-into-main
Merge 4.14.0 into main
2025-06-13 10:04:25 -03:00
Carlos Anguita López f57f0b33f2 Merge branch '4.14.0' into merge-4.14.0-into-main 2025-06-13 14:59:48 +02:00
Gonzalo Acuña 99a703136d Merge pull request #1868 from wazuh/merge-4.14.0-into-main
Merge 4.14.0 into main
2025-06-05 16:18:46 -03:00
c-bordon c111f8497e Merge 4.14.0 into main 2025-06-05 16:17:18 -03:00
Gonzalo Acuña 43b129c857 Merge pull request #1857 from wazuh/enhancement/2385-bump-5.0.0-technical-documentation
Bump 5.0.0 technical documentation
2025-05-30 11:21:43 -03:00
vcerenu f1a3a48c1a Bump 5.0.0 technical documentation 2025-05-30 11:18:10 -03:00
Carlos Bordon 3717c6cfe2 Merge pull request #1850 from wazuh/enhancement/remove-4.12.2-entries-from-main-branch
Remove 4.12.2 references from 4.14.0 branch
2025-05-29 09:32:14 -03:00
fcaffieri cd69030b16 Remove 4.12.2 references from 4.14.0 branch 2025-05-29 09:30:11 -03:00
Gonzalo Acuña 662d5aaa70 Merge pull request #1845 from wazuh/merge-4.14.0-into-main
Merge 4.14.0 into main
2025-05-27 15:37:49 -03:00
vcerenu c6327ac7a2 Resolving conflicts 2025-05-27 15:30:26 -03:00
Gonzalo Acuña 9a9da404a7 Merge pull request #1821 from wazuh/enhancement/1819-bump-5.0.0-version
Bump 5.0.0 version
2025-05-13 15:01:55 -03:00
vcerenu 02de528417 Bump 5.0.0 version 2025-05-13 14:54:48 -03:00
122 changed files with 7286 additions and 5746 deletions
+4 -6
View File
@@ -1,6 +1,4 @@
WAZUH_VERSION=4.14.2
WAZUH_IMAGE_VERSION=4.14.2
WAZUH_TAG_REVISION=1
FILEBEAT_TEMPLATE_BRANCH=4.14.2
WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.5.tar.gz
WAZUH_UI_REVISION=1
WAZUH_VERSION=5.0.0
WAZUH_IMAGE_VERSION=5.0.0
WAZUH_REGISTRY=docker.io
IMAGE_TAG=5.0.0
+12 -76
View File
@@ -1,103 +1,39 @@
file:
/etc/filebeat/filebeat.yml:
exists: true
mode: "0644"
owner: root
group: root
filetype: file
contains: []
/var/ossec/bin/wazuh-control:
/var/wazuh-manager/bin/wazuh-manager-control:
exists: true
mode: "0750"
owner: root
group: root
filetype: file
contains: []
/var/ossec/etc/lists/audit-keys:
exists: true
mode: "0660"
owner: wazuh
group: wazuh
filetype: file
contains: []
/var/ossec/etc/ossec.conf:
/var/wazuh-manager/etc/wazuh-manager.conf:
exists: true
mode: "0660"
owner: root
group: wazuh
group: wazuh-manager
filetype: file
contains: []
/var/ossec/etc/rules/local_rules.xml:
/var/wazuh-manager/etc/sslmanager.cert:
exists: true
mode: "0660"
owner: wazuh
group: wazuh
filetype: file
contains: []
/var/ossec/etc/sslmanager.cert:
exists: true
mode: "0640"
mode: "0644"
owner: root
group: root
filetype: file
contains: []
/var/ossec/etc/sslmanager.key:
/var/wazuh-manager/etc/sslmanager.key:
exists: true
mode: "0640"
mode: "0600"
owner: root
group: root
filetype: file
contains: []
package:
filebeat:
installed: true
versions:
- 7.10.2
wazuh-manager:
installed: true
versions:
- 4.14.2
port:
tcp:1514:
listening: true
ip:
- 0.0.0.0
tcp:1515:
listening: true
ip:
- 0.0.0.0
tcp:55000:
listening: true
ip:
- 0.0.0.0
process:
filebeat:
running: true
wazuh-analysisd:
running: true
wazuh-authd:
running: true
wazuh-execd:
running: true
wazuh-monitord:
running: true
wazuh-remoted:
running: true
wazuh-syscheckd:
running: true
s6-supervise:
running: true
wazuh-db:
running: true
wazuh-modulesd:
running: true
user:
wazuh:
wazuh-manager:
exists: true
groups:
- wazuh
home: /var/ossec
- wazuh-manager
home: /var/wazuh-manager
shell: /sbin/nologin
group:
wazuh:
exists: true
wazuh-manager:
exists: true
-39
View File
@@ -1,39 +0,0 @@
COMMAND_TO_EXECUTE="filebeat test output"
MASTER_CONTAINERS=$(docker ps --format '{{.Names}}' | grep -E 'master')
if [ -z "$MASTER_CONTAINERS" ]; then
echo "No containers were found with 'master' in their name."
else
for MASTER_CONTAINERS in $MASTER_CONTAINERS; do
FILEBEAT_OUTPUT=$(docker exec "$MASTER_CONTAINERS" $COMMAND_TO_EXECUTE)
FILEBEAT_STATUS=$(echo "${FILEBEAT_OUTPUT}" | grep -c OK)
if [[ $FILEBEAT_STATUS -eq 7 ]]; then
echo "No errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
else
echo "Errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
exit 1
fi
done
fi
MASTER_CONTAINERS=$(docker ps --format '{{.Names}}' | grep -E 'worker')
if [ -z "$MASTER_CONTAINERS" ]; then
echo "No containers were found with 'worker' in their name."
else
for MASTER_CONTAINERS in $MASTER_CONTAINERS; do
FILEBEAT_OUTPUT=$(docker exec "$MASTER_CONTAINERS" $COMMAND_TO_EXECUTE)
FILEBEAT_STATUS=$(echo "${FILEBEAT_OUTPUT}" | grep -c OK)
if [[ $FILEBEAT_STATUS -eq 7 ]]; then
echo "No errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
else
echo "Errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
exit 1
fi
done
fi
+7 -7
View File
@@ -1,16 +1,16 @@
log1=$(docker exec multi-node_wazuh.master_1 sh -c 'cat /var/ossec/logs/ossec.log' | grep -P "ERR|WARN|CRIT")
log1=$(docker exec multi-node_wazuh.master_1 sh -c 'cat /var/wazuh-manager/logs/wazuh-manager.log' | grep -P "ERR|WARN|CRIT")
if [[ -z "$log1" ]]; then
echo "No errors in master ossec.log"
echo "No errors in master wazuh-manager.log"
else
echo "Errors in master ossec.log:"
echo "Errors in master wazuh-manager.log:"
echo "${log1}"
exit 1
fi
log2=$(docker exec multi-node_wazuh.worker_1 sh -c 'cat /var/ossec/logs/ossec.log' | grep -P "ERR|WARN|CRIT")
log2=$(docker exec multi-node_wazuh.worker_1 sh -c 'cat /var/wazuh-manager/logs/wazuh-manager.log' | grep -P "ERR|WARN|CRIT")
if [[ -z "${log2}" ]]; then
echo "No errors in worker ossec.log"
echo "No errors in worker wazuh-manager.log"
else
echo "Errors in worker ossec.log:"
echo "Errors in worker wazuh-manager.log:"
echo "${log2}"
exit 1
fi
fi
-20
View File
@@ -1,20 +0,0 @@
COMMAND_TO_EXECUTE="filebeat test output"
MASTER_CONTAINERS=$(docker ps --format '{{.Names}}' | grep -E 'manager')
if [ -z "$MASTER_CONTAINERS" ]; then
echo "No containers were found with 'manager' in their name."
else
for MASTER_CONTAINERS in $MASTER_CONTAINERS; do
FILEBEAT_OUTPUT=$(docker exec "$MASTER_CONTAINERS" $COMMAND_TO_EXECUTE)
FILEBEAT_STATUS=$(echo "${FILEBEAT_OUTPUT}" | grep -c OK)
if [[ $FILEBEAT_STATUS -eq 7 ]]; then
echo "No errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
else
echo "Errors in filebeat"
echo "${FILEBEAT_OUTPUT}"
exit 1
fi
done
fi
+4 -4
View File
@@ -1,8 +1,8 @@
log=$(docker exec single-node_wazuh.manager_1 sh -c 'cat /var/ossec/logs/ossec.log' | grep -P "ERR|WARN|CRIT")
log=$(docker exec single-node_wazuh.manager_1 sh -c 'cat /var/wazuh-manager/logs/wazuh-manager.log' | grep -P "ERR|WARN|CRIT")
if [[ -z "$log" ]]; then
echo "No errors in ossec.log"
echo "No errors in wazuh-manager.log"
else
echo "Errors in ossec.log:"
echo "Errors in wazuh-manager.log:"
echo "${log}"
exit 1
fi
fi
@@ -1,33 +1,30 @@
run-name: Launch Push Docker Images - ${{ inputs.id }}
name: Push Docker Images
run-name: (4.x) Build and push images - ${{ inputs.dev && 'dev' || 'release' }} - ${{ inputs.id }}
name: (4.x) Build and push images
on:
workflow_dispatch:
inputs:
image_tag:
description: 'Docker image tag'
default: '4.14.2'
default: '4.14.7'
required: true
docker_reference:
description: 'wazuh-docker reference'
required: true
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: true
filebeat_module_version:
description: 'Filebeat module version'
default: '0.5'
required: true
type: string
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: false
type: string
revision:
description: 'Package revision'
default: '1'
required: true
push_images:
description: 'Push images'
type: boolean
default: true
required: true
id:
description: "ID used to identify the workflow uniquely."
type: string
@@ -41,33 +38,28 @@ on:
inputs:
image_tag:
description: 'Docker image tag'
default: '4.14.2'
default: '4.14.7'
required: true
type: string
docker_reference:
description: 'wazuh-docker reference'
required: false
type: string
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: true
type: string
filebeat_module_version:
description: 'Filebeat module version'
default: '0.5'
required: true
type: string
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: false
type: string
revision:
description: 'Package revision'
default: '1'
required: true
type: string
push_images:
description: 'Push images'
type: boolean
default: true
required: true
id:
description: "ID used to identify the workflow uniquely."
type: string
@@ -79,14 +71,28 @@ on:
required: false
jobs:
build-and-push:
runs-on: ubuntu-22.04
setup:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
permissions:
id-token: write
contents: read
env:
IMAGE_REGISTRY: ${{ inputs.dev && vars.IMAGE_REGISTRY_DEV || vars.IMAGE_REGISTRY_PROD }}
IMAGE_TAG: ${{ inputs.image_tag }}
FILEBEAT_MODULE_VERSION: ${{ inputs.filebeat_module_version }}
REVISION: ${{ inputs.revision }}
outputs:
WAZUH_COMPONENTS: ${{ steps.compute-outputs.outputs.WAZUH_COMPONENTS }}
ALL_PRODUCTS_SELECTED: ${{ steps.compute-outputs.outputs.ALL_PRODUCTS_SELECTED }}
steps:
- name: Print inputs
run: |
echo "---------------------------------------------"
echo "Running Procedure_push_docker_images workflow"
echo "Running 4_build_and_push_images workflow"
echo "---------------------------------------------"
echo "* BRANCH: ${{ github.ref }}"
echo "* COMMIT: ${{ github.sha }}"
@@ -96,27 +102,85 @@ jobs:
echo "* id: ${{ inputs.id }}"
echo "* image_tag: ${{ inputs.image_tag }}"
echo "* docker_reference: ${{ inputs.docker_reference }}"
echo "* products: ${{ inputs.products }}"
echo "* filebeat_module_version: ${{ inputs.filebeat_module_version }}"
echo "* products: ${{ inputs.products }}"
echo "* revision: ${{ inputs.revision }}"
echo "* push_images: ${{ inputs.push_images }}"
echo "* dev: ${{ inputs.dev }}"
echo "---------------------------------------------"
- name: Set up variables
id: compute-outputs
run: |
# Use the default list if products is empty
PRODUCTS="${{ inputs.products }}"
if [[ -z "$PRODUCTS" || "$PRODUCTS" == "null" ]]; then
PRODUCTS="wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent"
fi
# Check if all 4 core components are present in the string
if [[ "$PRODUCTS" == *"wazuh-manager"* && "$PRODUCTS" == *"wazuh-dashboard"* && "$PRODUCTS" == *"wazuh-indexer"* && "$PRODUCTS" == *"wazuh-agent"* ]]; then
echo "ALL_PRODUCTS_SELECTED=true" >> $GITHUB_OUTPUT
else
echo "ALL_PRODUCTS_SELECTED=false" >> $GITHUB_OUTPUT
fi
# Convert to JSON for the matrix (Your existing logic)
IFS=',' read -ra COMPONENTS <<< "$PRODUCTS"
JSON_ARRAY=$(printf '%s\n' "${COMPONENTS[@]}" | jq -R . | jq -s -c .)
echo "WAZUH_COMPONENTS=$JSON_ARRAY" >> $GITHUB_OUTPUT
build-and-push:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
permissions:
id-token: write
contents: read
needs:
- setup
strategy:
fail-fast: false # all jobs will run even if one fails
matrix:
wazuh_component: ${{ fromJson(needs.setup.outputs.WAZUH_COMPONENTS) }}
env:
IMAGE_REGISTRY: ${{ inputs.dev && vars.IMAGE_REGISTRY_DEV || vars.IMAGE_REGISTRY_PROD }}
IMAGE_TAG: ${{ inputs.image_tag }}
REVISION: ${{ inputs.revision }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
ref: ${{ inputs.docker_reference }}
- name: Log in to Docker Hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Configure aws credentials
if: ${{ inputs.dev == true }}
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_IAM_DOCKER_ROLE }}
aws-region: "${{ secrets.AWS_REGION }}"
- name: Log in to Amazon ECR
if: ${{ inputs.dev == true }}
uses: aws-actions/amazon-ecr-login@v2
- name: Build Wazuh images
run: |
IMAGE_TAG=${{ inputs.image_tag }}
IMAGE_TAG="${{ inputs.image_tag }}"
FILEBEAT_MODULE_VERSION=${{ inputs.filebeat_module_version }}
REVISION=${{ inputs.revision }}
@@ -128,13 +192,13 @@ jobs:
fi
DEV_STAGE=${tokens[1]}
WAZUH_VER=${tokens[0]}
./build-docker-images/build-images.sh -v $WAZUH_VER -r $REVISION -d $DEV_STAGE -f $FILEBEAT_MODULE_VERSION
./build-images.sh -v $WAZUH_VER -r $REVISION -d $DEV_STAGE -f $FILEBEAT_MODULE_VERSION -rg $IMAGE_REGISTRY -m -c ${{ matrix.wazuh_component }}
else
./build-docker-images/build-images.sh -v $IMAGE_TAG -r $REVISION -f $FILEBEAT_MODULE_VERSION
./build-images.sh -v $IMAGE_TAG -r $REVISION -f $FILEBEAT_MODULE_VERSION -rg $IMAGE_REGISTRY -m -c ${{ matrix.wazuh_component }}
fi
# Save .env file (generated by build-images.sh) contents to $GITHUB_ENV
ENV_FILE_PATH=".env"
ENV_FILE_PATH="../.env"
if [ -f $ENV_FILE_PATH ]; then
while IFS= read -r line || [ -n "$line" ]; do
@@ -144,18 +208,27 @@ jobs:
echo "The environment file $ENV_FILE_PATH does not exist!"
exit 1
fi
working-directory: ./build-docker-images
notify:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs: [setup, build-and-push]
# Only run if NOT dev AND all products were selected
if: ${{ inputs.dev == false && needs.setup.outputs.ALL_PRODUCTS_SELECTED == 'true' }}
steps:
- name: Image exists validation
if: ${{ inputs.push_images }}
id: validation
run: |
IMAGE_TAG=${{ inputs.image_tag }}
IMAGE_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
PURPOSE=""
if [[ "$IMAGE_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
if docker manifest inspect wazuh/wazuh-manager:$IMAGE_TAG > /dev/null 2>&1; then
if docker manifest inspect $IMAGE_REGISTRY/wazuh/wazuh-manager:$IMAGE_TAG > /dev/null 2>&1; then
PURPOSE="regeneration"
echo "Image wazuh/wazuh-manager:$IMAGE_TAG exists. Setting PURPOSE to 'regeneration'"
echo "Image wazuh/wazuh-manager:$IMAGE_TAG exists. Setting PURPOSE to 'regeneration'"
else
PURPOSE="new release"
echo "Image wazuh/wazuh-manager:$IMAGE_TAG does NOT exist. Setting PURPOSE to 'new release'"
@@ -170,26 +243,16 @@ jobs:
echo "purpose=$PURPOSE" >> $GITHUB_OUTPUT
- name: Tag and Push Wazuh images
if: ${{ inputs.push_images }}
run: |
IMAGE_TAG="${{ inputs.image_tag }}$( [ "${{ inputs.dev }}" == "true" ] && echo '-dev' || true )"
IMAGE_NAMES=${{ inputs.products }}
IFS=',' read -r -a images <<< "$IMAGE_NAMES"
for image in "${images[@]}"; do
echo "Tagging and pushing wazuh/$image:${WAZUH_VERSION} to wazuh/$image:$IMAGE_TAG"
docker tag wazuh/$image:${WAZUH_VERSION} wazuh/$image:$IMAGE_TAG
echo "Pushing wazuh/$image:$IMAGE_TAG ..."
docker push wazuh/$image:$IMAGE_TAG
done
- name: GH issue notification
if: ${{ inputs.push_images && steps.validation.outputs.purpose != '' }}
if: ${{ steps.validation.outputs.purpose != '' }}
env:
GH_TOKEN: ${{ secrets.NOTIFICATION_GH_ARTIFACT_TOKEN }}
run: |
IMAGE_TAG=${{ inputs.image_tag }}
PURPOSE="${{ steps.validation.outputs.purpose }}"
GH_TITLE=""
GH_MESSAGE=""
PURPOSE="${{ steps.validation.outputs.purpose }}"
## Setting GH issue title
GH_TITLE="Artifactory vulnerabilities update \`v$IMAGE_TAG\`"
@@ -240,6 +303,3 @@ jobs:
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_SIZE_ID }} --single-select-option-id ${{ secrets.NOTIFICATION_PROJECT_SIZE_OPTION_ID }}
## Setting Subteam
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_SUBTEAM_ID }} --single-select-option-id ${{ secrets.NOTIFICATION_PROJECT_SUBTEAM_OPTION_ID }}
env:
GH_TOKEN: ${{ secrets.NOTIFICATION_GH_ARTIFACT_TOKEN }}
+5 -5
View File
@@ -1,4 +1,4 @@
name: Repository bumper
name: (4.x) Repository bumper
run-name: Bump ${{ github.ref_name }} (${{ inputs.id }})
on:
@@ -30,8 +30,8 @@ on:
jobs:
bump:
name: Repository bumper
runs-on: ubuntu-22.04
name: Repository bumper 4.x
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
permissions:
contents: write
pull-requests: write
@@ -70,7 +70,7 @@ jobs:
export GPG_TTY=$(tty)
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
# Using workflow-specific GITHUB_TOKEN because currently CI_WAZUHCI_BUMPER_TOKEN
# doesn't have all the necessary permissions
@@ -139,4 +139,4 @@ jobs:
echo "Branch: ${{ steps.vars.outputs.branch_name }}"
echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}"
echo "Bumper scripts logs:"
cat ${BUMP_LOG_PATH}/repository_bumper*log
cat ${BUMP_LOG_PATH}/repository_bumper*log
@@ -1,17 +1,42 @@
name: Wazuh Docker pipeline
name: (4.x) Docker PR check
on: [pull_request]
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- 4.*
paths:
- 'build-docker-images/**'
- 'multi-node/**'
- 'single-node/**'
- 'wazuh-agent/**'
- '.github/**'
env:
ARTIFACTS_LOCAL_DIR: /home/runner/work/wazuh-docker/wazuh-docker/docker-images
ARTIFACT_NAMES: |
wazuh-manager.tar
wazuh-indexer.tar
wazuh-dashboard.tar
wazuh-agent.tar
jobs:
build-docker-images:
runs-on: ubuntu-22.04
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Log in to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build Wazuh images
run: build-docker-images/build-images.sh
run: ./build-images.sh
working-directory: ./build-docker-images
- name: Create enviroment variables
run: cat .env > $GITHUB_ENV
@@ -24,82 +49,50 @@ jobs:
docker save wazuh/wazuh-dashboard:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-dashboard.tar
docker save wazuh/wazuh-agent:${{env.WAZUH_IMAGE_VERSION}} -o /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-agent.tar
- name: Temporarily save Wazuh manager Docker image
uses: actions/upload-artifact@v4
with:
name: docker-artifact-manager
path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-manager.tar
retention-days: 1
- name: Temporarily save Wazuh indexer Docker image
uses: actions/upload-artifact@v4
with:
name: docker-artifact-indexer
path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-indexer.tar
retention-days: 1
- name: Temporarily save Wazuh dashboard Docker image
uses: actions/upload-artifact@v4
with:
name: docker-artifact-dashboard
path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-dashboard.tar
retention-days: 1
- name: Temporarily save Wazuh agent Docker image
uses: actions/upload-artifact@v4
with:
name: docker-artifact-agent
path: /home/runner/work/wazuh-docker/wazuh-docker/docker-images/wazuh-agent.tar
retention-days: 1
- name: Install Goss
uses: e1himself/goss-installation-action@v1.0.3
with:
version: v0.3.16
- name: Execute Goss tests (wazuh-manager)
run: dgoss run wazuh/wazuh-manager:${{env.WAZUH_IMAGE_VERSION}}
- name: Temporarily save Wazuh Docker images
env:
GOSS_SLEEP: 30
GOSS_FILE: .github/.goss.yaml
S3_ARTIFACTS_PATH: ${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/4_pr_check/${{ github.run_id }}
run: |
echo "Uploading Docker image artifacts to S3..."
while IFS= read -r artifact; do
[ -z "$artifact" ] && continue
echo " Uploading: $artifact"
aws s3 cp "${ARTIFACTS_LOCAL_DIR}/${artifact}" "${S3_ARTIFACTS_PATH}/${artifact}"
done <<< "$ARTIFACT_NAMES"
echo "All artifacts uploaded successfully."
check-single-node:
runs-on: ubuntu-22.04
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs: build-docker-images
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Create enviroment variables
run: cat .env > $GITHUB_ENV
- name: Retrieve saved Wazuh indexer Docker image
uses: actions/download-artifact@v4
- name: Log in to Docker Hub
uses: docker/login-action@v4
with:
name: docker-artifact-indexer
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Retrieve saved Wazuh manager Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-manager
- name: Retrieve saved Wazuh dashboard Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-dashboard
- name: Retrieve saved Wazuh agent Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-agent
- name: Docker load
- name: Retrieve saved Wazuh Docker images and load them into Docker
env:
S3_ARTIFACTS_PATH: s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/4_pr_check/${{ github.run_id }}
ARTIFACTS_LOCAL_DIR: /home/runner/work/wazuh-docker/wazuh-docker/docker-images
run: |
docker load --input ./wazuh-indexer.tar
docker load --input ./wazuh-dashboard.tar
docker load --input ./wazuh-manager.tar
docker load --input ./wazuh-agent.tar
mkdir -p "${ARTIFACTS_LOCAL_DIR}"
echo "Downloading and loading Docker image artifacts from S3..."
while IFS= read -r artifact; do
[ -z "$artifact" ] && continue
echo " Downloading: $artifact"
aws s3 cp "${S3_ARTIFACTS_PATH}/${artifact}" "${ARTIFACTS_LOCAL_DIR}/${artifact}"
echo " Loading into Docker: $artifact"
docker load -i "${ARTIFACTS_LOCAL_DIR}/${artifact}"
done <<< "$ARTIFACT_NAMES"
echo "All artifacts downloaded and loaded successfully."
- name: Create single node certficates
run: docker compose -f single-node/generate-indexer-certs.yml run --rm generator
@@ -137,17 +130,6 @@ jobs:
exit 1
fi
- name: Check documents into wazuh-alerts index
run: |
sleep 120
docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"`"
if [[ $docs -gt 0 ]]; then
echo "wazuh-alerts index documents: ${docs}"
else
echo "wazuh-alerts index documents: ${docs}"
exit 1
fi
- name: Check Wazuh templates
run: |
qty_templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:SecretPassword -k -s | grep -P "wazuh|wazuh-agent|wazuh-statistics" | wc -l`"
@@ -201,50 +183,52 @@ jobs:
env:
TOKEN: $(curl -s -u wazuh-wui:MyS3cr37P450r.*- -k -X GET "https://0.0.0.0:55000/security/user/authenticate?raw=true")
- name: Check documents into wazuh-alerts index
run: |
sleep 120
docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"`"
if [[ $docs -gt 0 ]]; then
echo "wazuh-alerts index documents: ${docs}"
else
echo "wazuh-alerts index documents: ${docs}"
exit 1
fi
- name: Check errors in ossec.log for Wazuh manager
run: ./.github/single-node-log-check.sh
check-multi-node:
runs-on: ubuntu-22.04
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs: build-docker-images
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Create enviroment variables
run: cat .env > $GITHUB_ENV
- name: free disk space
uses: ./.github/free-disk-space
- name: Retrieve saved Wazuh dashboard Docker image
uses: actions/download-artifact@v4
- name: Log in to Docker Hub
uses: docker/login-action@v4
with:
name: docker-artifact-dashboard
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Retrieve saved Wazuh manager Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-manager
- name: Retrieve saved Wazuh indexer Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-indexer
- name: Retrieve saved Wazuh agent Docker image
uses: actions/download-artifact@v4
with:
name: docker-artifact-agent
- name: Docker load
- name: Retrieve saved Wazuh Docker images and load them into Docker
env:
S3_ARTIFACTS_PATH: s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/4_pr_check/${{ github.run_id }}
ARTIFACTS_LOCAL_DIR: /home/runner/work/wazuh-docker/wazuh-docker/docker-images
run: |
docker load --input ./wazuh-manager.tar
docker load --input ./wazuh-indexer.tar
docker load --input ./wazuh-dashboard.tar
docker load --input ./wazuh-agent.tar
rm -rf wazuh-manager.tar wazuh-indexer.tar wazuh-dashboard.tar wazuh-agent.tar
mkdir -p "${ARTIFACTS_LOCAL_DIR}"
echo "Downloading and loading Docker image artifacts from S3..."
while IFS= read -r artifact; do
[ -z "$artifact" ] && continue
echo " Downloading: $artifact"
aws s3 cp "${S3_ARTIFACTS_PATH}/${artifact}" "${ARTIFACTS_LOCAL_DIR}/${artifact}"
echo " Loading into Docker: $artifact"
docker load -i "${ARTIFACTS_LOCAL_DIR}/${artifact}"
done <<< "$ARTIFACT_NAMES"
echo "All artifacts downloaded and loaded successfully."
- name: Create multi node certficates
run: docker compose -f multi-node/generate-indexer-certs.yml run --rm generator
@@ -287,23 +271,6 @@ jobs:
exit 1
fi
- name: Check documents into wazuh-alerts index
run: |
until [[ $(``curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"``) -gt 0 ]]
do
echo 'Waiting for Wazuh indexer events'
free -m
df -h
sleep 10
done
docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"`"
if [[ $docs -gt 0 ]]; then
echo "wazuh-alerts index documents: ${docs}"
else
echo "wazuh-alerts index documents: ${docs}"
exit 1
fi
- name: Check Wazuh templates
run: |
qty_templates="`curl -XGET "https://0.0.0.0:9200/_cat/templates" -u admin:SecretPassword -k -s | grep "wazuh" | wc -l`"
@@ -364,5 +331,22 @@ jobs:
env:
TOKEN: $(curl -s -u wazuh-wui:MyS3cr37P450r.*- -k -X GET "https://0.0.0.0:55000/security/user/authenticate?raw=true")
- name: Check documents into wazuh-alerts index
run: |
until [[ $(``curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"``) -gt 0 ]]
do
echo 'Waiting for Wazuh indexer events'
free -m
df -h
sleep 10
done
docs="`curl -XGET "https://0.0.0.0:9200/wazuh-alerts*/_count" -u admin:SecretPassword -k -s | jq -r ".count"`"
if [[ $docs -gt 0 ]]; then
echo "wazuh-alerts index documents: ${docs}"
else
echo "wazuh-alerts index documents: ${docs}"
exit 1
fi
- name: Check errors in ossec.log for Wazuh manager
run: ./.github/multi-node-log-check.sh
@@ -0,0 +1,511 @@
run-name: Build and push images 5.x - ${{ inputs.dev && 'dev' || 'release' }} - ${{ inputs.id }}
name: (5.x) Build and push images
on:
workflow_dispatch:
inputs:
image_tag:
description: 'Docker image tag'
default: 'v5.0.0-beta3'
required: true
docker_reference:
description: 'wazuh-docker reference'
required: true
wazuh_automation_reference:
description: 'Branch or tag of the wazuh-automation repository'
required: false
default: 'v5.0.0-beta3'
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: false
type: string
commit_list:
description: 'Wazuh components revisions (only for dev): json array with commit-hash for each product'
type: string
default: '["latest", "latest", "latest", "latest"]'
assistant_revision:
description: 'Revision for Wazuh installation assistant tools like Wazuh password tool (only for dev)'
type: string
default: 'latest'
required: false
id:
description: "ID used to identify the workflow uniquely."
type: string
required: false
dev:
description: "Add tag suffix '-dev' to the image tag ?"
type: boolean
default: true
required: false
workflow_call:
inputs:
image_tag:
description: 'Docker image tag'
default: 'v5.0.0-beta3'
required: true
type: string
docker_reference:
description: 'wazuh-docker reference'
required: false
type: string
wazuh_automation_reference:
description: 'Branch or tag of the wazuh-automation repository'
required: false
default: 'v5.0.0-beta3'
type: string
products:
description: 'Comma-separated list of the image names to build and push'
default: 'wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent'
required: false
type: string
commit_list:
description: 'Wazuh components revisions (only for dev): json array with commit-hash for each product'
type: string
default: '["latest", "latest", "latest", "latest"]'
assistant_revision:
description: 'Revision for Wazuh installation assistant tools like Wazuh password tool (only for dev)'
type: string
default: 'latest'
required: false
id:
description: "ID used to identify the workflow uniquely."
type: string
required: false
dev:
description: "Add tag suffix '-dev' to the image tag ?"
type: boolean
default: false
required: false
permissions:
id-token: write
contents: read
env:
LOCAL_ARTIFACT_URLS_FILEPATH: /tmp/${{ vars.ARTIFACT_URL_FILE_NAME }}
jobs:
setup:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
outputs:
WAZUH_COMPONENTS: ${{ steps.compute-outputs.outputs.WAZUH_COMPONENTS }}
COMMIT_LIST: ${{ steps.compute-outputs.outputs.COMMIT_LIST }}
ALL_PRODUCTS_SELECTED: ${{ steps.compute-outputs.outputs.ALL_PRODUCTS_SELECTED }}
steps:
- name: Print inputs
run: |
echo "---------------------------------------------"
echo "Running 5_build_and_push_images workflow"
echo "---------------------------------------------"
echo "* BRANCH: ${{ github.ref }}"
echo "* COMMIT: ${{ github.sha }}"
echo "---------------------------------------------"
echo "Inputs provided:"
echo "---------------------------------------------"
echo "* id: ${{ inputs.id }}"
echo "* image_tag: ${{ inputs.image_tag }}"
echo "* docker_reference: ${{ inputs.docker_reference }}"
echo "* wazuh_automation_reference: ${{ inputs.wazuh_automation_reference }}"
echo "* products: ${{ inputs.products }}"
echo "* dev: ${{ inputs.dev }}"
echo "* commit_list: ${{ inputs.commit_list }}"
echo "* assistant_revision: ${{ inputs.assistant_revision }}"
echo "---------------------------------------------"
- name: Set up variables
id: compute-outputs
env:
PRODUCTS_INPUT: ${{ inputs.products }}
DEV_INPUT: ${{ inputs.dev }}
COMMIT_LIST_INPUT: ${{ inputs.commit_list }}
run: |
# Use the default list if products is empty
PRODUCTS="$PRODUCTS_INPUT"
if [[ -z "$PRODUCTS" || "$PRODUCTS" == "null" ]]; then
PRODUCTS="wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent"
fi
# Check if all 4 core components are present in the string
if [[ "$PRODUCTS" == *"wazuh-manager"* && "$PRODUCTS" == *"wazuh-dashboard"* && "$PRODUCTS" == *"wazuh-indexer"* && "$PRODUCTS" == *"wazuh-agent"* ]]; then
echo "ALL_PRODUCTS_SELECTED=true" >> $GITHUB_OUTPUT
else
echo "ALL_PRODUCTS_SELECTED=false" >> $GITHUB_OUTPUT
fi
# Set WAZUH_COMPONENTS
# Convert to JSON for the matrix (Your existing logic)
IFS=',' read -ra COMPONENTS <<< "$PRODUCTS"
JSON_ARRAY=$(printf '%s\n' "${COMPONENTS[@]}" | jq -R . | jq -s -c .)
echo "WAZUH_COMPONENTS=$JSON_ARRAY" >> $GITHUB_OUTPUT
# Set COMMIT_LIST
WC_COMMIT_LIST=""
if [[ "$DEV_INPUT" == "true" ]]; then
if [[ "$COMMIT_LIST_INPUT" != "null" && "$COMMIT_LIST_INPUT" != "" ]]; then
WC_COMMIT_LIST="$COMMIT_LIST_INPUT"
else
# Set commit list to "latest" for all components using WAZUH_COMPONENTS
COMPONENTS=($(echo "$WC_JSON_ARRAY" | jq -r '.[]'))
WC_COMMIT_LIST="["
for i in "${!COMPONENTS[@]}"; do
if [ $i -gt 0 ]; then
WC_COMMIT_LIST+=" ,"
fi
WC_COMMIT_LIST+="\"latest\""
done
WC_COMMIT_LIST+="]"
fi
echo "Revision list: $WC_COMMIT_LIST"
fi
echo "COMMIT_LIST=$WC_COMMIT_LIST" >> $GITHUB_OUTPUT
package-urls:
name: generate package urls
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs: setup
env:
WORKFLOW_VENV: "${{ github.workspace }}/workflow_venv"
GENERATE_PRESIGNED_URLS_SCRIPT_PATH: ${{ github.workspace }}/wazuh-automation/tools/sign_urls/generate_presigned_dev_urls.py
PRESIGNED_URLS_SCRIPT_PROCESS: "build_docker"
COMMIT_LIST: ${{ inputs.commit_list }}
ASSISTANT_REVISION: ${{ inputs.assistant_revision }}
steps:
- name: Checkout repository
if: ${{ inputs.dev == true }}
uses: actions/checkout@v4
with:
ref: ${{ inputs.docker_reference }}
persist-credentials: false
- name: Checkout wazuh/wazuh-automation repository
if: ${{ inputs.dev == true }}
uses: actions/checkout@v4
with:
repository: wazuh/wazuh-automation
ref: ${{ inputs.wazuh_automation_reference }}
token: ${{ secrets.GH_CLONE_TOKEN }}
path: wazuh-automation
persist-credentials: false
- name: Configure AWS credentials
if: ${{ inputs.dev == true }}
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_IAM_DOCKER_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Set up Python
if: ${{ inputs.dev == true }}
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install and configure python and workflow dependencies
if: ${{ inputs.dev == true }}
run: |
sudo apt-get update
sudo apt-get install -y jq
# Install yq
sudo curl -sL "https://github.com/mikefarah/yq/releases/download/v4.44.3/yq_linux_amd64" -o /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
sudo apt-get install -y python3-venv
python3 -m venv ${{ env.WORKFLOW_VENV }}
source ${{ env.WORKFLOW_VENV }}/bin/activate
pip install --upgrade pip
pip install pyyaml
- name: Get Wazuh version
if: ${{ inputs.dev == true }}
run: |
WAZUH_VERSION=$(jq -r '.version' VERSION.json)
if ! [[ "$WAZUH_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid version format: $WAZUH_VERSION"
exit 1
fi
WAZUH_MAJOR=$(echo "$WAZUH_VERSION" | cut -d '.' -f 1)
WAZUH_MINOR=$(echo "$WAZUH_VERSION" | cut -d '.' -f 1-2)
echo "WAZUH_VERSION=$WAZUH_VERSION" >> $GITHUB_ENV
echo "WAZUH_MAJOR=$WAZUH_MAJOR" >> $GITHUB_ENV
echo "WAZUH_MINOR=$WAZUH_MINOR" >> $GITHUB_ENV
- name: Get artifacts URLs file
if: ${{ inputs.dev == true }}
run: |
LOCAL_AWS_S3_BUCKET_DEV=${{ vars.AWS_S3_BUCKET_DEV }}
echo LOCAL_AWS_S3_BUCKET_DEV=$LOCAL_AWS_S3_BUCKET_DEV >> $GITHUB_ENV
- name: Generate presigned URLs for artifacts for dev packages
if: ${{ inputs.dev == true }}
env:
WAZUH_COMPONENTS: ${{ needs.setup.outputs.WAZUH_COMPONENTS }}
COMMIT_LIST: ${{ needs.setup.outputs.COMMIT_LIST }}
run: |
source "$WORKFLOW_VENV/bin/activate"
SCRIPT_PARAMS="--process $PRESIGNED_URLS_SCRIPT_PROCESS \
--wazuh-version $WAZUH_VERSION \
--aws-s3-bucket-dev $LOCAL_AWS_S3_BUCKET_DEV \
--assistant-revision $ASSISTANT_REVISION "
# Parse components and their revisions
COMPONENTS=($(echo "$WAZUH_COMPONENTS" | jq -r '.[]'))
REVISIONS=($(echo "$COMMIT_LIST" | jq -r '.[]'))
# Ensure the number of components matches the number of revisions
if [[ ${#COMPONENTS[@]} -ne ${#REVISIONS[@]} ]]; then
echo "Error: WAZUH_COMPONENTS and COMMIT_LIST length mismatch." >&2
echo " Components: ${#COMPONENTS[@]}, Revisions: ${#REVISIONS[@]}." >&2
echo " WAZUH_COMPONENTS=${WAZUH_COMPONENTS}" >&2
echo " COMMIT_LIST=${COMMIT_LIST}" >&2
exit 1
fi
# Map revisions to component names
for i in "${!COMPONENTS[@]}"; do
case "${COMPONENTS[$i]}" in
wazuh-manager)
SCRIPT_PARAMS+="--manager-revision ${REVISIONS[$i]} "
;;
wazuh-dashboard)
SCRIPT_PARAMS+="--dashboard-revision ${REVISIONS[$i]} "
;;
wazuh-indexer)
SCRIPT_PARAMS+="--indexer-revision ${REVISIONS[$i]} "
;;
wazuh-agent)
SCRIPT_PARAMS+="--agent-revision ${REVISIONS[$i]} "
;;
esac
done
python "$GENERATE_PRESIGNED_URLS_SCRIPT_PATH" \
$SCRIPT_PARAMS
- name: Save presigned URLs file to artifact
if: ${{ inputs.dev == true }}
run: |
echo "Uploading presigned URLs artifact..."
aws s3 cp "${{ env.LOCAL_ARTIFACT_URLS_FILEPATH }}" "s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/5_build_and_push_images/${{ github.run_id }}/${{ vars.ARTIFACT_URL_FILE_NAME }}"
build-and-push:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs:
- setup
- package-urls
strategy:
fail-fast: false # all jobs will run even if one fails
matrix:
wazuh_component: ${{ fromJson(needs.setup.outputs.WAZUH_COMPONENTS) }}
env:
IMAGE_REGISTRY: ${{ inputs.dev && vars.IMAGE_REGISTRY_DEV || vars.IMAGE_REGISTRY_PROD }}
IMAGE_TAG: ${{ inputs.image_tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.docker_reference }}
persist-credentials: false
- name: Log in to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Configure aws credentials
if: ${{ inputs.dev == true }}
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_IAM_DOCKER_ROLE }}
aws-region: "${{ secrets.AWS_REGION }}"
- name: Log in to Amazon ECR
if: ${{ inputs.dev == true }}
uses: aws-actions/amazon-ecr-login@v2
- name: Download artifact_urls.yaml (dev)
if: ${{ inputs.dev == true }}
run: |
echo "Downloading presigned URLs artifact..."
aws s3 cp "s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/5_build_and_push_images/${{ github.run_id }}/${{ vars.ARTIFACT_URL_FILE_NAME }}" "${{ env.LOCAL_ARTIFACT_URLS_FILEPATH }}"
mv "${{ env.LOCAL_ARTIFACT_URLS_FILEPATH }}" ./build-docker-images/${{ vars.ARTIFACT_URL_FILE_NAME }}
- name: Compute component reference (dev)
if: ${{ inputs.dev == true }}
env:
COMPONENT: ${{ matrix.wazuh_component }}
WAZUH_COMPONENTS: ${{ needs.setup.outputs.WAZUH_COMPONENTS }}
COMMIT_LIST: ${{ needs.setup.outputs.COMMIT_LIST }}
run: |
idx=$(jq -r --arg c "$COMPONENT" 'index($c)' <<<"$WAZUH_COMPONENTS")
ref=$(jq -r --argjson i "$idx" '.[ $i ]' <<<"$COMMIT_LIST")
echo "COMPONENT_REFS_JSON=[\"$ref\"]" >> "$GITHUB_ENV"
echo "Using component ref for $COMPONENT: $ref"
- name: Build Wazuh images
env:
DEV: ${{ inputs.dev }}
WAZUH_COMPONENT: ${{ matrix.wazuh_component }}
run: |
if [[ "$IMAGE_TAG" == *"-"* ]]; then
IFS='-' read -r -a tokens <<< "$IMAGE_TAG"
if [ -z "${tokens[1]}" ]; then
echo "Invalid image tag: $IMAGE_TAG"
exit 1
fi
DEV_STAGE=${tokens[1]}
WAZUH_VER=${tokens[0]}
if [ "$DEV" = true ]; then
./build-images.sh \
-v $WAZUH_VER \
-d $DEV_STAGE \
-rg $IMAGE_REGISTRY \
-m \
--dev \
-refs "$COMPONENT_REFS_JSON" \
-c $WAZUH_COMPONENT
else
./build-images.sh \
-v $WAZUH_VER \
-d $DEV_STAGE \
-rg $IMAGE_REGISTRY \
-m \
-c $WAZUH_COMPONENT
fi
else
if [ "$DEV" = true ]; then
./build-images.sh \
-v $IMAGE_TAG \
-rg $IMAGE_REGISTRY \
-m \
--dev \
-refs "$COMPONENT_REFS_JSON" \
-c $WAZUH_COMPONENT
else
./build-images.sh \
-v $IMAGE_TAG \
-rg $IMAGE_REGISTRY \
-m \
-c $WAZUH_COMPONENT
fi
fi
# Save .env file (generated by build-images.sh) contents to $GITHUB_ENV
ENV_FILE_PATH="../.env"
if [ -f $ENV_FILE_PATH ]; then
while IFS= read -r line || [ -n "$line" ]; do
echo "$line" >> $GITHUB_ENV
done < $ENV_FILE_PATH
else
echo "The environment file $ENV_FILE_PATH does not exist!"
exit 1
fi
working-directory: ./build-docker-images
notify:
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
needs: [setup, build-and-push]
# Only run if NOT dev AND all products were selected
if: ${{ inputs.dev == false && needs.setup.outputs.ALL_PRODUCTS_SELECTED == 'true' }}
steps:
- name: Image exists validation
id: validation
env:
IMAGE_TAG: ${{ inputs.image_tag }}
IMAGE_REGISTRY: ${{ vars.IMAGE_REGISTRY_PROD }}
run: |
PURPOSE=""
if [[ "$IMAGE_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
if docker manifest inspect $IMAGE_REGISTRY/wazuh/wazuh-manager:$IMAGE_TAG > /dev/null 2>&1; then
PURPOSE="regeneration"
echo "Image wazuh/wazuh-manager:$IMAGE_TAG exists. Setting PURPOSE to 'regeneration'"
else
PURPOSE="new release"
echo "Image wazuh/wazuh-manager:$IMAGE_TAG does NOT exist. Setting PURPOSE to 'new release'"
fi
echo "✅ Release tag: '$IMAGE_TAG'"
elif [[ "$IMAGE_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta|rc)[0-9]+$ ]]; then
PURPOSE="new stage"
echo "✅ Stage tag: '$IMAGE_TAG'. Setting PURPOSE to 'new stage'"
else
echo "❌ No release or stage tag ('$IMAGE_TAG'), the GH issue will not be created"
fi
echo "purpose=$PURPOSE" >> $GITHUB_OUTPUT
- name: GH issue notification
if: ${{ steps.validation.outputs.purpose != '' }}
env:
GH_TOKEN: ${{ secrets.NOTIFICATION_GH_ARTIFACT_TOKEN }}
IMAGE_TAG: ${{ inputs.image_tag }}
PURPOSE: ${{ steps.validation.outputs.purpose }}
run: |
GH_TITLE=""
GH_MESSAGE=""
## Setting GH issue title
GH_TITLE="Artifactory vulnerabilities update \`v$IMAGE_TAG\`"
## Setting GH issue body
GH_MESSAGE=$(cat <<- EOF | tr -d '\r' | sed 's/^[[:space:]]*//'
### Description
- [ ] Update the [Artifactory vulnerabilities](${{ secrets.NOTIFICATION_SHEET_URL }}) sheet with the \`v$IMAGE_TAG\` vulnerabilities.
**Purpose**: $PURPOSE
>[!NOTE]
>To update the \`Tentative Release\` column, follow these steps:
https://github.com/wazuh/${{ secrets.NOTIFICATION_REPO }}/issues/2049#issuecomment-2671590268
EOF
)
# Print the GH Variables content
echo "--- Variable Content ---"
echo "$GH_TITLE"
echo "------------------------"
echo "--- Variable Content ---"
echo "$GH_MESSAGE"
echo "------------------------"
## GH issue creation
ISSUE_URL=$(gh issue create \
-R wazuh/${{ secrets.NOTIFICATION_REPO }} \
--title "$GH_TITLE" \
--body "$GH_MESSAGE" \
--label "level/task" \
--label "type/maintenance" \
--label "request/operational")
## Adding the issue to the team project
PROJECT_ITEM_ID=$(gh project item-add \
${{ secrets.NOTIFICATION_PROJECT_NUMBER }} \
--url $ISSUE_URL \
--owner wazuh \
--format json \
| jq -r '.id')
## Setting Objective
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_OBJECTIVE_ID }} --text "Security scans"
## Setting Priority
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_PRIORITY_ID }} --single-select-option-id ${{ secrets.NOTIFICATION_PROJECT_PRIORITY_OPTION_ID }}
## Setting Size
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_SIZE_ID }} --single-select-option-id ${{ secrets.NOTIFICATION_PROJECT_SIZE_OPTION_ID }}
## Setting Subteam
gh project item-edit --id $PROJECT_ITEM_ID --project-id ${{ secrets.NOTIFICATION_PROJECT_ID }} --field-id ${{ secrets.NOTIFICATION_PROJECT_SUBTEAM_ID }} --single-select-option-id ${{ secrets.NOTIFICATION_PROJECT_SUBTEAM_OPTION_ID }}
+241
View File
@@ -0,0 +1,241 @@
name: (5.x) Repository bumper
run-name: Bump ${{ github.ref_name }} (${{ inputs.id }})
on:
workflow_dispatch:
inputs:
version:
description: 'Target version (e.g. 1.2.3)'
default: ''
required: false
type: string
stage:
description: 'Version stage (e.g. alpha0)'
default: ''
required: false
type: string
tag:
description: 'Change branches references to tag-like references (e.g. v4.12.0-alpha7)'
default: false
required: false
type: boolean
set_as_main:
description: "Enable main branch mode: bump version values only, keep branch references pointing to main"
required: false
type: boolean
default: false
issue-link:
description: 'Issue link in format https://github.com/wazuh/<REPO>/issues/<ISSUE-NUMBER>'
required: true
type: string
id:
description: 'Optional identifier for the run'
required: false
type: string
revert:
description: 'Set to true to revert the bump changes applied for this issue'
default: false
required: false
type: boolean
bump-issue-link:
description: 'Issue link used in the original bump (required for revert if different from issue-link)'
required: false
type: string
jobs:
bump:
name: Repository bumper 5.x
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
permissions:
contents: write
pull-requests: write
env:
CI_COMMIT_AUTHOR: wazuhci
CI_COMMIT_EMAIL: 22834044+wazuhci@users.noreply.github.com
CI_GPG_PRIVATE_KEY: ${{ secrets.CI_WAZUHCI_GPG_PRIVATE }}
GH_TOKEN: ${{ secrets.CI_WAZUHCI_BUMPER_TOKEN }}
BUMP_SCRIPT_PATH: tools/repository_bumper.sh
BUMP_LOG_PATH: tools
steps:
- name: Dump event payload
run: |
cat $GITHUB_EVENT_PATH | jq '.inputs'
- name: Set up GPG key
id: signing_setup
run: |
echo "${{ env.CI_GPG_PRIVATE_KEY }}" | gpg --batch --import
KEY_ID=$(gpg --list-secret-keys --with-colons | awk -F: '/^sec/ {print $5; exit}')
echo "gpg_key_id=$KEY_ID" >> $GITHUB_OUTPUT
- name: Set up git
run: |
git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}"
git config --global user.email "${{ env.CI_COMMIT_EMAIL }}"
git config --global commit.gpgsign true
git config --global user.signingkey "${{ steps.signing_setup.outputs.gpg_key_id }}"
echo "use-agent" >> ~/.gnupg/gpg.conf
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
echo RELOADAGENT | gpg-connect-agent
export DEBIAN_FRONTEND=noninteractive
export GPG_TTY=$(tty)
- name: Checkout repository
uses: actions/checkout@v6
with:
# Using workflow-specific GITHUB_TOKEN because currently CI_WAZUHCI_BUMPER_TOKEN
# doesn't have all the necessary permissions
token: ${{ env.GH_TOKEN }}
- name: Determine branch name
id: vars
env:
VERSION: ${{ inputs.version }}
STAGE: ${{ inputs.stage }}
TAG: ${{ inputs.tag }}
run: |
script_params=""
version=${{ env.VERSION }}
stage=${{ env.STAGE }}
tag=${{ env.TAG }}
set_as_main=${{ inputs.set_as_main }}
if [[ -n "$version" && -n "$stage" && "$tag" != "true" ]]; then
script_params="--version ${version} --stage ${stage}"
elif [[ -n "$version" && -n "$stage" && "$tag" == "true" ]]; then
script_params="--version ${version} --stage ${stage} --tag"
elif [[ -z "$version" && -n "$stage" && "$tag" == "true" ]]; then
script_params="--stage ${stage} --tag"
elif [[ -z "$version" && -z "$stage" && "$tag" == "true" ]]; then
script_params="--tag"
fi
if [[ "$set_as_main" == "true" ]]; then
if [[ -z "$version" || -z "$stage" ]]; then
echo "Error: set_as_main requires both version and stage inputs."
exit 1
fi
script_params="${script_params} --set-as-main"
fi
issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
if [[ "${{ inputs.revert }}" == "true" ]]; then
BRANCH_NAME="enhancement/wqa${issue_number}-revert-bump-${{ github.ref_name }}"
echo "pr_title=Revert bump ${{ github.ref_name }} branch" >> $GITHUB_OUTPUT
else
BRANCH_NAME="enhancement/wqa${issue_number}-bump-${{ github.ref_name }}"
echo "pr_title=Bump ${{ github.ref_name }} branch" >> $GITHUB_OUTPUT
fi
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "script_params=${script_params}" >> $GITHUB_OUTPUT
- name: Create and switch to bump branch
run: |
git checkout -b ${{ steps.vars.outputs.branch_name }}
- name: Make version bump changes
if: inputs.revert != true
run: |
echo "Running bump script"
bash ${{ env.BUMP_SCRIPT_PATH }} ${{ steps.vars.outputs.script_params }}
- name: Commit changes (Bump)
if: inputs.revert != true
run: |
git add .
git commit -m "feat: bump ${{ github.ref_name }}"
- name: Fetch full history (Revert)
if: inputs.revert == true
run: git fetch --unshallow
- name: Revert references (Revert)
id: revert_step
if: inputs.revert == true
run: |
# 1. Get the current issue number (for the new revert branch/PR)
ISSUE_NUMBER=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
# 2. Get the issue number from the original bump (if provided; otherwise, defaults to the current one)
if [ -n "${{ inputs.bump-issue-link }}" ]; then
BUMP_ISSUE_NUMBER=$(echo "${{ inputs.bump-issue-link }}" | awk -F'/' '{print $NF}')
else
BUMP_ISSUE_NUMBER=$ISSUE_NUMBER
fi
# 3. Search for the original bump branch using the obtained BUMP ISSUE number
BUMP_BRANCH="enhancement/wqa${BUMP_ISSUE_NUMBER}-bump-${{ github.ref_name }}"
PR_NUMBER=$(gh pr list --head "$BUMP_BRANCH" --base "${{ github.ref_name }}" --state merged --json number --jq '.[0].number')
if [ -z "$PR_NUMBER" ] || [ "$PR_NUMBER" == "null" ]; then
echo "Error: The original PR for the bump was not found"
echo "Searching merged PR from: $BUMP_BRANCH to ${{ github.ref_name }}"
exit 1
fi
echo "Original PR found: #$PR_NUMBER"
MERGE_COMMIT=$(gh pr view $PR_NUMBER --json mergeCommit --jq '.mergeCommit.oid')
git revert -m 1 $MERGE_COMMIT --no-commit
# Remove the files to prevent them from being included in the revert commit
git checkout HEAD -- VERSION.json 2>/dev/null || true
git checkout HEAD -- CHANGELOG.md 2>/dev/null || true
# [!] ADD ANY OTHER REPOSITORY-SPECIFIC VERSION FILES HERE [!]
if git diff --staged --quiet; then
echo "No references to revert. Skipping commit."
echo "has_changes=false" >> $GITHUB_OUTPUT
else
git commit -m "feat: revert ${{ github.ref_name }} references"
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Push changes
if: inputs.revert != true || (inputs.revert == true && steps.revert_step.outputs.has_changes == 'true')
run: |
git push origin ${{ steps.vars.outputs.branch_name }}
- name: Create pull request
id: create_pr
if: inputs.revert != true || (inputs.revert == true && steps.revert_step.outputs.has_changes == 'true')
run: |
gh auth setup-git
PR_URL=$(gh pr create \
--title "${{ steps.vars.outputs.pr_title }}" \
--body "Issue: ${{ inputs.issue-link }}" \
--base ${{ github.ref_name }} \
--head ${{ steps.vars.outputs.branch_name }})
echo "Pull request created: ${PR_URL}"
echo "pull_request_url=${PR_URL}" >> $GITHUB_OUTPUT
- name: Merge pull request
if: inputs.revert != true || (inputs.revert == true && steps.revert_step.outputs.has_changes == 'true')
run: |
# Any checks for the PR are bypassed since the branch is expected to be functional
gh pr merge "${{ steps.create_pr.outputs.pull_request_url }}" --merge --admin
- name: Show logs
if: inputs.revert != true
run: |
echo "Bump complete."
echo "Branch: ${{ steps.vars.outputs.branch_name }}"
echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}"
echo "Bumper scripts logs:"
cat ${BUMP_LOG_PATH}/repository_bumper*log
- name: Show revert logs
if: inputs.revert == true
run: |
echo "Revert bump complete."
echo "Branch: ${{ steps.vars.outputs.branch_name }}"
echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}"
echo "Revert bumper scripts logs:"
cat ${BUMP_LOG_PATH}/repository_bumper*log || true
@@ -0,0 +1,890 @@
run-name: >-
${{ github.event_name == 'workflow_dispatch'
&& format('Docker Integration Test - Manual {0} on {1}', inputs.deployment_type, inputs.pr_head_ref)
|| format('Docker Integration Test - #{0} {1}', github.event.issue.number, github.event.issue.title) }}
name: (5.x) PR Check - Docker Integration Tests
on:
issue_comment:
types: [created]
workflow_dispatch:
inputs:
pr_head_ref:
description: 'Branch of wazuh-docker to test'
required: true
type: string
automation_reference:
description: 'Branch of wazuh-automation to use'
required: false
default: 'v5.0.0-beta3'
type: string
deployment_type:
description: 'Deployment type to test'
required: true
type: choice
options:
- single-node
- multi-node
- both
version:
description: 'Image version to test (e.g. 5.0.0).'
required: false
type: string
stage:
description: 'Image stage suffix (e.g. beta1, beta2-latest, beta2-<commit>). Required when version is set.'
required: false
type: string
registry:
description: 'Docker registry. ECR for dev versions, DockerHub for prod versions.'
required: false
type: choice
options:
- ECR
- DockerHub
permissions:
id-token: write
contents: read
pull-requests: write
issues: write
checks: write
env:
AUTOMATION_REFERENCE: ${{ inputs.automation_reference || 'main' }}
ALLOCATOR_PATH: /tmp/allocator_instance
REGION: us-east-1
LOGS_ARTIFACT_ZIP_FILE: "docker_logs_artifacts_${{ github.run_id }}.zip"
jobs:
# -------------------------------------------------------------------------
# Job 1: Parse PR info and determine which deployment(s) to test
#
# Available commands:
# /test-docker-single — test single-node deployment
# /test-docker-multi — test multi-node deployment
# /test-docker — test both single-node and multi-node
# -------------------------------------------------------------------------
get_pr_info:
if: |
github.event_name == 'issue_comment' &&
github.event.issue.pull_request &&
github.event.issue.state == 'open' &&
!github.event.issue.draft &&
(contains(github.event.comment.body, '/test-docker-single') ||
contains(github.event.comment.body, '/test-docker-multi') ||
contains(github.event.comment.body, '/test-docker'))
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
outputs:
pr_number: ${{ steps.pr_data.outputs.pr_number }}
pr_head_ref: ${{ steps.pr_data.outputs.pr_head_ref }}
pr_head_sha: ${{ steps.pr_data.outputs.pr_head_sha }}
check_run_id: ${{ steps.create_check.outputs.result }}
deployment_matrix: ${{ steps.parse_command.outputs.deployment_matrix }}
check_name: ${{ steps.parse_command.outputs.check_name }}
steps:
- name: React to comment
uses: actions/github-script@v7
with:
script: |
await github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: 'rocket'
});
- name: Extract PR data
id: pr_data
env:
GH_TOKEN: ${{ github.token }}
run: |
PR_NUMBER="${{ github.event.issue.number }}"
PR_DATA=$(gh api repos/${{ github.repository }}/pulls/${PR_NUMBER})
PR_HEAD_REF=$(echo "$PR_DATA" | jq -r '.head.ref')
PR_HEAD_SHA=$(echo "$PR_DATA" | jq -r '.head.sha')
echo "pr_number=${PR_NUMBER}" >> $GITHUB_OUTPUT
echo "pr_head_ref=${PR_HEAD_REF}" >> $GITHUB_OUTPUT
echo "pr_head_sha=${PR_HEAD_SHA}" >> $GITHUB_OUTPUT
- name: Parse command and set deployment metadata
id: parse_command
env:
COMMENT_BODY: ${{ github.event.comment.body }}
run: |
if echo "$COMMENT_BODY" | grep -q '/test-docker-single'; then
echo 'deployment_matrix=["single-node"]' >> $GITHUB_OUTPUT
echo 'check_name=Docker Integration Check (Single-Node)' >> $GITHUB_OUTPUT
elif echo "$COMMENT_BODY" | grep -q '/test-docker-multi'; then
echo 'deployment_matrix=["multi-node"]' >> $GITHUB_OUTPUT
echo 'check_name=Docker Integration Check (Multi-Node)' >> $GITHUB_OUTPUT
elif echo "$COMMENT_BODY" | grep -q '/test-docker'; then
echo 'deployment_matrix=["single-node","multi-node"]' >> $GITHUB_OUTPUT
echo 'check_name=Docker Integration Check' >> $GITHUB_OUTPUT
fi
- name: Create check run
id: create_check
uses: actions/github-script@v7
env:
HEAD_SHA: ${{ steps.pr_data.outputs.pr_head_sha }}
CHECK_NAME: ${{ steps.parse_command.outputs.check_name }}
COMMENT_BODY: ${{ github.event.comment.body }}
with:
script: |
const { data: check } = await github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: process.env.CHECK_NAME,
head_sha: process.env.HEAD_SHA,
status: 'in_progress',
started_at: new Date().toISOString(),
details_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`,
output: {
title: `🔨 Running ${process.env.CHECK_NAME}...`,
summary: `Triggered by comment: \`${process.env.COMMENT_BODY}\``,
text: 'Allocating instance and running Docker integration tests'
}
});
console.log('Check run created:', check.id);
return check.id;
# -------------------------------------------------------------------------
# Job 2: Prepare context (pr_head_ref + deployment matrix) for both triggers.
# -------------------------------------------------------------------------
prepare:
needs: [get_pr_info]
if: |
always() &&
(needs.get_pr_info.result == 'success' || github.event_name == 'workflow_dispatch')
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
outputs:
pr_head_ref: ${{ steps.ctx.outputs.pr_head_ref }}
deployment_matrix: ${{ steps.ctx.outputs.deployment_matrix }}
wazuh_version: ${{ steps.version.outputs.wazuh_version }}
wazuh_stage: ${{ steps.version.outputs.wazuh_stage }}
steps:
- name: Resolve context
id: ctx
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "pr_head_ref=${{ inputs.pr_head_ref }}" >> $GITHUB_OUTPUT
DEPLOY_TYPE="${{ inputs.deployment_type }}"
if [ "$DEPLOY_TYPE" = "both" ]; then
echo 'deployment_matrix=["single-node","multi-node"]' >> $GITHUB_OUTPUT
else
echo "deployment_matrix=[\"${DEPLOY_TYPE}\"]" >> $GITHUB_OUTPUT
fi
else
echo 'pr_head_ref=${{ needs.get_pr_info.outputs.pr_head_ref }}' >> $GITHUB_OUTPUT
echo 'deployment_matrix=${{ needs.get_pr_info.outputs.deployment_matrix }}' >> $GITHUB_OUTPUT
fi
- name: Checkout wazuh-docker PR branch (VERSION.json only)
uses: actions/checkout@v4
with:
ref: ${{ steps.ctx.outputs.pr_head_ref }}
sparse-checkout: |
VERSION.json
sparse-checkout-cone-mode: false
- name: Read version info from VERSION.json
id: version
run: |
VERSION=$(python3 -c "import json; d=json.load(open('VERSION.json')); print(d['version'])")
STAGE=$(python3 -c "import json; d=json.load(open('VERSION.json')); print(d.get('stage',''))")
echo "wazuh_version=${VERSION}" >> $GITHUB_OUTPUT
echo "wazuh_stage=${STAGE}" >> $GITHUB_OUTPUT
echo "Version: ${VERSION} Stage: ${STAGE:-<release>}"
- name: Show test plan
run: |
WAZUH_VERSION="${{ steps.version.outputs.wazuh_version }}"
WAZUH_STAGE="${{ steps.version.outputs.wazuh_stage }}"
INPUT_VERSION="${{ inputs.version }}"
INPUT_STAGE="${{ inputs.stage }}"
INPUT_REGISTRY="${{ inputs.registry }}"
# Determine effective case
if [ -z "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
DOCKER_VERSION="$WAZUH_VERSION"
DOCKER_STAGE_DISPLAY="${WAZUH_STAGE}"
if [ "$INPUT_REGISTRY" = "ECR" ] || [ "${{ github.event_name }}" = "issue_comment" ]; then
CASE="a.1 — No version/stage → BUILD images from PR → push to ECR"
ACTION="BUILD + push to ECR"
EFFECTIVE_TAG="${DOCKER_VERSION}${DOCKER_STAGE_DISPLAY:+-${DOCKER_STAGE_DISPLAY}}-latest"
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
else
CASE="a.2 — No version/stage → PULL from DockerHub"
ACTION="PULL (no build)"
EFFECTIVE_TAG="${DOCKER_VERSION}${DOCKER_STAGE_DISPLAY:+-${DOCKER_STAGE_DISPLAY}}"
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
fi
elif [ -n "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
DOCKER_VERSION="$INPUT_VERSION"
ACTION="PULL (no build)"
if [ "$INPUT_REGISTRY" = "ECR" ]; then
CASE="b.1 — Version only, ECR → tag = version-latest"
EFFECTIVE_TAG="${DOCKER_VERSION}-latest"
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
else
CASE="b.2 — Version only, DockerHub → tag = version"
EFFECTIVE_TAG="${DOCKER_VERSION}"
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
fi
else
CASE="c — Version + stage provided as-is (no -latest appended)"
ACTION="PULL (no build)"
DOCKER_VERSION="${INPUT_VERSION:-${WAZUH_VERSION}}"
EFFECTIVE_TAG="${DOCKER_VERSION}-${INPUT_STAGE}"
if [ "$INPUT_REGISTRY" = "ECR" ]; then
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
else
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
fi
fi
# Log to stdout
echo "============================================="
echo " DOCKER INTEGRATION TEST PLAN"
echo "============================================="
echo "Branch: ${{ steps.ctx.outputs.pr_head_ref }}"
echo "Trigger: ${{ github.event_name }}"
echo "Deployments: ${{ steps.ctx.outputs.deployment_matrix }}"
echo "Case: ${CASE}"
echo "Action: ${ACTION}"
echo "Registry: ${EFFECTIVE_REGISTRY}"
echo "Image tag: ${EFFECTIVE_TAG}"
echo "Example: wazuh/wazuh-manager:${EFFECTIVE_TAG}"
echo "============================================="
# Write to step summary
{
echo "## Docker Integration Test Plan"
echo ""
echo "| | |"
echo "|---|---|"
echo "| **Branch** | \`${{ steps.ctx.outputs.pr_head_ref }}\` |"
echo "| **Trigger** | \`${{ github.event_name }}\` |"
echo "| **Deployments** | \`${{ steps.ctx.outputs.deployment_matrix }}\` |"
echo "| **Case** | ${CASE} |"
echo "| **Action** | ${ACTION} |"
echo ""
echo "### Image configuration"
echo ""
echo "| | |"
echo "|---|---|"
echo "| **Registry** | ${EFFECTIVE_REGISTRY} |"
echo "| **Tag** | \`${EFFECTIVE_TAG}\` |"
echo "| **Example image** | \`wazuh/wazuh-manager:${EFFECTIVE_TAG}\` |"
echo ""
echo "### Parameters"
echo ""
echo "| | |"
echo "|---|---|"
echo "| **VERSION.json version** | \`${WAZUH_VERSION}\` |"
echo "| **VERSION.json stage** | \`${WAZUH_STAGE:-<release>}\` |"
echo "| **Input version** | \`${INPUT_VERSION:-<not set>}\` |"
echo "| **Input stage** | \`${INPUT_STAGE:-<not set>}\` |"
echo "| **Input registry** | \`${INPUT_REGISTRY:-<not set>}\` |"
} >> "$GITHUB_STEP_SUMMARY"
# -------------------------------------------------------------------------
# Job 3: Build Docker images (only for ECR, when no explicit version/stage provided).
# Calls 5_build_and_push_images.yml and pushes to the dev registry.
# -------------------------------------------------------------------------
build_images:
name: Build Docker images
needs: [prepare]
if: |
always() &&
needs.prepare.result == 'success' &&
inputs.version == '' &&
inputs.stage == '' &&
(inputs.registry == 'ECR' || github.event_name == 'issue_comment')
uses: ./.github/workflows/5_build_and_push_images.yml
with:
image_tag: "${{ needs.prepare.outputs.wazuh_version }}-${{ needs.prepare.outputs.wazuh_stage }}"
docker_reference: ${{ needs.prepare.outputs.pr_head_ref }}
wazuh_automation_reference: ${{ inputs.automation_reference || 'main' }}
products: "wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent"
dev: true
id: "docker-integration-${{ github.run_id }}"
secrets: inherit
# -------------------------------------------------------------------------
# Job 4: For each deployment type — provision VM, deploy Docker stack, test,
# collect results, and clean up.
# -------------------------------------------------------------------------
docker_test:
needs: [get_pr_info, prepare, build_images]
if: |
always() &&
needs.prepare.result == 'success' &&
(needs.build_images.result == 'success' || needs.build_images.result == 'skipped')
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
strategy:
fail-fast: false
matrix:
deployment_type: ${{ fromJSON(needs.prepare.outputs.deployment_matrix) }}
steps:
# -----------------------------------------------------------------------
# Setup
# -----------------------------------------------------------------------
- name: Checkout wazuh-automation
uses: actions/checkout@v6
with:
repository: wazuh/wazuh-automation
ref: ${{ env.AUTOMATION_REFERENCE }}
token: ${{ secrets.GH_CLONE_TOKEN }}
path: wazuh-automation
- name: Checkout wazuh-docker PR branch
uses: actions/checkout@v6
with:
ref: ${{ needs.prepare.outputs.pr_head_ref }}
path: wazuh-docker
- name: Resolve image configuration
run: |
WAZUH_VERSION="${{ needs.prepare.outputs.wazuh_version }}"
WAZUH_STAGE="${{ needs.prepare.outputs.wazuh_stage }}"
INPUT_VERSION="${{ inputs.version }}"
INPUT_STAGE="${{ inputs.stage }}"
# Map registry choice to actual URL (defined once)
if [ "${{ inputs.registry }}" = "ECR" ]; then
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
else
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
fi
if [ -z "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
DOCKER_VERSION="$WAZUH_VERSION"
DOCKER_STAGE="$WAZUH_STAGE"
if [ "${{ inputs.registry }}" = "ECR" ] || [ "${{ github.event_name }}" = "issue_comment" ]; then
# Case a.1: ECR / PR comment — images were built by build_images job → tag = version-stage-latest
DOCKER_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
DOCKER_TAG="${DOCKER_VERSION}${DOCKER_STAGE:+-${DOCKER_STAGE}}-latest"
else
DOCKER_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
DOCKER_TAG="${DOCKER_VERSION}${DOCKER_STAGE:+-${DOCKER_STAGE}}"
fi
elif [ -n "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
DOCKER_VERSION="$INPUT_VERSION"
DOCKER_STAGE=""
DOCKER_REGISTRY="$SELECTED_REGISTRY"
if [ "${{ inputs.registry }}" = "ECR" ]; then
DOCKER_TAG="${DOCKER_VERSION}-latest"
else
DOCKER_TAG="${DOCKER_VERSION}"
fi
else
DOCKER_VERSION="${INPUT_VERSION:-${WAZUH_VERSION}}"
DOCKER_STAGE="$INPUT_STAGE"
DOCKER_REGISTRY="$SELECTED_REGISTRY"
DOCKER_TAG="${DOCKER_VERSION}-${DOCKER_STAGE}"
fi
echo "WAZUH_VERSION=${WAZUH_VERSION}" >> $GITHUB_ENV
echo "WAZUH_STAGE=${WAZUH_STAGE}" >> $GITHUB_ENV
echo "DOCKER_VERSION=${DOCKER_VERSION}" >> $GITHUB_ENV
echo "DOCKER_STAGE=${DOCKER_STAGE}" >> $GITHUB_ENV
echo "DOCKER_REGISTRY=${DOCKER_REGISTRY}" >> $GITHUB_ENV
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
echo "=== Resolved image configuration ==="
echo "Registry: ${DOCKER_REGISTRY}"
echo "Tag: ${DOCKER_TAG}"
echo "Example: wazuh/wazuh-manager:${DOCKER_TAG}"
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install requirements
run: |
pip install -r wazuh-automation/deployability/deps/requirements.txt
pip install -r wazuh-automation/integration-test-module/requirements.txt
pip install -e wazuh-automation/integration-test-module/
pip install pyyaml
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_IAM_DOCKER_ROLE }}
role-session-name: docker-test-${{ github.run_id }}-${{ matrix.deployment_type }}
aws-region: ${{ env.REGION }}
- name: Generate presigned cert tool URL
run: |
python wazuh-automation/tools/sign_urls/generate_presigned_dev_urls.py \
--process build_docker \
--wazuh-version "${{ env.DOCKER_VERSION }}" \
--aws-s3-bucket-dev "${{ vars.AWS_S3_BUCKET_DEV }}"
python3 -c "
import yaml
data = yaml.safe_load(open('/tmp/artifact_urls.yaml'))
print(f'wazuh_certs_tool={data[\"wazuh_certs_tool\"]}')
" >> "$GITHUB_ENV"
# -----------------------------------------------------------------------
# Provision: allocate VM and extract SSH credentials
# -----------------------------------------------------------------------
- name: Allocate instance
id: allocate
run: |
mkdir -p ${{ env.ALLOCATOR_PATH }}
python3 wazuh-automation/deployability/modules/allocation/main.py \
--action create \
--provider aws \
--size large \
--composite-name ubuntu-24-amd64 \
--working-dir ${{ env.ALLOCATOR_PATH }} \
--track-output ${{ env.ALLOCATOR_PATH }}/track.yml \
--inventory-output ${{ env.ALLOCATOR_PATH }}/inventory.yml \
--instance-name gha_${{ github.run_id }}_docker_${{ matrix.deployment_type }} \
--label-team devops \
--label-termination-date 1d
sed -n '/hosts:/,/^[^ ]/p' ${{ env.ALLOCATOR_PATH }}/inventory.yml \
| grep "ansible_" \
| sed 's/^[ ]*//g' \
> ${{ env.ALLOCATOR_PATH }}/inventory_vars_raw.yml
sed 's/: */=/g' ${{ env.ALLOCATOR_PATH }}/inventory_vars_raw.yml \
> ${{ env.ALLOCATOR_PATH }}/inventory_vars.yml
sed -i 's/-o StrictHostKeyChecking=no/"-o StrictHostKeyChecking=no"/g' \
${{ env.ALLOCATOR_PATH }}/inventory_vars.yml
- name: Set SSH credentials from inventory
run: |
find ${{ env.ALLOCATOR_PATH }} -name '*-key-*' -exec chmod 600 {} \;
source ${{ env.ALLOCATOR_PATH }}/inventory_vars.yml
echo "SSH_HOST=$ansible_host" >> $GITHUB_ENV
echo "SSH_PORT=$ansible_port" >> $GITHUB_ENV
echo "SSH_USER=$ansible_user" >> $GITHUB_ENV
echo "SSH_KEY=$ansible_ssh_private_key_file" >> $GITHUB_ENV
- name: Set SSH/SCP helper env vars
run: |
echo "SSH_OPTS=-o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=20 -p ${{ env.SSH_PORT }} -i ${{ env.SSH_KEY }}" >> $GITHUB_ENV
echo "SCP_OPTS=-o StrictHostKeyChecking=no -P ${{ env.SSH_PORT }} -i ${{ env.SSH_KEY }}" >> $GITHUB_ENV
echo "REMOTE=${{ env.SSH_USER }}@${{ env.SSH_HOST }}" >> $GITHUB_ENV
# -----------------------------------------------------------------------
# Install Docker CE on the remote VM
# -----------------------------------------------------------------------
- name: Install Docker CE
run: |
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
"
- name: Login VM to ECR registry
if: inputs.registry == 'ECR' || github.event_name == 'issue_comment'
run: |
ECR_REGISTRY="${{ env.DOCKER_REGISTRY }}"
ECR_REGION=$(echo "$ECR_REGISTRY" | cut -d. -f4)
ECR_PASS=$(aws ecr get-login-password --region "$ECR_REGION")
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" \
"echo '${ECR_PASS}' | sudo docker login --username AWS --password-stdin ${ECR_REGISTRY}"
# -----------------------------------------------------------------------
# Deploy: patch image tags, copy wazuh-docker and start the stack
# -----------------------------------------------------------------------
- name: Patch image tags
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
COMPOSE="wazuh-docker/${DEPLOYMENT}/docker-compose.yml"
TAG="${{ env.DOCKER_TAG }}"
REGISTRY="${{ env.DOCKER_REGISTRY }}"
if [ "$REGISTRY" = "${{ vars.IMAGE_REGISTRY_PROD }}" ] || [ -z "$REGISTRY" ]; then
echo "Patching ${COMPOSE}: wazuh/wazuh-*:${TAG} (DockerHub, no registry prefix)"
sed -i -E "s|(image: wazuh/wazuh-[^:]+:)[^ ]+|\1${TAG}|g" "$COMPOSE"
else
echo "Patching ${COMPOSE}: ${REGISTRY}/wazuh/wazuh-*:${TAG}"
sed -i -E "s|image: (wazuh/wazuh-[^:]+):[^ ]+|image: ${REGISTRY}/\1:${TAG}|g" "$COMPOSE"
fi
echo "=== Patched image lines ==="
grep 'image:' "$COMPOSE"
- name: Prepare cert tool and config
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
echo "Cert tool: ${{ env.wazuh_certs_tool }} Docker image: ${{ env.DOCKER_TAG }}"
curl --output "wazuh-docker/${DEPLOYMENT}/wazuh-certs-tool.sh" "${{ env.wazuh_certs_tool }}"
chmod +x "wazuh-docker/${DEPLOYMENT}/wazuh-certs-tool.sh"
echo "Downloaded OK"
# Write config.yml directly into the deployment directory
if [ "$DEPLOYMENT" = "single-node" ]; then
printf '%s\n' \
'nodes:' \
' indexer:' \
' - name: wazuh.indexer' \
' dns: wazuh.indexer' \
' manager:' \
' - name: wazuh.manager' \
' dns: wazuh.manager' \
' dashboard:' \
' - name: wazuh.dashboard' \
' dns: wazuh.dashboard' \
> "wazuh-docker/${DEPLOYMENT}/config.yml"
else
printf '%s\n' \
'nodes:' \
' indexer:' \
' - name: wazuh1.indexer' \
' dns: wazuh1.indexer' \
' - name: wazuh2.indexer' \
' dns: wazuh2.indexer' \
' - name: wazuh3.indexer' \
' dns: wazuh3.indexer' \
' manager:' \
' - name: wazuh.master' \
' dns: wazuh.master' \
' node_type: master' \
' - name: wazuh.worker' \
' dns: wazuh.worker' \
' node_type: worker' \
' dashboard:' \
' - name: wazuh.dashboard' \
' dns: wazuh.dashboard' \
> "wazuh-docker/${DEPLOYMENT}/config.yml"
fi
echo "=== config.yml ==="
cat "wazuh-docker/${DEPLOYMENT}/config.yml"
echo "=== Files ready to copy ==="
ls -la "wazuh-docker/${DEPLOYMENT}/"
- name: Copy wazuh-docker to VM
run: |
scp ${{ env.SCP_OPTS }} -r wazuh-docker "${{ env.REMOTE }}:/tmp/wazuh-docker"
- name: Show deployment config
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
echo '=== Files in deployment directory ==='
ls -la /tmp/wazuh-docker/${DEPLOYMENT}/
echo ''
echo '=== Images referenced in docker-compose.yml ==='
grep 'image:' /tmp/wazuh-docker/${DEPLOYMENT}/docker-compose.yml || echo '(none found)'
echo ''
echo '=== Docker version ==='
sudo docker version --format 'Client: {{.Client.Version}} Server: {{.Server.Version}}'
"
- name: Configure VM for Wazuh Indexer
run: |
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count = '\$(cat /proc/sys/vm/max_map_count)
"
- name: Generate SSL certificates
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
set -e
cd /tmp/wazuh-docker/${DEPLOYMENT}
echo '=== Running certificate generation ==='
sudo bash /tmp/wazuh-docker/tools/utils/deployment/certificates-conf.sh --cert --copy
echo ''
echo '=== Generated certificate files ==='
find ./config -name '*.pem' | sort
echo ''
echo '=== Certificate subjects ==='
for pem in \$(find ./config -name '*.pem' ! -name '*-key.pem' | sort); do
echo -n \"\$pem: \"
sudo openssl x509 -in \"\$pem\" -noout -subject -issuer 2>/dev/null || echo '(not a cert / key file)'
done
"
- name: Start Docker Compose
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
set -eo pipefail
cd /tmp/wazuh-docker/${DEPLOYMENT}
sudo docker compose up -d 2>&1 | tee /tmp/docker-compose-up.log
echo ''
echo '=== Initial container status ==='
sudo docker compose ps
"
- name: Show indexer logs on failure
if: failure()
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
cd /tmp/wazuh-docker/${DEPLOYMENT}
echo '=== docker compose ps ==='
sudo docker compose ps
echo ''
echo '=== wazuh.indexer logs ==='
sudo docker compose logs wazuh.indexer 2>&1
" || true
- name: Wait for containers healthy
timeout-minutes: 15
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
cd /tmp/wazuh-docker/${DEPLOYMENT}
echo '=== Verifying containers started ==='
TOTAL=\$(sudo docker compose ps 2>/dev/null | tail -n +2 | wc -l | tr -d ' ')
if [ \"\$TOTAL\" -eq 0 ]; then
echo 'ERROR: No containers are running — docker compose up may have failed'
sudo docker compose ps
sudo docker compose logs --no-color 2>&1 | tail -50
exit 1
fi
echo \"Found \$TOTAL container(s), waiting for healthy status...\"
echo ''
for i in \$(seq 1 90); do
NOT_HEALTHY=\$(sudo docker compose ps 2>/dev/null \
| tail -n +2 \
| grep -v 'nginx' \
| grep -vcE '(healthy|\(healthy\))')
if [ \"\$NOT_HEALTHY\" -eq 0 ]; then
echo \"All containers healthy after \${i} x 10s attempts\"
sudo docker compose ps
exit 0
fi
echo \" attempt \$i/90: \$NOT_HEALTHY container(s) not yet healthy\"
if [ \"\$(( i % 6 ))\" -eq 0 ]; then
echo ' --- current status ---'
sudo docker compose ps
fi
sleep 10
done
echo 'ERROR: containers not healthy after 15 minutes'
sudo docker compose ps
sudo docker compose logs --no-color 2>&1 | tail -100
exit 1
"
- name: Cluster warm-up wait
run: |
if [ "${{ matrix.deployment_type }}" = "multi-node" ]; then
WAIT=90
else
WAIT=60
fi
echo "Waiting ${WAIT}s for services to reach steady state..."
sleep $WAIT
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
cd /tmp/wazuh-docker/${DEPLOYMENT}
echo '=== Container status after warm-up ==='
sudo docker compose ps
"
# -----------------------------------------------------------------------
# Run integration tests
# -----------------------------------------------------------------------
- name: Run tests
id: run_tests
continue-on-error: true
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
test_runner \
--test-type "docker-${DEPLOYMENT}" \
--deployment-type "docker-${DEPLOYMENT}" \
--ssh-host "${{ env.SSH_HOST }}" \
--ssh-port "${{ env.SSH_PORT }}" \
--ssh-key-path "${{ env.SSH_KEY }}" \
--ssh-username "${{ env.SSH_USER }}" \
--version "${{ env.DOCKER_VERSION }}" \
--log-level INFO \
--output github \
--output-file "test-results-docker-${DEPLOYMENT}.github"
# -----------------------------------------------------------------------
# Collect logs on failure
# -----------------------------------------------------------------------
- name: Show test outcome
if: always()
run: |
echo "Run tests outcome: ${{ steps.run_tests.outcome }}"
DEPLOYMENT="${{ matrix.deployment_type }}"
if [ -f "test-results-docker-${DEPLOYMENT}.github" ]; then
echo "=== Test results file ==="
cat "test-results-docker-${DEPLOYMENT}.github"
else
echo "WARNING: no test results file found (test_runner may have failed before writing output)"
fi
- name: Collect Docker logs on failure
if: failure() || steps.run_tests.outcome == 'failure'
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
cd /tmp/wazuh-docker/${DEPLOYMENT}
sudo docker compose logs --no-color 2>&1
" > docker-logs-${DEPLOYMENT}.txt || true
- name: Upload Docker logs
if: failure() || steps.run_tests.outcome == 'failure'
run: |
echo "Uploading Docker logs artifact..."
zip "${{ env.LOGS_ARTIFACT_ZIP_FILE }}" docker-logs-*.txt
aws s3 cp "${{ env.LOGS_ARTIFACT_ZIP_FILE }}" "s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/5_check_integration_tools/${{ github.run_id }}/${{ env.LOGS_ARTIFACT_ZIP_FILE }}"
# -----------------------------------------------------------------------
# Reporting
# -----------------------------------------------------------------------
- name: Create step summary
if: always()
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
echo "## Docker Integration Test Results — ${DEPLOYMENT}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f "test-results-docker-${DEPLOYMENT}.github" ]; then
cat "test-results-docker-${DEPLOYMENT}.github" >> $GITHUB_STEP_SUMMARY
else
echo "No test results file found." >> $GITHUB_STEP_SUMMARY
fi
- name: Post PR comment with results
if: always() && github.event_name == 'issue_comment'
uses: actions/github-script@v7
env:
DEPLOYMENT: ${{ matrix.deployment_type }}
RUN_OUTCOME: ${{ steps.run_tests.outcome }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
const deployment = process.env.DEPLOYMENT;
const outcome = process.env.RUN_OUTCOME;
const marker = `<!-- docker-integration-check-${deployment} -->`;
let body = `${marker}\n## Docker Integration Tests — \`${deployment}\`\n\n`;
body += outcome === 'success'
? '✅ **All tests passed!**\n\n'
: '❌ **Some tests failed**\n\n';
const resultsFile = `test-results-docker-${deployment}.github`;
try {
if (fs.existsSync(resultsFile)) {
body += '### Results\n\n' + fs.readFileSync(resultsFile, 'utf8') + '\n\n';
}
} catch (e) {
console.log('Could not read results file:', e.message);
}
body += `- **Workflow:** [View Details](${context.payload.repository.html_url}/actions/runs/${context.runId})\n`;
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const existing = comments.find(c =>
c.user.type === 'Bot' && c.body.includes(marker)
);
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body: body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: body,
});
}
- name: Upload test results
if: always()
env:
S3_ARTIFACTS_PATH: s3://${{ secrets.CI_DEV_INTERNAL_S3_BUCKET }}/wazuh-docker/5_check_integration_tools/${{ github.run_id }}
LOCAL_RESULTS_PATH: test-results-docker-${{ matrix.deployment_type }}.github
run: |
if [ -f "${LOCAL_RESULTS_PATH}" ]; then
echo "Uploading test results to S3..."
aws s3 cp "${LOCAL_RESULTS_PATH}" "${S3_ARTIFACTS_PATH}/test-results-docker-${{ matrix.deployment_type }}/"
else
echo "::warning::No test results file found - skipping upload (an earlier step likely failed before test_runner produced output)."
fi
# -----------------------------------------------------------------------
# Cleanup: always stop stack and deallocate VM
# -----------------------------------------------------------------------
- name: Stop Docker Compose
if: always()
run: |
DEPLOYMENT="${{ matrix.deployment_type }}"
ssh ${{ env.SSH_OPTS }} "${{ env.REMOTE }}" "
cd /tmp/wazuh-docker/${DEPLOYMENT} && sudo docker compose down -v || true
" || true
- name: Configure AWS credentials for cleanup
if: always()
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_IAM_DOCKER_ROLE }}
role-session-name: docker-cleanup-${{ github.run_id }}-${{ matrix.deployment_type }}
aws-region: ${{ env.REGION }}
- name: Deallocate instance
if: always()
run: |
python3 wazuh-automation/deployability/modules/allocation/main.py \
--action delete \
--track-output ${{ env.ALLOCATOR_PATH }}/track.yml
# -------------------------------------------------------------------------
# Job 4: Update the GitHub check run (issue_comment trigger only)
# -------------------------------------------------------------------------
update_check:
needs: [get_pr_info, prepare, build_images, docker_test]
if: always() && github.event_name == 'issue_comment' && needs.get_pr_info.result == 'success'
runs-on: codebuild-github-actions-codebuild-runner-devops-amd-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Update check run
uses: actions/github-script@v7
env:
DOCKER_RESULT: ${{ needs.docker_test.result }}
CHECK_NAME: ${{ needs.get_pr_info.outputs.check_name }}
CHECK_RUN_ID: ${{ needs.get_pr_info.outputs.check_run_id }}
with:
script: |
const result = process.env.DOCKER_RESULT;
const conclusionMap = {
success: { conclusion: 'success', icon: '✅', summary: 'All Docker integration tests passed.' },
failure: { conclusion: 'failure', icon: '❌', summary: 'One or more Docker integration tests failed.' },
cancelled: { conclusion: 'cancelled', icon: '⏹️', summary: 'Workflow was cancelled.' },
};
const { conclusion, icon, summary } = conclusionMap[result] ?? conclusionMap.failure;
const label = conclusion.charAt(0).toUpperCase() + conclusion.slice(1);
await github.rest.checks.update({
owner: context.repo.owner,
repo: context.repo.repo,
check_run_id: parseInt(process.env.CHECK_RUN_ID),
status: 'completed',
conclusion,
completed_at: new Date().toISOString(),
output: {
title: `${icon} ${process.env.CHECK_NAME} — ${label}`,
summary,
text: `[View workflow run](https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId})`
}
});
-76
View File
@@ -1,76 +0,0 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Trivy scan Wazuh dashboard
on:
release:
types:
- published
pull_request:
branches:
- main
schedule:
- cron: '34 2 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
build:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Build images and upload Trivy results
runs-on: "ubuntu-22.04"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Installing dependencies
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: Checkout latest tag
run: |
latest=$(curl -s "https://api.github.com/repos/wazuh/wazuh-docker/releases/latest" | jq -r '.tag_name')
git fetch origin
git checkout $latest
- name: Build Wazuh images
run: build-docker-images/build-images.sh
- name: Create enviroment variables
run: |
cat .env > $GITHUB_ENV
echo "GITHUB_REF_NAME="${GITHUB_REF_NAME%/*} >> $GITHUB_ENV
- name: Run Trivy vulnerability scanner for Wazuh dashboard
uses: aquasecurity/trivy-action@2a2157eb22c08c9a1fac99263430307b8d1bc7a2
with:
image-ref: 'wazuh/wazuh-dashboard:${{env.WAZUH_IMAGE_VERSION}}'
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results-dashboard.sarif'
severity: 'LOW,MEDIUM,CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results-dashboard.sarif'
- name: Slack notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: cicd-monitoring
SLACK_COLOR: ${{ job.status }} # or a specific color like 'good' or '#ff00ff'
#SLACK_ICON: https://github.com/rtCamp.png?size=48
SLACK_MESSAGE: "Check the results: https://github.com/wazuh/wazuh-docker/security/code-scanning?query=is%3Aopen+branch%3A${{ env.GITHUB_REF_NAME }}"
SLACK_TITLE: Wazuh docker Trivy vulnerability scan finished.
SLACK_USERNAME: github_actions
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
-76
View File
@@ -1,76 +0,0 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Trivy scan Wazuh indexer
on:
release:
types:
- published
pull_request:
branches:
- main
schedule:
- cron: '34 2 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
build:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Build images and upload Trivy results
runs-on: "ubuntu-22.04"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Installing dependencies
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: Checkout latest tag
run: |
latest=$(curl -s "https://api.github.com/repos/wazuh/wazuh-docker/releases/latest" | jq -r '.tag_name')
git fetch origin
git checkout $latest
- name: Build Wazuh images
run: build-docker-images/build-images.sh
- name: Create enviroment variables
run: |
cat .env > $GITHUB_ENV
echo "GITHUB_REF_NAME="${GITHUB_REF_NAME%/*} >> $GITHUB_ENV
- name: Run Trivy vulnerability scanner for Wazuh indexer
uses: aquasecurity/trivy-action@2a2157eb22c08c9a1fac99263430307b8d1bc7a2
with:
image-ref: 'wazuh/wazuh-indexer:${{env.WAZUH_IMAGE_VERSION}}'
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results-indexer.sarif'
severity: 'LOW,MEDIUM,CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results-indexer.sarif'
- name: Slack notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: cicd-monitoring
SLACK_COLOR: ${{ job.status }} # or a specific color like 'good' or '#ff00ff'
#SLACK_ICON: https://github.com/rtCamp.png?size=48
SLACK_MESSAGE: "Check the results: https://github.com/wazuh/wazuh-docker/security/code-scanning?query=is%3Aopen+branch%3A${{ env.GITHUB_REF_NAME }}"
SLACK_TITLE: Wazuh docker Trivy vulnerability scan finished.
SLACK_USERNAME: github_actions
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
-76
View File
@@ -1,76 +0,0 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Trivy scan Wazuh manager
on:
release:
types:
- published
pull_request:
branches:
- main
schedule:
- cron: '34 2 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
build:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Build images and upload Trivy results
runs-on: "ubuntu-22.04"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Installing dependencies
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: Checkout latest tag
run: |
latest=$(curl -s "https://api.github.com/repos/wazuh/wazuh-docker/releases/latest" | jq -r '.tag_name')
git fetch origin
git checkout $latest
- name: Build Wazuh images
run: build-docker-images/build-images.sh
- name: Create enviroment variables
run: |
cat .env > $GITHUB_ENV
echo "GITHUB_REF_NAME="${GITHUB_REF_NAME%/*} >> $GITHUB_ENV
- name: Run Trivy vulnerability scanner for Wazuh manager
uses: aquasecurity/trivy-action@2a2157eb22c08c9a1fac99263430307b8d1bc7a2
with:
image-ref: 'wazuh/wazuh-manager:${{env.WAZUH_IMAGE_VERSION}}'
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results-manager.sarif'
severity: 'LOW,MEDIUM,CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results-manager.sarif'
- name: Slack notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: cicd-monitoring
SLACK_COLOR: ${{ job.status }} # or a specific color like 'good' or '#ff00ff'
#SLACK_ICON: https://github.com/rtCamp.png?size=48
SLACK_MESSAGE: "Check the results: https://github.com/wazuh/wazuh-docker/security/code-scanning?query=is%3Aopen+branch%3A${{ env.GITHUB_REF_NAME }}"
SLACK_TITLE: Wazuh docker Trivy vulnerability scan finished.
SLACK_USERNAME: github_actions
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
+18 -5
View File
@@ -1,5 +1,18 @@
single-node/config/wazuh_indexer_ssl_certs/*.pem
single-node/config/wazuh_indexer_ssl_certs/*.key
multi-node/config/wazuh_indexer_ssl_certs/*.pem
multi-node/config/wazuh_indexer_ssl_certs/*.key
*.log
*.log
build-docker-images/artifact_urls.yaml
build-docker-images/artifacts_env.txt
single-node/wazuh-certificates
single-node/wazuh-certificates/*
single-node/wazuh-certificates-tool.log
single-node/wazuh-certs-tool*.sh
single-node/config*.yml
single-node/config
multi-node/wazuh-certificates
multi-node/wazuh-certificates/*
multi-node/wazuh-certificates-tool.log
multi-node/wazuh-certs-tool*.sh
multi-node/config*.yml
multi-node/config/*/certs
# Documentation
docs/book/
+62 -835
View File
@@ -1,851 +1,78 @@
# Change Log
All notable changes to this project will be documented in this file.
## [4.14.2]
## [v5.0.0]
### Added
- Code improvements for 4.14.2 ([#2090](https://github.com/wazuh/wazuh-docker/pull/2090))
- Artifactory vulnerabilities notification ([#2078](https://github.com/wazuh/wazuh-docker/pull/2078))
- Added bump-issue-link support for Revert Stage Bump. ([#2505](https://github.com/wazuh/wazuh-docker/pull/2505))
- Add integration test module docs ([#2491](https://github.com/wazuh/wazuh-docker/pull/2491))
- Implement the wazuh-docker integration testing module ([#2188](https://github.com/wazuh/wazuh-docker/issues/2188))
- Support Revert bump functionality in wazuh-docker ([#2320](https://github.com/wazuh/wazuh-docker/issues/2320))
- Docker and AMI workflows failing during stage release (v5.0.0-beta1) ([#35457](https://github.com/wazuh/wazuh/issues/35457))
- Add `--set-as-main` flag support to repository bumper — `wazuh-docker` ([#2276](https://github.com/wazuh/wazuh-docker/issues/2276))
### Changed
- Filebeat module version update ([#2115](https://github.com/wazuh/wazuh-docker/pull/2115))
- The location of the remove command for the wazuh-authd certificates has been changed. ([#2094](https://github.com/wazuh/wazuh-docker/pull/2094))
- Removed sslmanager key from the docker manager image to 4.14.2. ([#2093](https://github.com/wazuh/wazuh-docker/pull/2093))
### Fixed
- Add missing SSL ciphers and protocols and remove outdated ports parameters from opensearch.yml template ([#2104](https://github.com/wazuh/wazuh-docker/pull/2104))
### Deleted
- None
## [4.14.1]
### Added
- None
### Changed
- Wazuh cert tool generator improvements ([#2027](https://github.com/wazuh/wazuh-docker/pull/2027))
### Fixed
- None
### Deleted
- None
## [4.14.0]
### Added
- None
### Changed
- Change filebeat install method ([#2020](https://github.com/wazuh/wazuh-docker/pull/2020))
- Remove dashboard chat setting ([#2021](https://github.com/wazuh/wazuh-docker/pull/2021))
- Rollback data source setting ([#1999](https://github.com/wazuh/wazuh-docker/pull/1999))
- Dashboard settings added ([#1998](https://github.com/wazuh/wazuh-docker/pull/1998))
- Add filebeat config file in the PERMANENT_DATA_EXCP list ([#1898](https://github.com/wazuh/wazuh-docker/pull/1898))
- Change validation of existing certs tool in S3 buckets ([#1880](https://github.com/wazuh/wazuh-docker/pull/1880))
### Fixed
- Change Wazuh indexer directory owner ([#2029](https://github.com/wazuh/wazuh-docker/pull/2029))
- Double the amount of space consumed in Wazuh Indexer ([#1953](https://github.com/wazuh/wazuh-docker/pull/1953))
- Fix config directory for opensearch_security plugin work ([#1951](https://github.com/wazuh/wazuh-docker/pull/1951))
- Update Dockerfile to copy opensearch-security files ([#1928](https://github.com/wazuh/wazuh-docker/pull/1928))
### Deleted
- None
## [4.13.1]
### Added
- None
### Changed
- None
### Fixed
- None
### Deleted
- None
## [4.13.0]
### Added
- Add opensearch_dashboard.yml parameters. ([#1985](https://github.com/wazuh/wazuh-docker/pull/1985))
- Set right ownership for malicious-ioc files on container start ([#1926](https://github.com/wazuh/wazuh-docker/pull/1926))
- Delete services statement in wazuh agent deployment. ([#1925](https://github.com/wazuh/wazuh-docker/pull/1925))
- Add permanent_data exceptions. ([#1890](https://github.com/wazuh/wazuh-docker/pull/1890))
- Integrate bumper script via GitHub action. ([#1863](https://github.com/wazuh/wazuh-docker/pull/1863))
- Add missing malicious-ioc ruleset lists ([#1870](https://github.com/wazuh/wazuh-docker/pull/1870))
- Added repository_bumper script. ([#1781](https://github.com/wazuh/wazuh-docker/pull/1781))
- Fix Warning message when migrating Docker compose v2 ([#1828](https://github.com/wazuh/wazuh-docker/pull/1828))
- Add technical documentation ([#1822](https://github.com/wazuh/wazuh-docker/pull/1822))
- Add wazuh agent test and push ([#1817](https://github.com/wazuh/wazuh-docker/pull/1817))
- Add Wazuh agent image build and deploy ([#1816](https://github.com/wazuh/wazuh-docker/pull/1816))
### Changed
- Syscollector configuration change ([#1994](https://github.com/wazuh/wazuh-docker/pull/1994))
- Modify wazuh-keystore use ([#1750](https://github.com/wazuh/wazuh-docker/pull/1750)) \- (wazuh-keystore)
### Fixed
- Add wazuh-template.json into permanent data exception ([#1968](https://github.com/wazuh/wazuh-docker/pull/1968))
### Deleted
- Remove default docker reference version from workflow ([#1761](https://github.com/wazuh/wazuh-docker/pull/1761))
- Remove 'stable' branch ocurrencies ([#1757](https://github.com/wazuh/wazuh-docker/pull/1757))
## [4.12.0]
### Added
- None
### Changed
- Change VERSION file format ([#1728](https://github.com/wazuh/wazuh-docker/pull/1728)) \- (VERSION file)
- Change Ubuntu version used in workflows ([#1662](https://github.com/wazuh/wazuh-docker/pull/1662)) \- (Docker workflows)
### Fixed
- Fix permanent data scripts ([#1603](https://github.com/wazuh/wazuh-docker/pull/1603))
### Deleted
- None
## [4.11.2]
### Added
- None
### Changed
- None
### Fixed
- None
### Deleted
- None
## [4.11.1]
### Added
- None
### Changed
- None
### Fixed
- None
### Deleted
- None
## [4.11.0]
### Added
- None
### Changed
- None
### Fixed
- Change the cleaning disk step ([#1663](https://github.com/wazuh/wazuh-docker/pull/1663))
### Deleted
- None
## [4.10.1]
### Added
- None
### Changed
- None
### Fixed
- None
### Deleted
- None
## [4.10.0]
### Added
- Improve the push docker images workflow ([#1551](https://github.com/wazuh/wazuh-docker/pull/1551))
- Update the Procedure push docker images workflow file ([#1524](https://github.com/wazuh/wazuh-docker/pull/1524))
- Add the push_docker_images procedure workflow file ([#1518](https://github.com/wazuh/wazuh-docker/pull/1518))
### Changed
- None
### Fixed
- Add unset capabilities. ([#1619](https://github.com/wazuh/wazuh-docker/pull/1619))
- Removed references to module enabling because they are now enabled by default. ([#1416](https://github.com/wazuh/wazuh-docker/pull/1416))
### Deleted
- None
## [4.9.2]
### Added
- Update Wazuh to version [4.9.2](https://github.com/wazuh/wazuh/blob/v4.9.2/CHANGELOG.md#v492)
## [4.9.1]
### Added
- None
### Changed
- None
### Fixed
- Fix typos into Wazuh manager entrypoint ([#1569](https://github.com/wazuh/wazuh-docker/pull/1569))
### Deleted
- None
## Wazuh Docker v4.9.0
### Added
- Update Wazuh to version [4.9.0](https://github.com/wazuh/wazuh/blob/v4.9.0/CHANGELOG.md#v490)
## Wazuh Docker v4.8.2
### Added
- Update Wazuh to version [4.8.2](https://github.com/wazuh/wazuh/blob/v4.8.2/CHANGELOG.md#v482)
## Wazuh Docker v4.8.1
### Added
- Update Wazuh to version [4.8.1](https://github.com/wazuh/wazuh/blob/v4.8.1/CHANGELOG.md#v481)
## Wazuh Docker v4.8.0
### Added
- Update Wazuh to version [4.8.0](https://github.com/wazuh/wazuh/blob/v4.8.0/CHANGELOG.md#v480)
## Wazuh Docker v4.7.5
### Added
- Update Wazuh to version [4.7.5](https://github.com/wazuh/wazuh/blob/v4.7.5/CHANGELOG.md#v475)
## Wazuh Docker v4.7.4
### Added
- Update Wazuh to version [4.7.4](https://github.com/wazuh/wazuh/blob/v4.7.4/CHANGELOG.md#v474)
## Wazuh Docker v4.7.3
### Added
- Update Wazuh to version [4.7.3](https://github.com/wazuh/wazuh/blob/v4.7.3/CHANGELOG.md#v473)
## Wazuh Docker v4.7.2
### Added
- Update Wazuh to version [4.7.2](https://github.com/wazuh/wazuh/blob/v4.7.2/CHANGELOG.md#v472)
## Wazuh Docker v4.7.1
### Added
- Update Wazuh to version [4.7.1](https://github.com/wazuh/wazuh/blob/v4.7.1/CHANGELOG.md#v471)
## Wazuh Docker v4.7.0
### Added
- Update Wazuh to version [4.7.0](https://github.com/wazuh/wazuh/blob/v4.7.0/CHANGELOG.md#v470)
## Wazuh Docker v4.6.0
### Added
- Update Wazuh to version [4.6.0](https://github.com/wazuh/wazuh/blob/v4.6.0/CHANGELOG.md#v460)
## Wazuh Docker v4.5.4
### Added
- Update Wazuh to version [4.5.4](https://github.com/wazuh/wazuh/blob/v4.5.4/CHANGELOG.md#v454)
## Wazuh Docker v4.5.3
### Added
- Update Wazuh to version [4.5.3](https://github.com/wazuh/wazuh/blob/v4.5.3/CHANGELOG.md#v453)
## Wazuh Docker v4.5.2
### Added
- Update Wazuh to version [4.5.2](https://github.com/wazuh/wazuh/blob/v4.5.2/CHANGELOG.md#v452)
## Wazuh Docker v4.5.1
### Added
- Update Wazuh to version [4.5.1](https://github.com/wazuh/wazuh/blob/v4.5.1/CHANGELOG.md#v451)
## Wazuh Docker v4.5.0
### Added
- Update Wazuh to version [4.5.0](https://github.com/wazuh/wazuh/blob/v4.5.0/CHANGELOG.md#v450)
## Wazuh Docker v4.4.5
### Added
- Update Wazuh to version [4.4.5](https://github.com/wazuh/wazuh/blob/v4.4.5/CHANGELOG.md#v445)
## Wazuh Docker v4.4.4
### Added
- Update Wazuh to version [4.4.4](https://github.com/wazuh/wazuh/blob/v4.4.4/CHANGELOG.md#v444)
## Wazuh Docker v4.4.3
### Added
- Update Wazuh to version [4.4.3](https://github.com/wazuh/wazuh/blob/v4.4.3/CHANGELOG.md#v443)
## Wazuh Docker v4.4.2
### Added
- Update Wazuh to version [4.4.2](https://github.com/wazuh/wazuh/blob/v4.4.2/CHANGELOG.md#v442)
## Wazuh Docker v4.4.1
### Added
- Update Wazuh to version [4.4.1](https://github.com/wazuh/wazuh/blob/v4.4.1/CHANGELOG.md#v441)
## Wazuh Docker v4.4.0
### Added
- Update Wazuh to version [4.4.0](https://github.com/wazuh/wazuh/blob/v4.4.0/CHANGELOG.md#v440)
## Wazuh Docker v4.3.11
### Added
- Update Wazuh to version [4.3.11](https://github.com/wazuh/wazuh/blob/v4.3.11/CHANGELOG.md#v4311)
## Wazuh Docker v4.3.10
### Added
- Update Wazuh to version [4.3.10](https://github.com/wazuh/wazuh/blob/v4.3.10/CHANGELOG.md#v4310)
## Wazuh Docker v4.3.9
### Added
- Update Wazuh to version [4.3.9](https://github.com/wazuh/wazuh/blob/v4.3.9/CHANGELOG.md#v439)
## Wazuh Docker v4.3.8
### Added
- Update Wazuh to version [4.3.8](https://github.com/wazuh/wazuh/blob/v4.3.8/CHANGELOG.md#v438)
## Wazuh Docker v4.3.7
### Added
- Update Wazuh to version [4.3.7](https://github.com/wazuh/wazuh/blob/v4.3.7/CHANGELOG.md#v437)
## Wazuh Docker v4.3.6
### Added
- Update Wazuh to version [4.3.6](https://github.com/wazuh/wazuh/blob/v4.3.6/CHANGELOG.md#v436)
## Wazuh Docker v4.3.5
### Added
- Update Wazuh to version [4.3.5](https://github.com/wazuh/wazuh/blob/v4.3.5/CHANGELOG.md#v435)
## Wazuh Docker v4.3.4
### Added
- Update Wazuh to version [4.3.4](https://github.com/wazuh/wazuh/blob/v4.3.4/CHANGELOG.md#v434)
## Wazuh Docker v4.3.3
### Added
- Update Wazuh to version [4.3.3](https://github.com/wazuh/wazuh/blob/v4.3.3/CHANGELOG.md#v433)
## Wazuh Docker v4.3.2
### Added
- Update Wazuh to version [4.3.2](https://github.com/wazuh/wazuh/blob/v4.3.2/CHANGELOG.md#v432)
## Wazuh Docker v4.3.1
### Added
- Update Wazuh to version [4.3.1](https://github.com/wazuh/wazuh/blob/v4.3.1/CHANGELOG.md#v431)
## Wazuh Docker v4.3.0
### Added
- Update Wazuh to version [4.3.0](https://github.com/wazuh/wazuh/blob/v4.3.0/CHANGELOG.md#v430)
## Wazuh Docker v4.2.7
### Added
- Update Wazuh to version [4.2.7](https://github.com/wazuh/wazuh/blob/v4.2.7/CHANGELOG.md#v427)
## Wazuh Docker v4.2.6
### Added
- Update Wazuh to version [4.2.6](https://github.com/wazuh/wazuh/blob/v4.2.6/CHANGELOG.md#v426)
## Wazuh Docker v4.2.5
### Added
- Update Wazuh to version [4.2.5](https://github.com/wazuh/wazuh/blob/v4.2.5/CHANGELOG.md#v425)
## Wazuh Docker v4.2.4
### Added
- Update Wazuh to version [4.2.4](https://github.com/wazuh/wazuh/blob/v4.2.4/CHANGELOG.md#v424)
## Wazuh Docker v4.2.3
### Added
- Update Wazuh to version [4.2.3](https://github.com/wazuh/wazuh/blob/v4.2.3/CHANGELOG.md#v423)
## Wazuh Docker v4.2.2
### Added
- Update Wazuh to version [4.2.2](https://github.com/wazuh/wazuh/blob/v4.2.2/CHANGELOG.md#v422)
## Wazuh Docker v4.2.1
### Added
- Update Wazuh to version [4.2.1](https://github.com/wazuh/wazuh/blob/v4.2.1/CHANGELOG.md#v421)
## Wazuh Docker v4.2.0
### Added
- Update Wazuh to version [4.2.0](https://github.com/wazuh/wazuh/blob/v4.2.0/CHANGELOG.md#v420)
## Wazuh Docker v4.1.5
### Added
- Update Wazuh to version [4.1.5](https://github.com/wazuh/wazuh/blob/v4.1.5/CHANGELOG.md#v415)
- Update ODFE compatibility to version 1.13.2
## Wazuh Docker v4.1.4
### Added
- Update Wazuh to version [4.1.4](https://github.com/wazuh/wazuh/blob/v4.1.4/CHANGELOG.md#v414)
## Wazuh Docker v4.1.3
### Added
- Update Wazuh to version [4.1.3](https://github.com/wazuh/wazuh/blob/v4.1.3/CHANGELOG.md#v413)
## Wazuh Docker v4.1.2
### Added
- Update Wazuh to version [4.1.2](https://github.com/wazuh/wazuh/blob/v4.1.2/CHANGELOG.md#v412)
## Wazuh Docker v4.1.1
### Added
- Update Wazuh to version [4.1.1](https://github.com/wazuh/wazuh/blob/v4.1.1/CHANGELOG.md#v411)
## Wazuh Docker v4.1.0
### Added
- Update Wazuh to version [4.1.0](https://github.com/wazuh/wazuh/blob/v4.1.0/CHANGELOG.md#v410)
- Update ODFE compatibility to version 1.12.0
- Add support for Elasticsearch (xpack) images once again (7.10.2) ([@xr09](https://github.com/xr09)) [#409](https://github.com/wazuh/wazuh-docker/pull/409)
- Re-enable entrypoint scripts ([@xr09](https://github.com/xr09)) [#435](https://github.com/wazuh/wazuh-docker/pull/435)
- Add Goss binary for healthchecks ([@xr09](https://github.com/xr09)) [$441](https://github.com/wazuh/wazuh-docker/pull/441)
- Update s6-overlay to latest version
## Wazuh Docker v4.0.4_1.11.0
### Added
- Update to Wazuh version [4.0.4](https://github.com/wazuh/wazuh/blob/v4.0.4/CHANGELOG.md#v404)
## Wazuh Docker v4.0.3_1.11.0
### Added
- Update to Wazuh version 4.0.3
## Wazuh Docker v4.0.2_1.11.0
### Added
- Update to Wazuh version 4.0.2
## Wazuh Docker v4.0.1_1.11.0
### Added
- Update to Wazuh version 4.0.1
- Opendistro 1.11.0 compatiblity
- Re-enabled dumping ossec.log to stdout
## Wazuh Docker v4.0.0_1.10.1
### Added
- Update to Wazuh version 4.0.0
- Updating Wazuh cluster key dynamically ([@1stOfHisGame](https://github.com/1stOfHisGame)) [#393](https://github.com/wazuh/wazuh-docker/pull/393)
- Switched to CentOS 7 for base image ([@xr09](https://github.com/xr09)) [#259](https://github.com/wazuh/wazuh-docker/issues/259)
- Using s6-overlay for process management ([@xr09](https://github.com/xr09)) [#274](https://github.com/wazuh/wazuh-docker/issues/274)
- Allow the creation of custom API users ([@xr09](https://github.com/xr09)) [#395](https://github.com/wazuh/wazuh-docker/issues/395)
- OpenDistro support ([@xr09](https://github.com/xr09)) [#373](https://github.com/wazuh/wazuh-docker/pull/373)
### Changed
- Removal of Elastic images
## Wazuh Docker v3.13.2_7.9.1
### Added
- Update to Wazuh version 3.13.2_7.9.1
- Add CLUSTER_NETWORK_HOST environment variable ([@jfut](https://github.com/jfut)) [#372](https://github.com/wazuh/wazuh-docker/pull/372)
### Fixed
- Too many redirects when running on port 80 ([@chowmean](https://github.com/chowmean)) [#377](https://github.com/wazuh/wazuh-docker/pull/377)
- Move Filebeat installation to build stage ([@xr09](https://github.com/xr09)) [#378](https://github.com/wazuh/wazuh-docker/pull/378)
## Wazuh Docker v3.13.1_7.8.0
### Added
- Update to Wazuh version 3.13.1_7.8.0
## Wazuh Docker v3.13.0_7.7.1
### Added
- Update to Wazuh version 3.13.3_7.7.1
### Fixed
- Save agentless state ([@xr09](https://github.com/xr09)) [#350](https://github.com/wazuh/wazuh-docker/pull/350)
- Use HTTP credentials for service check when required ([@xr09](https://github.com/xr09)) [#356](https://github.com/wazuh/wazuh-docker/pull/356)
## Wazuh Docker v3.12.3_7.6.2
### Added
- Update to Wazuh version 3.12.3_7.6.2
## Wazuh Docker v3.12.2_7.6.2
### Added
- Update to Wazuh version 3.12.2_7.6.2
## Wazuh Docker v3.12.1_7.6.2
### Added
- Update to Wazuh version 3.12.1_7.6.2
### Fixed
- Agent timestamp not being properly saved ([@xr09](https://github.com/xr09)) [#323](https://github.com/wazuh/wazuh-docker/pull/323)
## Wazuh Docker v3.12.0_7.6.1
### Added
- Update to Wazuh version 3.12.0_7.6.1
## Wazuh Docker v3.11.4_7.6.1
### Added
- Update to Wazuh version 3.11.4_7.6.1
- Enable HTTP v2 on nginx ([@xr09](https://github.com/xr09)) [#308](https://github.com/wazuh/wazuh-docker/pull/308)
### Fixed
- Updated NGINX config syntax ([@xr09](https://github.com/xr09)) [#303](https://github.com/wazuh/wazuh-docker/pull/303)
## Wazuh Docker v3.11.3_7.5.2
### Added
- Update to Wazuh version 3.11.3_7.5.2
## Wazuh Docker v3.11.2_7.5.1
### Added
- Bumped Node.js to version 10 ([@xr09](https://github.com/xr09)) [#8615cd4](https://github.com/wazuh/wazuh-docker/commit/8615cd4d2152601e55becc7c3675360938e74b6a)
### Fixed
- Fix S3 Plugin ([@AnthonySendra](https://github.com/AnthonySendra)) [#293](https://github.com/wazuh/wazuh-docker/pull/293)
## Wazuh Docker v3.11.1_7.5.1
### Added
- Update to Wazuh version 3.11.1_7.5.1
- Filebeat configuration file updated to latest version ([@manuasir](https://github.com/manuasir)) [#271](https://github.com/wazuh/wazuh-docker/pull/271)
- Allow using the hostname as node_name for managers ([@JPLachance](https://github.com/JPLachance)) [#261](https://github.com/wazuh/wazuh-docker/pull/261)
## Wazuh Docker v3.11.0_7.5.1
### Added
- Update to Wazuh version 3.11.0_7.5.1
## Wazuh Docker v3.10.2_7.5.0
### Added
- Update to Wazuh version 3.10.2_7.5.0
## Wazuh Docker v3.10.2_7.3.2
### Added
- Update to Wazuh version 3.10.2_7.3.2
## Wazuh Docker v3.10.0_7.3.2
### Added
- Update to Wazuh version 3.10.0_7.3.2
## Wazuh Docker v3.9.5_7.2.1
### Added
- Update to Wazuh version 3.9.5_7.2.1
## Wazuh Docker v3.9.4_7.2.0
### Added
- Update to Wazuh version 3.9.4_7.2.0
- Implemented Wazuh Filebeat Module ([jm404](https://www.github.com/jm404)) [#2a77c6a](https://github.com/wazuh/wazuh-docker/commit/2a77c6a6e6bf78f2492adeedbade7a507d9974b2)
## Wazuh Docker v3.9.3_7.2.0
### Fixed
- Wazuh-docker reinserts cluster settings after resuming containers ([@manuasir](https://github.com/manuasir)) [#213](https://github.com/wazuh/wazuh-docker/pull/213)
## Wazuh Docker v3.9.2_7.1.1
### Added
- Update to Wazuh version 3.9.2_7.1.1
## Wazuh Docker v3.9.2_6.8.0
### Added
- Update to Wazuh version 3.9.2_6.8.0
## Wazuh Docker v3.9.1_7.1.0
### Added
- Support for Elastic v7.1.0
- New environment variables for Kibana ([@manuasir](https://github.com/manuasir)) [#22ad43](https://github.com/wazuh/wazuh-docker/commit/22ad4360f548e54bb0c5e929f8c84a186ad2ab88)
## Wazuh Docker v3.9.1_6.8.0
### Added
- Update to Wazuh version 3.9.1_6.8.0 ([#181](https://github.com/wazuh/wazuh-docker/pull/181))
### Fixed
- Fixed `ELASTICSEARCH_KIBANA_IP` environment variable ([@manuasir](https://github.com/manuasir)) ([#181](https://github.com/wazuh/wazuh-docker/pull/181))
## Wazuh Docker v3.9.0_6.7.2
### Changed
- Update Elastic Stack version to 6.7.2.
## Wazuh Docker v3.9.0_6.7.1
### Added
- Support for xPACK authorized requests ([@manuasir](https://github.com/manuasir)) ([#119](https://github.com/wazuh/wazuh-docker/pull/119))
- Add Elasticsearch cluster configuration ([@SitoRBJ](https://github.com/SitoRBJ)). ([#146](https://github.com/wazuh/wazuh-docker/pull/146))
- Add Elasticsearch cluster configuration ([@Phandora](https://github.com/Phandora)) ([#140](https://github.com/wazuh/wazuh-docker/pull/140))
- Setting Nginx to support several user/passwords in Kibana ([@toniMR](https://github.com/toniMR)) ([#136](https://github.com/wazuh/wazuh-docker/pull/136))
### Changed
- Use LS_JAVA_OPTS instead of old LS_HEAP_SIZE ([@ruffy91](https://github.com/ruffy91)) ([#139](https://github.com/wazuh/wazuh-docker/pull/139))
- Changing the original Wazuh docker image to allow adding code in the entrypoint ([@Phandora](https://github.com/phandora)) ([#151](https://github.com/wazuh/wazuh-docker/pull/151))
- Change artifact upload and download ([#2502](https://github.com/wazuh/wazuh-docker/issues/2502))
- Change runners on repository workflows 5.x ([#2471](https://github.com/wazuh/wazuh-docker/issues/2471))
- PR revamp modifications 5.x ([#2446](https://github.com/wazuh/wazuh-docker/issues/2446))
- Forbid pr_check workflow execution in draft PRs ([#2399](https://github.com/wazuh/wazuh-docker/issues/2399))
- Unification of user UID and GID ([#2375](https://github.com/wazuh/wazuh-docker/issues/2375))
- Wazuh indexer engine requirements ([#2392](https://github.com/wazuh/wazuh-docker/issues/2392))
- Image build process update ([#2356](https://github.com/wazuh/wazuh-docker/issues/2356))
- Add new path on artifact_urls file ([#2344](https://github.com/wazuh/wazuh-docker/issues/2344))
- Unable to generate single component in `Procedure_push_docker_images` ([#2341](https://github.com/wazuh/wazuh-docker/issues/2341))
- Adapt bumper workflows to change main branch ([#2294](https://github.com/wazuh/wazuh-docker/issues/2294))
- Ensure default values are used for variables and passwords ([#2288](https://github.com/wazuh/wazuh-docker/issues/2288))
- Docker - Ensure correct Wazuh manager certificates ownership ([#2283](https://github.com/wazuh/wazuh-docker/issues/2283))
- Docker - Standarize Artifact URL keys ([#2278](https://github.com/wazuh/wazuh-docker/issues/2278))
- Modify artifact URLs file name. ([#2266](https://github.com/wazuh/wazuh-docker/issues/2266))
- URL presigned file - Update the Wazuh Docker image creation workflow ([#2218](https://github.com/wazuh/wazuh-docker/issues/2218))
- Updated wazuh-docker documentation config and tooling versions to meet new standards. ([#2264](https://github.com/wazuh/wazuh-docker/issues/2264))
- Align cert generation steps with current cert-tool ip validation ([#2250](https://github.com/wazuh/wazuh-docker/issues/2250))
- Modify Healthchecks ([#2252](https://github.com/wazuh/wazuh-docker/issues/2252))
- Add deployment healthchecks ([#2251](https://github.com/wazuh/wazuh-docker/issues/2251))
- Update artifact generation jobs to use wz-linux dedicated runner group ([#2242](https://github.com/wazuh/wazuh-docker/issues/2242))
- Error during Wazuh manager entrypoint ([#2237](https://github.com/wazuh/wazuh-docker/issues/2237))
- Adapt PR test for workflow_dispatch option ([#2230](https://github.com/wazuh/wazuh-docker/issues/2230))
- Wazuh Manager/agent Separation - Breaking changes summary ([#2227](https://github.com/wazuh/wazuh-docker/issues/2227))
- Errors in wazuh-docker PR Test ([#2222](https://github.com/wazuh/wazuh-docker/issues/2222))
- Development - Separate Agent/Manager - Docker - Adapt image build process ([#2206](https://github.com/wazuh/wazuh-docker/issues/2206))
- Remove revision input ([#2217](https://github.com/wazuh/wazuh-docker/issues/2217))
- Build images script improvement ([#2196](https://github.com/wazuh/wazuh-docker/issues/2196))
- Missing documentation in the wazuh-docker repository ([#2197](https://github.com/wazuh/wazuh-docker/issues/2197))
- Add Wazuh version and revision into wazuh-certs-tool and config file ([#2195](https://github.com/wazuh/wazuh-docker/issues/2195))
- Improve S3 artifact URLs handling ([#2172](https://github.com/wazuh/wazuh-docker/issues/2172))
- Allow building separate targets ([#2164](https://github.com/wazuh/wazuh-docker/issues/2164))
- Add developement option when tag name is only version without stage ([#2179](https://github.com/wazuh/wazuh-docker/issues/2179))
- Add IMAGE_TAG stage reference ([#2178](https://github.com/wazuh/wazuh-docker/issues/2178))
- Remove Wazuh agent configuration template ([#2171](https://github.com/wazuh/wazuh-docker/issues/2171))
- Docker - Ensure `run_as` set to true for every deployment alternative ([#2156](https://github.com/wazuh/wazuh-docker/issues/2156))
- Change macOS and Windows deployment documentation ([#2150](https://github.com/wazuh/wazuh-docker/issues/2150))
- Modify docker build image process ([#2131](https://github.com/wazuh/wazuh-docker/issues/2131))
- Update documentation for Wazuh Docker image builder and workflow usage ([#2136](https://github.com/wazuh/wazuh-docker/issues/2136))
- Configure deployment with environment variables ([#2081](https://github.com/wazuh/wazuh-docker/issues/2081))
- Modify Wazuh components install method ([#2058](https://github.com/wazuh/wazuh-docker/issues/2058))
- Image builder Workflow Rebuild ([#2054](https://github.com/wazuh/wazuh-docker/issues/2054))
- Remove Wazuh Manager deprecated daemons and CLI tools ([#1933](https://github.com/wazuh/wazuh-docker/issues/1933))
- DevOps - Docker - OpenSearch 3.0 deprecated settings ([#1891](https://github.com/wazuh/wazuh-docker/issues/1891))
### Removed
- Removing files from Wazuh image ([@Phandora](https://github.com/phandora)) ([#153](https://github.com/wazuh/wazuh-docker/pull/153))
## Wazuh Docker v3.8.2_6.7.0
### Changed
- Update Elastic Stack version to 6.7.0. ([#144](https://github.com/wazuh/wazuh-docker/pull/144))
## Wazuh Docker v3.8.2_6.6.2
### Changed
- Update Elastic Stack version to 6.6.2. ([#130](https://github.com/wazuh/wazuh-docker/pull/130))
## Wazuh Docker v3.8.2_6.6.1
### Changed
- Update Elastic Stack version to 6.6.1. ([#129](https://github.com/wazuh/wazuh-docker/pull/129))
## Wazuh Docker v3.8.2_6.5.4
### Added
- Add Wazuh-Elasticsearch. ([#106](https://github.com/wazuh/wazuh-docker/pull/106))
- Store Filebeat _/var/lib/filebeat/registry._ ([#109](https://github.com/wazuh/wazuh-docker/pull/109))
- Adding the option to disable some xpack features. ([#111](https://github.com/wazuh/wazuh-docker/pull/111))
- Wazuh-Kibana customizable at plugin level. ([#117](https://github.com/wazuh/wazuh-docker/pull/117))
- Adding env variables for alerts data flow. ([#118](https://github.com/wazuh/wazuh-docker/pull/118))
- New Logstash entrypoint added. ([#135](https://github.com/wazuh/wazuh-docker/pull/135/files))
- Welcome screen management. ([#133](https://github.com/wazuh/wazuh-docker/pull/133))
### Changed
- Update to Wazuh version 3.8.2. ([#105](https://github.com/wazuh/wazuh-docker/pull/105))
### Removed
- Remove alerts created in build time. ([#137](https://github.com/wazuh/wazuh-docker/pull/137))
## Wazuh Docker v3.8.1_6.5.4
### Changed
- Update to Wazuh version 3.8.1. ([#102](https://github.com/wazuh/wazuh-docker/pull/102))
## Wazuh Docker v3.8.0_6.5.4
### Changed
- Upgrade version 3.8.0_6.5.4. ([#97](https://github.com/wazuh/wazuh-docker/pull/97))
### Removed
- Remove cluster.py work around. ([#99](https://github.com/wazuh/wazuh-docker/pull/99))
## Wazuh Docker v3.7.2_6.5.4
### Added
- Improvements to Kibana settings added. ([#91](https://github.com/wazuh/wazuh-docker/pull/91))
- Add Kibana environmental variables for Wazuh APP config.yml. ([#89](https://github.com/wazuh/wazuh-docker/pull/89))
### Changed
- Update Elastic Stack version to 6.5.4. ([#82](https://github.com/wazuh/wazuh-docker/pull/82))
- Add env credentials for nginx. ([#86](https://github.com/wazuh/wazuh-docker/pull/86))
- Improve filebeat configuration ([#88](https://github.com/wazuh/wazuh-docker/pull/88))
- None
### Fixed
- Temporary fix for Wazuh cluster master node in Kubernetes. ([#84](https://github.com/wazuh/wazuh-docker/pull/84))
- Bumper script issue when the tag is set to false ([#2477](https://github.com/wazuh/wazuh-docker/issues/2477))
- Fix reported WF vulnerabilities ([#2443](https://github.com/wazuh/wazuh-docker/issues/2443))
- Adapt Wazuh manager healthcheck with local binaries ([#2422](https://github.com/wazuh/wazuh-docker/issues/2422))
- The Wazuh Docker image cannot be built during the Nightly ([#2337](https://github.com/wazuh/wazuh-docker/issues/2337))
- Docker and AMI workflows failing during stage release (v5.0.0-beta1) ([#35457](https://github.com/wazuh/wazuh/issues/35457))
- PR check issues ([#2274](https://github.com/wazuh/wazuh-docker/issues/2274))
- Wazuh manager Healthcheck ([#2271](https://github.com/wazuh/wazuh-docker/issues/2271))
- Delete WAZUH_AGENT_GROUPS of Wazuh 5.0.0 images build ([#2258](https://github.com/wazuh/wazuh-docker/issues/2258))
- Development - DevOps 5.0 adaptation - Docker - Delete lists directory references ([#2128](https://github.com/wazuh/wazuh-docker/issues/2128))
## Wazuh Docker v3.7.2_6.5.3
### Changed
- Erasing temporary fix for AWS integration. ([#81](https://github.com/wazuh/wazuh-docker/pull/81))
### Fixed
- Upgrading errors due to wrong files. ([#80](https://github.com/wazuh/wazuh-docker/pull/80))
## Wazuh Docker v3.7.0_6.5.0
### Changed
- Adapt to Elastic stack 6.5.0.
## Wazuh Docker v3.7.0_6.4.3
### Added
- Allow custom scripts or commands before service start ([#58](https://github.com/wazuh/wazuh-docker/pull/58))
- Added description for wazuh-nginx ([#59](https://github.com/wazuh/wazuh-docker/pull/59))
- Added license file to match https://github.com/wazuh/wazuh LICENSE ([#60](https://github.com/wazuh/wazuh-docker/pull/60))
- Added SMTP packages ([#67](https://github.com/wazuh/wazuh-docker/pull/67))
### Changed
- Increased proxy buffer for NGINX Kibana ([#51](https://github.com/wazuh/wazuh-docker/pull/51))
- Updated logstash config to remove deprecation warnings ([#55](https://github.com/wazuh/wazuh-docker/pull/55))
- Set ossec user's home path ([#61](https://github.com/wazuh/wazuh-docker/pull/61))
### Fixed
- Fixed a bug that prevents the API from starting when the Wazuh manager was updated. Change in the files that are stored in the volume. ([#65](https://github.com/wazuh/wazuh-docker/pull/65))
- Fixed script reference ([#62](https://github.com/wazuh/wazuh-docker/pull/62/files))
## Wazuh Docker v3.6.1_6.4.3
Wazuh-Docker starting point.
## Prior version
- []()
+2 -2
View File
@@ -5,7 +5,7 @@
## Description
The `wazuh/wazuh-docker` repository provides resources to deploy the Wazuh cybersecurity platform using Docker containers. This setup enables easy installation and orchestration of the full Wazuh stack, including the Wazuh server, dashboard (based on OpenSearch Dashboards), and OpenSearch for indexing and search.
The `wazuh/wazuh-docker` repository provides resources to deploy the Wazuh cybersecurity platform using Docker containers. This setup enables easy installation and orchestration of the full Wazuh stack, including the Wazuh manager, dashboard (based on OpenSearch Dashboards), and OpenSearch for indexing and search.
## Capabilities
@@ -18,7 +18,7 @@ The `wazuh/wazuh-docker` repository provides resources to deploy the Wazuh cyber
## Branch Convention
- `main`: Developing and testing of new features.
- `X.Y.Z`: Version-specific branches (e.g., `4.14.2`, `4.13.0`, etc.).
- `X.Y.Z`: Version-specific branches (e.g., `5.0.0`, `4.14.0`, etc.).
## Documentation
+2 -2
View File
@@ -1,4 +1,4 @@
{
"version": "4.14.2",
"stage": "rc4"
"version": "5.0.0",
"stage": "beta3"
}
-32
View File
@@ -1,32 +0,0 @@
# Wazuh Docker Image Builder
The creation of the images for the Wazuh stack deployment in Docker is done with the build-images.yml script
To execute the process, the following must be executed in the root of the wazuh-docker repository:
```
$ build-docker-images/build-images.sh
```
This script initializes the environment variables needed to build each of the images.
The script allows you to build images from other versions of Wazuh, to do this you must use the -v or --version argument:
```
$ build-docker-images/build-images.sh -v 4.14.2
```
To get all the available script options use the -h or --help option:
```
$ build-docker-images/build-images.sh -h
Usage: build-docker-images/build-images.sh [OPTIONS]
-d, --dev <ref> [Optional] Set the development stage you want to build, example rc1 or beta1, not used by default.
-f, --filebeat-module <ref> [Optional] Set Filebeat module version. By default 0.5.
-r, --revision <rev> [Optional] Package revision. By default 1
-v, --version <ver> [Optional] Set the Wazuh version should be builded. By default, 4.14.2.
-h, --help Show this help.
```
+230 -38
View File
@@ -1,8 +1,4 @@
WAZUH_IMAGE_VERSION=4.14.2
WAZUH_VERSION=$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')
WAZUH_TAG_REVISION=1
WAZUH_CURRENT_VERSION=$(curl --silent https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '["]tag_name["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 2- | sed -e 's/\.//g')
IMAGE_VERSION=${WAZUH_IMAGE_VERSION}
#!/bin/bash
# Wazuh package generator
# Copyright (C) 2023, Wazuh Inc.
@@ -12,10 +8,16 @@ IMAGE_VERSION=${WAZUH_IMAGE_VERSION}
# License (version 2) as published by the FSF - Free Software
# Foundation.
WAZUH_IMAGE_VERSION="4.14.2"
WAZUH_TAG_REVISION="1"
WAZUH_IMAGE_VERSION=5.0.0
IMAGE_TAG=5.0.0
WAZUH_CURRENT_VERSION=$(curl --silent https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '["]tag_name["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 2- | sed -e 's/\.//g')
IMAGE_VERSION=${WAZUH_IMAGE_VERSION}
WAZUH_REGISTRY=docker.io
WAZUH_IMAGE_VERSION="5.0.0"
WAZUH_DEV_STAGE=""
FILEBEAT_MODULE_VERSION="0.5"
WAZUH_COMPONENTS_COMMIT_LIST=''
IS_DEV_BUILD=""
# -----------------------------------------------------------------------------
@@ -36,36 +38,206 @@ ctrl_c() {
build() {
WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')"
FILEBEAT_TEMPLATE_BRANCH="${WAZUH_IMAGE_VERSION}"
WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz"
WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}"
# WAZUH_MINOR_VERSION: Extracts major and minor version only (e.g., 5.0.0 -> 5.0)
WAZUH_MINOR_VERSION="${WAZUH_IMAGE_VERSION%.*}"
# WAZUH_MAJOR_VERSION: Extracts major version only (e.g., 5.0.0 -> 5)
WAZUH_MAJOR_VERSION="${WAZUH_IMAGE_VERSION%%.*}"
# WAZUH_STAGE: Extract the 'stage' (e.g., alpha0, beta1, rc2) from the local JSON metadata file.
# Note: This is primarily used for pre-release package naming.
WAZUH_STAGE=$(jq -r '.stage' ../VERSION.json)
# ARTIFACT_URLS_FILE: The name of the artifact URLs file.
ARTIFACT_URLS_FILE="artifact_urls.yaml"
# ARTIFACT_URLS_DIR: The name of the artifact URLs directory.
ARTIFACT_URLS_DIR="artifact-urls"
if [ "${WAZUH_DEV_STAGE}" ];then
FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}"
if ! curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then
echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}"
clean 1
fi
# Check if the artifact file already exists to prevent redundant downloads
if [[ -f "$ARTIFACT_URLS_FILE" ]]; then
echo "$ARTIFACT_URLS_FILE exists. Using existing file."
else
if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/v${FILEBEAT_TEMPLATE_BRANCH}"; then
FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}"
elif curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then
FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}"
# GitHub URL for exact Release Tag lookup
TAG="v${WAZUH_IMAGE_VERSION}"
REPO="wazuh/wazuh-docker"
GH_URL="https://api.github.com/repos/${REPO}/releases/tags/${TAG}"
# Fetch the HTTP status code to determine release environment.
# Using -L to follow redirects (GitHub may return 301/302 for some endpoints).
HTTP_STATUS=$(curl -sL -o /dev/null -w "%{http_code}" "$GH_URL")
if [ "$HTTP_STATUS" -eq 200 ]; then
# CASE: Production (Tag and Release exist)
echo "Release $TAG found. Setting Production environment."
ARTIFACT_URLS_DOWNLOAD="artifact_urls_${WAZUH_IMAGE_VERSION}.yaml"
PACKAGE_URL="packages.wazuh.com"
RELEASE_STAGE="production"
elif [ "$HTTP_STATUS" -eq 403 ]; then
# CASE: GitHub API rate limit hit — fall back to pre-release to avoid
# incorrectly skipping staging artifacts.
echo "Warning: GitHub API rate limit reached (403). Assuming pre-release environment." >&2
PACKAGE_URL="packages-staging.xdrsiem.wazuh.info"
RELEASE_STAGE="pre-release"
if [ -n "$WAZUH_STAGE" ] && [ "$WAZUH_STAGE" != "null" ]; then
ARTIFACT_URLS_DOWNLOAD="artifact_urls_${WAZUH_IMAGE_VERSION}-${WAZUH_STAGE}.yaml"
else
ARTIFACT_URLS_DOWNLOAD="artifact_urls_${WAZUH_IMAGE_VERSION}.yaml"
fi
else
echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}"
# CASE: Pre-release/Staging (404 Not Found or any other non-200 status)
echo "Release $TAG not found (HTTP status: $HTTP_STATUS). Setting Pre-release environment."
PACKAGE_URL="packages-staging.xdrsiem.wazuh.info"
RELEASE_STAGE="pre-release"
if [ -n "$WAZUH_STAGE" ] && [ "$WAZUH_STAGE" != "null" ]; then
ARTIFACT_URLS_DOWNLOAD="artifact_urls_${WAZUH_IMAGE_VERSION}-${WAZUH_STAGE}.yaml"
else
ARTIFACT_URLS_DOWNLOAD="artifact_urls_${WAZUH_IMAGE_VERSION}.yaml"
fi
fi
# Final download using dynamic variables based on the release type.
# Pattern: server / stage / major_version.x / filename
FULL_URL="https://${PACKAGE_URL}/${RELEASE_STAGE}/${WAZUH_MAJOR_VERSION}.x/${ARTIFACT_URLS_DIR}/${ARTIFACT_URLS_DOWNLOAD}"
echo "Attempting to download: $FULL_URL"
curl -fsSL -o "$ARTIFACT_URLS_FILE" "$FULL_URL" || {
echo "Error: Failed to download artifact URLs from $FULL_URL" >&2
clean 1
}
fi
awk -F':' '!/^#/ && NF>1 {name=$1; val=substr($0,length(name)+3); gsub(/[-.]/,"_",name); print name "=\"" val "\""}' $ARTIFACT_URLS_FILE > artifacts_env.txt
# Set component commit references for development builds.
# Commits are only resolved (and later appended to the image tag) when --dev is
# explicitly passed. Production and stage builds (dev=false) never include a
# commit suffix even if -refs is provided. Manual local builds also omit it.
if [ -n "${IS_DEV_BUILD}" ]; then
if [ -z "${WAZUH_COMPONENTS_COMMIT_LIST}" ]; then
# Default to 'latest' for all components if no specific references are provided
INDEXER_COMMIT="latest"
MANAGER_COMMIT="latest"
DASHBOARD_COMMIT="latest"
AGENT_COMMIT="latest"
else
if ! printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" \
| jq -e 'type=="array" and (all(.[]; type=="string"))' >/dev/null 2>&1; then
echo 'Error: --references must be a JSON array of strings, e.g. ["ref1","ref2","ref3","ref4"]' >&2
clean 1
fi
refs_count="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r 'length')"
if [ -z "${WAZUH_COMPONENT}" ]; then
# No specific component to be build: require exactly 4 items
if [ "${refs_count}" -ne 4 ]; then
echo "Error: --references must contain exactly 4 items when no --component is specified." >&2
clean 1
fi
# Set all component commits
INDEXER_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[0]')"
MANAGER_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[1]')"
DASHBOARD_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[2]')"
AGENT_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[3]')"
else
# Specific component to be build: allow 1 (component-only)
if [ "${refs_count}" -ne 1 ]; then
echo "Error: --references must contain exactly 1 item when --component is specified." >&2
clean 1
fi
# Set specific component commit
case "${WAZUH_COMPONENT}" in
wazuh-indexer)
INDEXER_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[0]')"
;;
wazuh-manager)
MANAGER_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[0]')"
;;
wazuh-dashboard)
DASHBOARD_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[0]')"
;;
wazuh-agent)
AGENT_COMMIT="$(printf '%s' "${WAZUH_COMPONENTS_COMMIT_LIST}" | jq -r '.[0]')"
;;
*)
echo "Error: Unknown component '${WAZUH_COMPONENT}'" >&2
clean 1
;;
esac
fi
fi
fi
echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > .env
echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> .env
echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> .env
echo FILEBEAT_TEMPLATE_BRANCH=$FILEBEAT_TEMPLATE_BRANCH >> .env
echo WAZUH_FILEBEAT_MODULE=$WAZUH_FILEBEAT_MODULE >> .env
echo WAZUH_UI_REVISION=$WAZUH_UI_REVISION >> .env
docker compose -f build-docker-images/build-images.yml --env-file .env build --no-cache || clean 1
# Write the global .env file used by deployment compose files.
# IMAGE_TAG here reflects a non-dev, non-per-component tag for reference.
local base_tag="${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}"
echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > ../.env
echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> ../.env
echo WAZUH_REGISTRY=$WAZUH_REGISTRY >> ../.env
echo IMAGE_TAG=${base_tag} >> ../.env
set -a
source ../.env
source ./artifacts_env.txt
set +a
# Validate component if a specific one was requested.
if [ -n "${WAZUH_COMPONENT}" ]; then
case "${WAZUH_COMPONENT}" in
wazuh-indexer|wazuh-manager|wazuh-dashboard|wazuh-agent) ;;
*)
echo "Error: Unknown component '${WAZUH_COMPONENT}'" >&2
clean 1
;;
esac
fi
# Generate per-component image tags.
# The commit suffix is only appended when --dev is passed. This ensures:
# dev=false, tag=5.0.0 → 5.0.0
# dev=false, tag=5.0.0-beta1 → 5.0.0-beta1
# dev=true, tag=5.0.0 → 5.0.0-latest
# dev=true, tag=5.0.0-beta1 → 5.0.0-beta1-latest
make_tag() {
local commit=$1
if [ -n "${IS_DEV_BUILD}" ]; then
echo "${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}-${commit}"
else
echo "${base_tag}"
fi
}
export WAZUH_VERSION="$WAZUH_IMAGE_VERSION"
export MULTIARCH="${MULTIARCH}"
export INDEXER_TAG=$(make_tag "${INDEXER_COMMIT:-latest}")
export MANAGER_TAG=$(make_tag "${MANAGER_COMMIT:-latest}")
export DASHBOARD_TAG=$(make_tag "${DASHBOARD_COMMIT:-latest}")
export AGENT_TAG=$(make_tag "${AGENT_COMMIT:-latest}")
echo "Image tags:"
echo " wazuh-indexer: ${WAZUH_REGISTRY}/wazuh/wazuh-indexer:${INDEXER_TAG}"
echo " wazuh-manager: ${WAZUH_REGISTRY}/wazuh/wazuh-manager:${MANAGER_TAG}"
echo " wazuh-dashboard: ${WAZUH_REGISTRY}/wazuh/wazuh-dashboard:${DASHBOARD_TAG}"
echo " wazuh-agent: ${WAZUH_REGISTRY}/wazuh/wazuh-agent:${AGENT_TAG}"
# Bake options: --push for multi-arch (can't load multi-platform locally),
# --load for single-arch (stores image in local Docker daemon).
local bake_opts="--no-cache"
if [ "${MULTIARCH}" ]; then
bake_opts="${bake_opts} --push"
else
bake_opts="${bake_opts} --load"
fi
# Build a specific component or the full default group (all 4 in parallel).
if [ -z "${WAZUH_COMPONENT}" ]; then
echo "Building all components in parallel..."
docker buildx bake ${bake_opts} -f docker-bake.hcl || clean 1
else
echo "Building ${WAZUH_COMPONENT}..."
docker buildx bake ${bake_opts} -f docker-bake.hcl "${WAZUH_COMPONENT}" || clean 1
fi
echo ""
echo "Image build process completed!"
return 0
}
@@ -76,10 +248,13 @@ help() {
echo
echo "Usage: $0 [OPTIONS]"
echo
echo " -d, --dev <ref> [Optional] Set the development stage you want to build, example rc4 or beta1, not used by default."
echo " -f, --filebeat-module <ref> [Optional] Set Filebeat module version. By default ${FILEBEAT_MODULE_VERSION}."
echo " -r, --revision <rev> [Optional] Package revision. By default ${WAZUH_TAG_REVISION}"
echo " -d, --dev-stage <ref> [Optional] Set the pre-release stage suffix (e.g. beta1, rc2). Not used by default."
echo " --dev [Optional] Mark as a development build: appends the commit ref to the image tag. Controlled by inputs.dev in the workflow."
echo " -refs, --references <refs> [Optional] [Only with --dev] JSON array of commit refs for components (indexer, manager, dashboard, agent) in order. Defaults to 'latest'."
echo " -rg, --registry <reg> [Optional] Set the Docker registry to push the images."
echo " -c, --component <comp> [Required] Set the Wazuh component to build. Accepted values: 'wazuh-indexer', 'wazuh-manager', 'wazuh-dashboard', 'wazuh-agent'."
echo " -v, --version <ver> [Optional] Set the Wazuh version should be builded. By default, ${WAZUH_IMAGE_VERSION}."
echo " -m, --multiarch [Optional] Enable multi-architecture builds."
echo " -h, --help Show this help."
echo
exit $1
@@ -94,7 +269,7 @@ main() {
"-h"|"--help")
help 0
;;
"-d"|"--dev")
"-d"|"--dev-stage")
if [ -n "${2}" ]; then
WAZUH_DEV_STAGE="${2}"
shift 2
@@ -102,17 +277,26 @@ main() {
help 1
fi
;;
"-f"|"--filebeat-module")
"--dev")
IS_DEV_BUILD="true"
shift
;;
"-m"|"--multiarch")
MULTIARCH="true"
shift
;;
"-refs"|"--references")
if [ -n "${2}" ]; then
FILEBEAT_MODULE_VERSION="${2}"
# Replace single quotes with double quotes to ensure it's valid JSON for jq processing
WAZUH_COMPONENTS_COMMIT_LIST="$(printf '%s' "${2}" | sed "s/'/\"/g")"
shift 2
else
help 1
fi
;;
"-r"|"--revision")
"-rg"|"--registry")
if [ -n "${2}" ]; then
WAZUH_TAG_REVISION="${2}"
WAZUH_REGISTRY="${2}"
shift 2
else
help 1
@@ -126,6 +310,14 @@ main() {
help 1
fi
;;
"-c"|"--component")
if [ -n "${2}" ]; then
WAZUH_COMPONENT="${2}"
shift 2
else
help 1
fi
;;
*)
help 1
esac
-102
View File
@@ -1,102 +0,0 @@
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
services:
wazuh.manager:
build:
context: wazuh-manager/
args:
WAZUH_VERSION: ${WAZUH_VERSION}
WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION}
FILEBEAT_TEMPLATE_BRANCH: ${FILEBEAT_TEMPLATE_BRANCH}
WAZUH_FILEBEAT_MODULE: ${WAZUH_FILEBEAT_MODULE}
image: wazuh/wazuh-manager:${WAZUH_IMAGE_VERSION}
hostname: wazuh.manager
restart: always
ports:
- "1514:1514"
- "1515:1515"
- "514:514/udp"
- "55000:55000"
environment:
- INDEXER_URL=https://wazuh.indexer:9200
- INDEXER_USERNAME=admin
- INDEXER_PASSWORD=admin
- FILEBEAT_SSL_VERIFICATION_MODE=none
volumes:
- wazuh_api_configuration:/var/ossec/api/configuration
- wazuh_etc:/var/ossec/etc
- wazuh_logs:/var/ossec/logs
- wazuh_queue:/var/ossec/queue
- wazuh_var_multigroups:/var/ossec/var/multigroups
- wazuh_integrations:/var/ossec/integrations
- wazuh_active_response:/var/ossec/active-response/bin
- wazuh_agentless:/var/ossec/agentless
- wazuh_wodles:/var/ossec/wodles
- filebeat_etc:/etc/filebeat
- filebeat_var:/var/lib/filebeat
wazuh.agent:
build:
context: wazuh-agent/
args:
WAZUH_VERSION: ${WAZUH_VERSION}
WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION}
image: wazuh/wazuh-agent:${WAZUH_IMAGE_VERSION}
hostname: wazuh.agent
restart: always
wazuh.indexer:
build:
context: wazuh-indexer/
args:
WAZUH_VERSION: ${WAZUH_VERSION}
WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION}
image: wazuh/wazuh-indexer:${WAZUH_IMAGE_VERSION}
hostname: wazuh.indexer
restart: always
ports:
- "9200:9200"
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
wazuh.dashboard:
build:
context: wazuh-dashboard/
args:
WAZUH_VERSION: ${WAZUH_VERSION}
WAZUH_TAG_REVISION: ${WAZUH_TAG_REVISION}
WAZUH_UI_REVISION: ${WAZUH_UI_REVISION}
image: wazuh/wazuh-dashboard:${WAZUH_IMAGE_VERSION}
hostname: wazuh.dashboard
restart: always
ports:
- 443:443
environment:
- INDEXER_USERNAME=admin
- INDEXER_PASSWORD=admin
- SERVER_SSL_ENABLED=false
- WAZUH_API_URL=https://wazuh.manager
depends_on:
- wazuh.indexer
links:
- wazuh.indexer:wazuh.indexer
- wazuh.manager:wazuh.manager
volumes:
wazuh_api_configuration:
wazuh_etc:
wazuh_logs:
wazuh_queue:
wazuh_var_multigroups:
wazuh_integrations:
wazuh_active_response:
wazuh_agentless:
wazuh_wodles:
filebeat_etc:
filebeat_var:
+110
View File
@@ -0,0 +1,110 @@
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
#
# Docker Buildx Bake file.
# Builds all Wazuh component images in parallel.
#
# Usage:
# docker buildx bake # build all (local, single-arch)
# docker buildx bake wazuh-manager # build one component
# docker buildx bake --push # push to registry after build
#
# Variables are read automatically from the environment (see build-images.sh).
# ── Global variables ──────────────────────────────────────────────────────────
variable "WAZUH_VERSION" { default = "5.0.0" }
variable "WAZUH_REGISTRY" { default = "docker.io" }
# Set IMAGE_TAG externally to override; defaults to WAZUH_VERSION.
variable "IMAGE_TAG" { default = WAZUH_VERSION }
# MULTIARCH: set to a non-empty value to build linux/amd64 + linux/arm64.
variable "MULTIARCH" { default = "" }
# Per-component tags — all default to IMAGE_TAG.
# In dev builds the shell script sets each one independently to append the
# per-component commit ref (e.g. MANAGER_TAG=5.0.0-beta1-abc1234).
variable "INDEXER_TAG" { default = IMAGE_TAG }
variable "MANAGER_TAG" { default = IMAGE_TAG }
variable "DASHBOARD_TAG" { default = IMAGE_TAG }
variable "AGENT_TAG" { default = IMAGE_TAG }
# ── Artifact URL variables ────────────────────────────────────────────────────
# Populated by build-images.sh from artifacts_env.txt (sourced into env).
variable "wazuh_indexer_x86_64_rpm" { default = "" }
variable "wazuh_indexer_aarch64_rpm" { default = "" }
variable "wazuh_manager_x86_64_rpm" { default = "" }
variable "wazuh_manager_aarch64_rpm" { default = "" }
variable "wazuh_dashboard_x86_64_rpm" { default = "" }
variable "wazuh_dashboard_aarch64_rpm" { default = "" }
variable "wazuh_agent_x86_64_rpm" { default = "" }
variable "wazuh_agent_aarch64_rpm" { default = "" }
variable "wazuh_certs_tool" { default = "" }
variable "wazuh_config_yml" { default = "" }
# ── Default group: builds all components ─────────────────────────────────────
group "default" {
targets = ["wazuh-indexer", "wazuh-manager", "wazuh-dashboard", "wazuh-agent"]
}
# ── Shared base target ────────────────────────────────────────────────────────
# All component targets inherit from here. Not built directly.
target "_common" {
# MULTIARCH=true → build linux/amd64 + linux/arm64 (requires --push, no --load for multi-platform)
# MULTIARCH unset → null means "native platform of the build host" (amd64 on x86, arm64 on ARM)
platforms = MULTIARCH != "" ? ["linux/amd64", "linux/arm64"] : null
args = {
WAZUH_VERSION = WAZUH_VERSION
}
}
# ── Component targets ─────────────────────────────────────────────────────────
target "wazuh-indexer" {
inherits = ["_common"]
context = "wazuh-indexer/"
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-indexer:${INDEXER_TAG}"]
args = {
wazuh_indexer_x86_64_rpm = wazuh_indexer_x86_64_rpm
wazuh_indexer_aarch64_rpm = wazuh_indexer_aarch64_rpm
wazuh_certs_tool = wazuh_certs_tool
wazuh_config_yml = wazuh_config_yml
}
}
target "wazuh-manager" {
inherits = ["_common"]
context = "wazuh-manager/"
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-manager:${MANAGER_TAG}"]
args = {
wazuh_manager_x86_64_rpm = wazuh_manager_x86_64_rpm
wazuh_manager_aarch64_rpm = wazuh_manager_aarch64_rpm
wazuh_certs_tool = wazuh_certs_tool
wazuh_config_yml = wazuh_config_yml
}
}
target "wazuh-dashboard" {
inherits = ["_common"]
context = "wazuh-dashboard/"
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-dashboard:${DASHBOARD_TAG}"]
args = {
wazuh_dashboard_x86_64_rpm = wazuh_dashboard_x86_64_rpm
wazuh_dashboard_aarch64_rpm = wazuh_dashboard_aarch64_rpm
wazuh_certs_tool = wazuh_certs_tool
wazuh_config_yml = wazuh_config_yml
}
}
target "wazuh-agent" {
inherits = ["_common"]
context = "wazuh-agent/"
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-agent:${AGENT_TAG}"]
args = {
wazuh_agent_x86_64_rpm = wazuh_agent_x86_64_rpm
wazuh_agent_aarch64_rpm = wazuh_agent_aarch64_rpm
}
}
+72 -25
View File
@@ -1,36 +1,83 @@
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
################################################################################
# Build stage 0 (builder):
# Install Wazuh Agent RPM and download tini (static PID-1 init shim).
################################################################################
FROM amazonlinux:2023 AS builder
ARG WAZUH_VERSION
ARG TINI_VERSION="v0.19.0"
ARG WAZUH_MANAGER='CHANGE_MANAGER_IP'
ARG WAZUH_REGISTRATION_SERVER='CHANGE_ENROLL_IP'
ARG WAZUH_AGENT_NAME='CHANGE_AGENT_NAME'
ARG TARGETARCH
ARG wazuh_agent_x86_64_rpm
ARG wazuh_agent_aarch64_rpm
ARG WAZUH_UID=101
ARG WAZUH_GID=101
# Install only runtime dependencies
RUN dnf install procps shadow-utils -y && \
dnf clean all && \
getent group wazuh || groupadd -r -g ${WAZUH_GID} wazuh && \
getent passwd wazuh || useradd --system \
--no-create-home \
--home-dir /var/ossec \
--uid ${WAZUH_UID} \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
wazuh && \
RPM_ARCH="x86_64" && \
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
URL_VAR="wazuh_agent_${RPM_ARCH}_rpm" && \
agent_url="${!URL_VAR}" && \
dnf install curl-minimal tar gzip procps shadow-utils -y && \
curl -o /wazuh-agent.rpm "${agent_url}" && \
dnf install /wazuh-agent.rpm -y && \
rm -rf /wazuh-agent.rpm && \
dnf clean all && \
sed -i '/<authorization_pass_path>/d' /var/ossec/etc/ossec.conf
# Download tini static binary (no external library dependencies)
RUN curl --fail --silent -L \
https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-${TARGETARCH} \
-o /usr/local/bin/tini && \
chmod +x /usr/local/bin/tini
################################################################################
# Build stage 1 (the actual Wazuh Agent image):
# Copy Wazuh Agent and tini from builder. Install only runtime dependencies.
################################################################################
FROM amazonlinux:2023
ARG WAZUH_UID=101
ARG WAZUH_GID=101
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
ARG WAZUH_VERSION
ARG WAZUH_TAG_REVISION
ARG S6_VERSION="v2.2.0.3"
ARG WAZUH_MANAGER='CHANGE_MANAGER_IP'
ARG WAZUH_MANAGER_PORT='CHANGE_MANAGER_PORT'
ARG WAZUH_REGISTRATION_SERVER='CHANGE_ENROLL_IP'
ARG WAZUH_REGISTRATION_PORT='CHANGE_ENROLL_PORT'
ARG WAZUH_AGENT_NAME='CHANGEE_AGENT_NAME'
# Install only runtime dependencies
RUN dnf install procps shadow-utils -y && \
dnf clean all && \
getent group wazuh || groupadd -r -g ${WAZUH_GID} wazuh && \
getent passwd wazuh || useradd --system \
--no-create-home \
--home-dir /var/ossec \
--uid ${WAZUH_UID} \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
wazuh
COPY config/check_repository.sh /
# Copy Wazuh Agent installation from builder
COPY --from=builder /var/ossec /var/ossec
RUN yum install curl-minimal tar gzip procps -y &&\
yum clean all
RUN chmod 775 /check_repository.sh
RUN source /check_repository.sh
RUN yum install wazuh-agent-${WAZUH_VERSION}-${WAZUH_TAG_REVISION} -y && \
yum clean all && \
sed -i '/<authorization_pass_path>/d' /var/ossec/etc/ossec.conf && \
curl --fail --silent -L https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-amd64.tar.gz \
-o /tmp/s6-overlay-amd64.tar.gz && \
tar xzf /tmp/s6-overlay-amd64.tar.gz -C / --exclude="./bin" && \
tar xzf /tmp/s6-overlay-amd64.tar.gz -C /usr ./bin && \
rm /tmp/s6-overlay-amd64.tar.gz
# Copy tini static binary
COPY --from=builder /usr/local/bin/tini /usr/local/bin/tini
# Copy entrypoint and init scripts
COPY config/entrypoint.sh /entrypoint.sh
COPY config/etc/ /etc/
RUN rm /etc/yum.repos.d/wazuh.repo
RUN chmod 755 /entrypoint.sh
ENTRYPOINT [ "/init" ]
ENTRYPOINT ["/usr/local/bin/tini", "--", "/entrypoint.sh"]
@@ -1,15 +0,0 @@
## variables
APT_KEY=https://packages-dev.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages-dev.wazuh.com/pre-release/yum/\nprotect=1"
WAZUH_TAG=$(curl --silent https://api.github.com/repos/wazuh/wazuh/git/refs/tags | grep '["]ref["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 11- | grep ^v${WAZUH_VERSION}$)
## check tag to use the correct repository
if [[ -n "${WAZUH_TAG}" ]]; then
APT_KEY=https://packages.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1"
fi
rpm --import "${APT_KEY}"
echo -e "${REPOSITORY}" | tee /etc/yum.repos.d/wazuh.repo
@@ -0,0 +1,22 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
# Run initialization and configuration
bash /etc/cont-init.d/0-wazuh-init
# Start Wazuh Agent (may log warnings if manager address is not configured)
bash /etc/cont-init.d/1-agent
# Tail the main log to stdout so Docker captures it
tail -F /var/ossec/logs/ossec.log &
TAIL_PID=$!
# Graceful shutdown: stop Wazuh and exit cleanly on SIGTERM/SIGINT
_stop() {
echo "Stopping Wazuh Agent..."
/var/ossec/bin/wazuh-control stop 2>/dev/null || true
kill "${TAIL_PID}" 2>/dev/null || true
}
trap _stop SIGTERM SIGINT SIGQUIT
wait "${TAIL_PID}"
@@ -1,13 +1,10 @@
#!/usr/bin/with-contenv bash
#!/bin/bash
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
WAZUH_INSTALL_PATH=/var/ossec
WAZUH_CONFIG_MOUNT=/wazuh-config-mount
WAZUH_MANAGER_SERVER=$WAZUH_MANAGER_SERVER
WAZUH_MANAGER_PORT=${WAZUH_MANAGER_PORT:-"1514"}
WAZUH_REGISTRATION_SERVER=${WAZUH_REGISTRATION_SERVER:-$WAZUH_MANAGER_SERVER}
WAZUH_REGISTRATION_PORT=${WAZUH_REGISTRATION_PORT:-"1515"}
WAZUH_REGISTRATION_PASSWORD=$WAZUH_REGISTRATION_PASSWORD
WAZUH_AGENT_NAME=${WAZUH_AGENT_NAME:-"wazuh-agent-$HOSTNAME"}
##############################################################################
@@ -63,14 +60,8 @@ mount_files() {
set_manager_conn() {
echo "ossec.conf configuration"
sed -i "s#<address>CHANGE_MANAGER_IP</address>#<address>$WAZUH_MANAGER_SERVER</address>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
sed -i "s#<port>CHANGE_MANAGER_PORT</port>#<port>$WAZUH_MANAGER_PORT</port>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
sed -i "s#<manager_address>CHANGE_ENROLL_IP</manager_address>#<manager_address>$WAZUH_REGISTRATION_SERVER</manager_address>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
sed -i "s#<port>CHANGE_ENROLL_PORT</port>#<port>$WAZUH_REGISTRATION_PORT</port>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
sed -i "s#<agent_name>CHANGEE_AGENT_NAME</agent_name>#<agent_name>$WAZUH_AGENT_NAME</agent_name>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
[ -n "$WAZUH_REGISTRATION_PASSWORD" ] && \
echo "$WAZUH_REGISTRATION_PASSWORD" > ${WAZUH_INSTALL_PATH}/etc/authd.pass && \
chown root:wazuh ${WAZUH_INSTALL_PATH}/etc/authd.pass && \
chmod 640 ${WAZUH_INSTALL_PATH}/etc/authd.pass
sed -i "s#<agent_name>CHANGE_AGENT_NAME</agent_name>#<agent_name>$WAZUH_AGENT_NAME</agent_name>#g" ${WAZUH_INSTALL_PATH}/etc/ossec.conf
}
##############################################################################
@@ -1,4 +1,4 @@
#!/usr/bin/with-contenv bash
#!/bin/bash
##############################################################################
# Migration sequence
@@ -1,4 +1,4 @@
#!/usr/bin/with-contenv sh
#!/bin/sh
# dumping ossec.log to standard output
exec tail -F /var/ossec/logs/ossec.log
+60 -45
View File
@@ -2,50 +2,66 @@
FROM amazonlinux:2023 AS builder
ARG WAZUH_VERSION
ARG WAZUH_TAG_REVISION
ARG WAZUH_UI_REVISION
ARG INSTALL_DIR=/usr/share/wazuh-dashboard
ARG TARGETARCH
ARG wazuh_dashboard_x86_64_rpm
ARG wazuh_dashboard_aarch64_rpm
ARG wazuh_config_yml
ARG WAZUH_UID=101
ARG WAZUH_GID=101
# Set environment variables
ENV USER="wazuh-dashboard" \
GROUP="wazuh-dashboard" \
NAME="wazuh-dashboard" \
INSTALL_DIR="/usr/share/wazuh-dashboard"
# Update and install dependencies
RUN yum install curl-minimal libcap openssl -y
COPY config/check_repository.sh /
RUN chmod 775 /check_repository.sh && \
source /check_repository.sh
RUN yum install wazuh-dashboard-${WAZUH_VERSION}-${WAZUH_TAG_REVISION} -y && \
yum clean all
RUN yum install shadow-utils -y && \
yum clean all && \
getent group $GROUP || groupadd -r -g ${WAZUH_GID} $GROUP && \
useradd --system \
--uid ${WAZUH_UID} \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid $GROUP \
--shell /sbin/nologin \
--comment "$USER user" \
$USER && \
RPM_ARCH="x86_64" && \
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
URL_VAR="wazuh_dashboard_${RPM_ARCH}_rpm" && \
dashboard_url="${!URL_VAR}" && \
dnf install curl-minimal libcap openssl -y && \
curl -o /wazuh-dashboard.rpm "${dashboard_url}" && \
dnf install /wazuh-dashboard.rpm -y && \
rm -rf /wazuh-dashboard.rpm && \
dnf clean all
# Create and set permissions to data directories
RUN mkdir -p $INSTALL_DIR/data/wazuh && chmod -R 775 $INSTALL_DIR/data/wazuh
RUN mkdir -p $INSTALL_DIR/data/wazuh/config && chmod -R 775 $INSTALL_DIR/data/wazuh/config
RUN mkdir -p $INSTALL_DIR/data/wazuh/logs && chmod -R 775 $INSTALL_DIR/data/wazuh/logs
COPY config/wazuh.yml $INSTALL_DIR/data/wazuh/config/
RUN setcap 'cap_net_bind_service=-ep' /usr/share/wazuh-dashboard/node/bin/node
RUN setcap 'cap_net_bind_service=-ep' /usr/share/wazuh-dashboard/node/fallback/bin/node
# Generate certificates
COPY config/config.sh .
COPY config/config.yml /
RUN bash config.sh
################################################################################
# Build stage 1 (the current Wazuh dashboard image):
#
# Copy wazuh-dashboard from stage 0
# Add entrypoint
# Add wazuh_app_config
# Add wazuh_dashboard_config
################################################################################
FROM amazonlinux:2023
ARG WAZUH_UID=101
ARG WAZUH_GID=101
# Set environment variables
ENV USER="wazuh-dashboard" \
GROUP="wazuh-dashboard" \
NAME="wazuh-dashboard" \
INSTALL_DIR="/usr/share/wazuh-dashboard"
# Set Wazuh app variables
ENV PATTERN="" \
INSTALL_DIR="/usr/share/wazuh-dashboard" \
PATTERN="" \
CHECKS_PATTERN="" \
CHECKS_TEMPLATE="" \
CHECKS_API="" \
@@ -59,33 +75,32 @@ ENV PATTERN="" \
WAZUH_MONITORING_SHARDS="" \
WAZUH_MONITORING_REPLICAS=""
# Update and install dependencies
RUN yum install shadow-utils -y
# Create wazuh-dashboard user and group
RUN getent group $GROUP || groupadd -r -g 1000 $GROUP
RUN useradd --system \
--uid 1000 \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid $GROUP \
--shell /sbin/nologin \
--comment "$USER user" \
$USER
# Copy and set permissions to scripts
COPY config/entrypoint.sh /
COPY config/wazuh_app_config.sh /
RUN chmod 700 /entrypoint.sh
RUN chmod 700 /wazuh_app_config.sh
RUN chown 1000:1000 /*.sh
COPY config/wazuh_dashboard_config.sh /
# Update and install dependencies
RUN yum install shadow-utils -y && \
yum clean all && \
getent group $GROUP || groupadd -r -g ${WAZUH_GID} $GROUP && \
useradd --system \
--uid ${WAZUH_UID} \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid $GROUP \
--shell /sbin/nologin \
--comment "$USER user" \
$USER && \
chmod 700 /entrypoint.sh && \
chmod 700 /wazuh_dashboard_config.sh && \
mkdir -p $INSTALL_DIR && \
chown ${WAZUH_UID}:${WAZUH_GID} $INSTALL_DIR && \
chown ${WAZUH_UID}:${WAZUH_GID} /*.sh && \
mkdir -p /usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
# Copy Install dir from builder to current image
COPY --from=builder --chown=1000:1000 $INSTALL_DIR $INSTALL_DIR
# Create custom directory
RUN mkdir -p /usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
RUN chown 1000:1000 /usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
COPY --from=builder $INSTALL_DIR $INSTALL_DIR
COPY --from=builder /etc/wazuh-dashboard $INSTALL_DIR/config/
# Set workdir and user
WORKDIR $INSTALL_DIR
@@ -1,15 +0,0 @@
## variables
APT_KEY=https://packages-dev.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages-dev.wazuh.com/pre-release/yum/\nprotect=1"
WAZUH_TAG=$(curl --silent https://api.github.com/repos/wazuh/wazuh/git/refs/tags | grep '["]ref["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 11- | grep ^v${WAZUH_VERSION}$)
## check tag to use the correct repository
if [[ -n "${WAZUH_TAG}" ]]; then
APT_KEY=https://packages.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1"
fi
rpm --import "${APT_KEY}"
echo -e "${REPOSITORY}" | tee /etc/yum.repos.d/wazuh.repo
@@ -1,42 +0,0 @@
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
# This has to be exported to make some magic below work.
export DH_OPTIONS
export NAME=wazuh-dashboard
export TARGET_DIR=${CURDIR}/debian/${NAME}
export INSTALLATION_DIR=/usr/share/${NAME}
export CONFIG_DIR=${INSTALLATION_DIR}/config
## Variables
CERT_TOOL=wazuh-certs-tool.sh
PACKAGES_URL=https://packages.wazuh.com/4.14/
PACKAGES_DEV_URL=https://packages-dev.wazuh.com/4.14/
## Check if the cert tool exists in S3 buckets
CERT_TOOL_PACKAGES=$(curl --silent -I $PACKAGES_URL$CERT_TOOL | grep -E "^HTTP" | awk '{print $2}')
CERT_TOOL_PACKAGES_DEV=$(curl --silent -I $PACKAGES_DEV_URL$CERT_TOOL | grep -E "^HTTP" | awk '{print $2}')
## If cert tool exists in some bucket, download it, if not exit 1
if [ "$CERT_TOOL_PACKAGES" = "200" ]; then
curl -o $CERT_TOOL $PACKAGES_URL$CERT_TOOL
echo "Cert tool exists in Packages bucket"
elif [ "$CERT_TOOL_PACKAGES_DEV" = "200" ]; then
curl -o $CERT_TOOL $PACKAGES_DEV_URL$CERT_TOOL
echo "Cert tool exists in Packages-dev bucket"
else
echo "Cert tool does not exist in any bucket"
exit 1
fi
chmod 755 $CERT_TOOL && bash /$CERT_TOOL -A
# Create certs directory
mkdir -p ${CONFIG_DIR}/certs
# Copy Wazuh dashboard certs to install config dir
cp /wazuh-certificates/demo.dashboard.pem ${CONFIG_DIR}/certs/dashboard.pem
cp /wazuh-certificates/demo.dashboard-key.pem ${CONFIG_DIR}/certs/dashboard-key.pem
cp /wazuh-certificates/root-ca.pem ${CONFIG_DIR}/certs/root-ca.pem
chmod -R 500 ${CONFIG_DIR}/certs
chmod -R 400 ${CONFIG_DIR}/certs/*
@@ -1,5 +0,0 @@
nodes:
# Wazuh dashboard server nodes
dashboard:
- name: demo.dashboard
ip: demo.dashboard
@@ -1,20 +1,87 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
INSTALL_DIR=/usr/share/wazuh-dashboard
# Run Wazuh dashboard, using environment variables to
# set longopts defining Wazuh dashboard's configuration.
#
# eg. Setting the environment variable:
#
# OPENSEARCH_STARTUPTIMEOUT=60
#
# will cause OpenSearch-Dashboards to be invoked with:
#
# --opensearch.startupTimeout=60
# Setup Home Directory
export OPENSEARCH_DASHBOARDS_HOME=/usr/share/wazuh-dashboard
export PATH=$OPENSEARCH_DASHBOARDS_HOME/bin:$PATH
DASHBOARD_USERNAME="${DASHBOARD_USERNAME:-kibanaserver}"
DASHBOARD_PASSWORD="${DASHBOARD_PASSWORD:-kibanaserver}"
# Create and configure Wazuh dashboard keystore
yes | $INSTALL_DIR/bin/opensearch-dashboards-keystore create --allow-root && \
echo $DASHBOARD_USERNAME | $INSTALL_DIR/bin/opensearch-dashboards-keystore add opensearch.username --stdin --allow-root && \
echo $DASHBOARD_PASSWORD | $INSTALL_DIR/bin/opensearch-dashboards-keystore add opensearch.password --stdin --allow-root
yes | $OPENSEARCH_DASHBOARDS_HOME/bin/opensearch-dashboards-keystore create --allow-root && \
echo $DASHBOARD_USERNAME | $OPENSEARCH_DASHBOARDS_HOME/bin/opensearch-dashboards-keystore add opensearch.username --stdin --allow-root && \
echo $DASHBOARD_PASSWORD | $OPENSEARCH_DASHBOARDS_HOME/bin/opensearch-dashboards-keystore add opensearch.password --stdin --allow-root
##############################################################################
# Start Wazuh dashboard
##############################################################################
/wazuh_dashboard_config.sh
/wazuh_app_config.sh $WAZUH_UI_REVISION
opensearch_dashboards_vars=(
opensearch.hosts
server.port
server.host
opensearch.username
opensearch.password
)
/usr/share/wazuh-dashboard/bin/opensearch-dashboards -c /usr/share/wazuh-dashboard/config/opensearch_dashboards.yml
function runOpensearchDashboards {
longopts=()
for opensearch_dashboards_var in ${opensearch_dashboards_vars[*]}; do
# 'opensearch.hosts' -> 'OPENSEARCH_URL'
env_var=$(echo ${opensearch_dashboards_var^^} | tr . _)
# Indirectly lookup env var values via the name of the var.
# REF: http://tldp.org/LDP/abs/html/bashver2.html#EX78
value=${!env_var}
if [[ -n $value ]]; then
longopt="--${opensearch_dashboards_var}=${value}"
longopts+=("${longopt}")
fi
done
# Files created at run-time should be group-writable, for Openshift's sake.
umask 0002
# TO DO:
# Confirm with Mihir if this is necessary
# The virtual file /proc/self/cgroup should list the current cgroup
# membership. For each hierarchy, you can follow the cgroup path from
# this file to the cgroup filesystem (usually /sys/fs/cgroup/) and
# introspect the statistics for the cgroup for the given
# hierarchy. Alas, Docker breaks this by mounting the container
# statistics at the root while leaving the cgroup paths as the actual
# paths. Therefore, OpenSearch-Dashboards provides a mechanism to override
# reading the cgroup path from /proc/self/cgroup and instead uses the
# cgroup path defined the configuration properties
# cpu.cgroup.path.override and cpuacct.cgroup.path.override.
# Therefore, we set this value here so that cgroup statistics are
# available for the container this process will run in.
exec "$@" \
--ops.cGroupOverrides.cpuPath=/ \
--ops.cGroupOverrides.cpuAcctPath=/ \
"${longopts[@]}"
}
# Prepend "opensearch-dashboards" command if no argument was provided or if the
# first argument looks like a flag (i.e. starts with a dash).
if [ $# -eq 0 ] || [ "${1:0:1}" = '-' ]; then
set -- opensearch-dashboards "$@"
fi
if [ "$1" = "opensearch-dashboards" ]; then
runOpensearchDashboards "$@"
else
exec "$@"
fi
@@ -1,155 +0,0 @@
---
#
# Wazuh app - App configuration file
# Copyright (C) 2017, Wazuh Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Find more information about this on the LICENSE file.
#
# ======================== Wazuh app configuration file ========================
#
# Please check the documentation for more information on configuration options:
# https://documentation.wazuh.com/current/installation-guide/index.html
#
# Also, you can check our repository:
# https://github.com/wazuh/wazuh-dashboard-plugins
#
# ------------------------------- Index patterns -------------------------------
#
# Default index pattern to use.
#pattern: wazuh-alerts-*
#
# ----------------------------------- Checks -----------------------------------
#
# Defines which checks must to be consider by the healthcheck
# step once the Wazuh app starts. Values must to be true or false.
#checks.pattern : true
#checks.template: true
#checks.api : true
#checks.setup : true
#checks.metaFields: true
#
# --------------------------------- Extensions ---------------------------------
#
# Defines which extensions should be activated when you add a new API entry.
# You can change them after Wazuh app starts.
# Values must to be true or false.
#extensions.pci : true
#extensions.gdpr : true
#extensions.hipaa : true
#extensions.nist : true
#extensions.tsc : true
#extensions.audit : true
#extensions.oscap : false
#extensions.ciscat : false
#extensions.aws : false
#extensions.gcp : false
#extensions.virustotal: false
#extensions.osquery : false
#extensions.docker : false
#
# ---------------------------------- Time out ----------------------------------
#
# Defines maximum timeout to be used on the Wazuh app requests.
# It will be ignored if it is bellow 1500.
# It means milliseconds before we consider a request as failed.
# Default: 20000
#timeout: 20000
#
# -------------------------------- API selector --------------------------------
#
# Defines if the user is allowed to change the selected
# API directly from the Wazuh app top menu.
# Default: true
#api.selector: true
#
# --------------------------- Index pattern selector ---------------------------
#
# Defines if the user is allowed to change the selected
# index pattern directly from the Wazuh app top menu.
# Default: true
#ip.selector: true
#
# List of index patterns to be ignored
#ip.ignore: []
#
# ------------------------------ wazuh-monitoring ------------------------------
#
# Custom setting to enable/disable wazuh-monitoring indices.
# Values: true, false, worker
# If worker is given as value, the app will show the Agents status
# visualization but won't insert data on wazuh-monitoring indices.
# Default: true
#wazuh.monitoring.enabled: true
#
# Custom setting to set the frequency for wazuh-monitoring indices cron task.
# Default: 900 (s)
#wazuh.monitoring.frequency: 900
#
# Configure wazuh-monitoring-* indices shards and replicas.
#wazuh.monitoring.shards: 2
#wazuh.monitoring.replicas: 0
#
# Configure wazuh-monitoring-* indices custom creation interval.
# Values: h (hourly), d (daily), w (weekly), m (monthly)
# Default: d
#wazuh.monitoring.creation: d
#
# Default index pattern to use for Wazuh monitoring
#wazuh.monitoring.pattern: wazuh-monitoring-*
#
# --------------------------------- wazuh-cron ----------------------------------
#
# Customize the index prefix of predefined jobs
# This change is not retroactive, if you change it new indexes will be created
# cron.prefix: test
#
# ------------------------------ wazuh-statistics -------------------------------
#
# Custom setting to enable/disable statistics tasks.
#cron.statistics.status: true
#
# Enter the ID of the APIs you want to save data from, leave this empty to run
# the task on all configured APIs
#cron.statistics.apis: []
#
# Define the frequency of task execution using cron schedule expressions
#cron.statistics.interval: 0 0 * * * *
#
# Define the name of the index in which the documents are to be saved.
#cron.statistics.index.name: statistics
#
# Define the interval in which the index will be created
#cron.statistics.index.creation: w
#
# ------------------------------- App privileges --------------------------------
#admin: true
#
# ---------------------------- Hide manager alerts ------------------------------
# Hide the alerts of the manager in all dashboards and discover
#hideManagerAlerts: false
#
# ------------------------------- App logging level -----------------------------
# Set the logging level for the Wazuh App log files.
# Default value: info
# Allowed values: info, debug
#logs.level: info
#
# -------------------------------- Enrollment DNS -------------------------------
# Set the variable WAZUH_REGISTRATION_SERVER in agents deployment.
# Default value: ''
#enrollment.dns: ''
#
#-------------------------------- API entries -----------------------------------
#The following configuration is the default structure to define an API entry.
#
#hosts:
# - <id>:
# url: http(s)://<url>
# port: <port>
# username: <username>
# password: <password>
@@ -1,52 +0,0 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
wazuh_url="${WAZUH_API_URL:-https://wazuh}"
wazuh_port="${API_PORT:-55000}"
api_username="${API_USERNAME:-wazuh-wui}"
api_password="${API_PASSWORD:-wazuh-wui}"
api_run_as="${RUN_AS:-false}"
dashboard_config_file="/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml"
declare -A CONFIG_MAP=(
[pattern]=$PATTERN
[checks.pattern]=$CHECKS_PATTERN
[checks.template]=$CHECKS_TEMPLATE
[checks.api]=$CHECKS_API
[checks.setup]=$CHECKS_SETUP
[timeout]=$APP_TIMEOUT
[api.selector]=$API_SELECTOR
[ip.selector]=$IP_SELECTOR
[ip.ignore]=$IP_IGNORE
[wazuh.monitoring.enabled]=$WAZUH_MONITORING_ENABLED
[wazuh.monitoring.frequency]=$WAZUH_MONITORING_FREQUENCY
[wazuh.monitoring.shards]=$WAZUH_MONITORING_SHARDS
[wazuh.monitoring.replicas]=$WAZUH_MONITORING_REPLICAS
)
for i in "${!CONFIG_MAP[@]}"
do
if [ "${CONFIG_MAP[$i]}" != "" ]; then
sed -i 's/.*#'"$i"'.*/'"$i"': '"${CONFIG_MAP[$i]}"'/' $dashboard_config_file
fi
done
grep -q 1513629884013 $dashboard_config_file
_config_exists=$?
if [[ $_config_exists -ne 0 ]]; then
cat << EOF >> $dashboard_config_file
hosts:
- 1513629884013:
url: $wazuh_url
port: $wazuh_port
username: $api_username
password: $api_password
run_as: $api_run_as
EOF
else
echo "Wazuh APP already configured"
fi
@@ -0,0 +1,110 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
# Environment variables with defaults
SERVER_HOST="${SERVER_HOST:-0.0.0.0}"
SERVER_PORT="${SERVER_PORT:-443}"
OPENSEARCH_HOSTS="${OPENSEARCH_HOSTS:-https://wazuh.indexer:9200}"
OPENSEARCH_SSL_VERIFICATION_MODE="${OPENSEARCH_SSL_VERIFICATION_MODE:-certificate}"
OPENSEARCH_USERNAME="${OPENSEARCH_USERNAME:-}"
OPENSEARCH_PASSWORD="${OPENSEARCH_PASSWORD:-}"
OPENSEARCH_REQUEST_HEADERS_ALLOWLIST="${OPENSEARCH_REQUEST_HEADERS_ALLOWLIST:-[\"securitytenant\",\"Authorization\"]}"
OPENSEARCH_SECURITY_MULTITENANCY_ENABLED="${OPENSEARCH_SECURITY_MULTITENANCY_ENABLED:-false}"
OPENSEARCH_SECURITY_READONLY_MODE_ROLES="${OPENSEARCH_SECURITY_READONLY_MODE_ROLES:-[\"kibana_read_only\"]}"
SERVER_SSL_ENABLED="${SERVER_SSL_ENABLED:-true}"
SERVER_SSL_KEY="${SERVER_SSL_KEY:-/etc/wazuh-dashboard/certs/dashboard-key.pem}"
SERVER_SSL_CERTIFICATE="${SERVER_SSL_CERTIFICATE:-/etc/wazuh-dashboard/certs/dashboard.pem}"
OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES="${OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES:-[/etc/wazuh-dashboard/certs/root-ca.pem]}"
UI_SETTINGS_OVERRIDES_DEFAULT_ROUTE="${UI_SETTINGS_OVERRIDES_DEFAULT_ROUTE:-/app/wz-home}"
OPENSEARCH_SECURITY_COOKIE_TTL="${OPENSEARCH_SECURITY_COOKIE_TTL:-900000}"
OPENSEARCH_SECURITY_SESSION_TTL="${OPENSEARCH_SECURITY_SESSION_TTL:-900000}"
OPENSEARCH_SECURITY_SESSION_KEEPALIVE="${OPENSEARCH_SECURITY_SESSION_KEEPALIVE:-true}"
# Wazuh API configuration
WAZUH_API_URL="${WAZUH_API_URL:-https://localhost}"
API_PORT="${API_PORT:-55000}"
API_USERNAME="${API_USERNAME:-wazuh-wui}"
API_PASSWORD="${API_PASSWORD:-wazuh-wui}"
RUN_AS="${RUN_AS:-true}"
# Optional Wazuh app configurations
PATTERN="${PATTERN:-}"
CHECKS_PATTERN="${CHECKS_PATTERN:-}"
CHECKS_TEMPLATE="${CHECKS_TEMPLATE:-}"
CHECKS_API="${CHECKS_API:-}"
CHECKS_SETUP="${CHECKS_SETUP:-}"
APP_TIMEOUT="${APP_TIMEOUT:-}"
API_SELECTOR="${API_SELECTOR:-}"
IP_SELECTOR="${IP_SELECTOR:-}"
IP_IGNORE="${IP_IGNORE:-}"
WAZUH_MONITORING_ENABLED="${WAZUH_MONITORING_ENABLED:-}"
WAZUH_MONITORING_FREQUENCY="${WAZUH_MONITORING_FREQUENCY:-}"
WAZUH_MONITORING_SHARDS="${WAZUH_MONITORING_SHARDS:-}"
WAZUH_MONITORING_REPLICAS="${WAZUH_MONITORING_REPLICAS:-}"
# Configuration file path
DASHBOARD_CONFIG_FILE="${DASHBOARD_CONFIG_FILE:-/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml}"
# Map of configuration keys to their values
declare -A CONFIG_MAP=(
[server.host]="$SERVER_HOST"
[server.port]="$SERVER_PORT"
[opensearch.hosts]="$OPENSEARCH_HOSTS"
[opensearch.ssl.verificationMode]="$OPENSEARCH_SSL_VERIFICATION_MODE"
[opensearch.username]="$OPENSEARCH_USERNAME"
[opensearch.password]="$OPENSEARCH_PASSWORD"
[opensearch.requestHeadersAllowlist]="$OPENSEARCH_REQUEST_HEADERS_ALLOWLIST"
[opensearch_security.multitenancy.enabled]="$OPENSEARCH_SECURITY_MULTITENANCY_ENABLED"
[opensearch_security.readonly_mode.roles]="$OPENSEARCH_SECURITY_READONLY_MODE_ROLES"
[server.ssl.enabled]="$SERVER_SSL_ENABLED"
[server.ssl.key]="\"$SERVER_SSL_KEY\""
[server.ssl.certificate]="\"$SERVER_SSL_CERTIFICATE\""
[opensearch.ssl.certificateAuthorities]="$OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES"
[uiSettings.overrides.defaultRoute]="$UI_SETTINGS_OVERRIDES_DEFAULT_ROUTE"
[opensearch_security.cookie.ttl]="$OPENSEARCH_SECURITY_COOKIE_TTL"
[opensearch_security.session.ttl]="$OPENSEARCH_SECURITY_SESSION_TTL"
[opensearch_security.session.keepalive]="$OPENSEARCH_SECURITY_SESSION_KEEPALIVE"
[pattern]="$PATTERN"
[checks.pattern]="$CHECKS_PATTERN"
[checks.template]="$CHECKS_TEMPLATE"
[checks.api]="$CHECKS_API"
[checks.setup]="$CHECKS_SETUP"
[timeout]="$APP_TIMEOUT"
[api.selector]="$API_SELECTOR"
[ip.selector]="$IP_SELECTOR"
[ip.ignore]="$IP_IGNORE"
[wazuh.monitoring.enabled]="$WAZUH_MONITORING_ENABLED"
[wazuh.monitoring.frequency]="$WAZUH_MONITORING_FREQUENCY"
[wazuh.monitoring.shards]="$WAZUH_MONITORING_SHARDS"
[wazuh.monitoring.replicas]="$WAZUH_MONITORING_REPLICAS"
)
# Replace configuration values in the dashboard config file
for key in "${!CONFIG_MAP[@]}"; do
value="${CONFIG_MAP[$key]}"
# Skip empty values for optional configurations
if [ -z "$value" ]; then
continue
fi
# Escape special characters for sed
escaped_key=$(echo "$key" | sed 's/[.[\*^$()+?{|]/\\&/g')
# Try to replace existing line (commented or uncommented)
if grep -q "^[#[:space:]]*${escaped_key}:" "$DASHBOARD_CONFIG_FILE"; then
sed -i "s|^[#[:space:]]*${escaped_key}:.*|${key}: ${value}|" "$DASHBOARD_CONFIG_FILE"
fi
done
# Handle wazuh_core.hosts section separately
if grep -q "^wazuh_core.hosts:" "$DASHBOARD_CONFIG_FILE"; then
# Update existing wazuh_core.hosts section
sed -i "/^wazuh_core.hosts:/,/^[^ ]/ {
s|url:.*|url: $WAZUH_API_URL|
s|port:.*|port: $API_PORT|
s|username:.*|username: $API_USERNAME|
s|password:.*|password: $API_PASSWORD|
s|run_as:.*|run_as: $RUN_AS|
}" "$DASHBOARD_CONFIG_FILE"
fi
+70 -58
View File
@@ -2,92 +2,104 @@
FROM amazonlinux:2023 AS builder
ARG WAZUH_VERSION
ARG WAZUH_TAG_REVISION
ARG TARGETARCH
ARG wazuh_indexer_x86_64_rpm
ARG wazuh_indexer_aarch64_rpm
ARG wazuh_certs_tool
ARG wazuh_config_yml
ARG WAZUH_UID=101
ARG WAZUH_GID=101
RUN yum install curl-minimal openssl xz tar findutils shadow-utils -y
COPY config/check_repository.sh /
RUN chmod 775 /check_repository.sh && \
source /check_repository.sh
RUN yum install wazuh-indexer-${WAZUH_VERSION}-${WAZUH_TAG_REVISION} -y && \
yum clean all
COPY config/opensearch.yml /
ENV USER="wazuh-indexer" \
GROUP="wazuh-indexer" \
NAME="wazuh-indexer" \
INSTALL_DIR="/usr/share/wazuh-indexer"
COPY config/config.sh .
COPY config/config.yml /
COPY config/action_groups.yml /
COPY config/internal_users.yml /
COPY config/roles_mapping.yml /
COPY config/roles.yml /
RUN bash config.sh
RUN yum install curl-minimal shadow-utils findutils hostname -y && \
yum clean all && \
getent group $GROUP || groupadd -r -g ${WAZUH_GID} $GROUP && \
useradd --system \
--uid ${WAZUH_UID} \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
--comment "$USER user" \
$USER && \
RPM_ARCH="x86_64" && \
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
URL_VAR="wazuh_indexer_${RPM_ARCH}_rpm" && \
indexer_url="${!URL_VAR}" && \
dnf install curl-minimal openssl xz tar findutils shadow-utils -y &&\
curl -o /wazuh-indexer.rpm "${indexer_url}" && \
dnf install /wazuh-indexer.rpm -y && \
rm -rf /wazuh-indexer.rpm && \
dnf clean all && \
bash config.sh
################################################################################
# Build stage 1 (the actual Wazuh indexer image):
#
# Copy wazuh-indexer from stage 0
# Add entrypoint
################################################################################
FROM amazonlinux:2023
ARG WAZUH_UID=101
ARG WAZUH_GID=101
ENV USER="wazuh-indexer" \
GROUP="wazuh-indexer" \
NAME="wazuh-indexer" \
INSTALL_DIR="/usr/share/wazuh-indexer"
INSTALL_DIR="/usr/share/wazuh-indexer"
ENV ENGINE_DIR="$INSTALL_DIR/engine"
RUN yum install curl-minimal shadow-utils findutils hostname -y
RUN getent group $GROUP || groupadd -r -g 1000 $GROUP
RUN useradd --system \
--uid 1000 \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid $GROUP \
--shell /sbin/nologin \
--comment "$USER user" \
$USER
WORKDIR $INSTALL_DIR
COPY config/entrypoint.sh /
COPY config/securityadmin.sh /
RUN chmod 700 /entrypoint.sh && chmod 700 /securityadmin.sh && \
mkdir -p /usr/share/wazuh-indexer && \
chown 1000:1000 /usr/share/wazuh-indexer && \
chown 1000:1000 /*.sh
RUN yum install curl-minimal shadow-utils findutils hostname -y && \
yum clean all && \
getent group $GROUP || groupadd -r -g ${WAZUH_GID} $GROUP && \
useradd --system \
--uid ${WAZUH_UID} \
--no-create-home \
--home-dir $INSTALL_DIR \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
--comment "$USER user" \
$USER && \
chmod 700 /entrypoint.sh && chmod 700 /securityadmin.sh && \
mkdir -p $INSTALL_DIR && \
chown ${WAZUH_UID}:${WAZUH_GID} $INSTALL_DIR && \
chown ${WAZUH_UID}:${WAZUH_GID} /*.sh && \
mkdir -p /var/lib/wazuh-indexer && chown ${WAZUH_UID}:${WAZUH_GID} /var/lib/wazuh-indexer && \
mkdir -p $INSTALL_DIR/logs && chown ${WAZUH_UID}:${WAZUH_GID} $INSTALL_DIR/logs && \
mkdir -p /run/wazuh-indexer && chown ${WAZUH_UID}:${WAZUH_GID} /run/wazuh-indexer && \
mkdir -p /var/log/wazuh-indexer && chown ${WAZUH_UID}:${WAZUH_GID} /var/log/wazuh-indexer
COPY --from=builder --chown=1000:1000 /usr/share/wazuh-indexer /usr/share/wazuh-indexer
COPY --from=builder --chown=1000:1000 /etc/wazuh-indexer /usr/share/wazuh-indexer/config
COPY --from=builder --chown=1000:1000 /debian/wazuh-indexer/usr/share/wazuh-indexer /usr/share/wazuh-indexer
COPY --from=builder --chown=0:0 /debian/wazuh-indexer/usr/lib/systemd /usr/lib/systemd
COPY --from=builder --chown=0:0 /debian/wazuh-indexer/usr/lib/sysctl.d /usr/lib/sysctl.d
COPY --from=builder --chown=0:0 /debian/wazuh-indexer/usr/lib/tmpfiles.d /usr/lib/tmpfiles.d
COPY --from=builder $INSTALL_DIR $INSTALL_DIR
RUN mkdir -p /var/lib/wazuh-indexer && chown 1000:1000 /var/lib/wazuh-indexer && \
mkdir -p /usr/share/wazuh-indexer/logs && chown 1000:1000 /usr/share/wazuh-indexer/logs && \
mkdir -p /run/wazuh-indexer && chown 1000:1000 /run/wazuh-indexer && \
mkdir -p /var/log/wazuh-indexer && chown 1000:1000 /var/log/wazuh-indexer && \
chmod 700 /usr/share/wazuh-indexer && \
chmod 700 /usr/share/wazuh-indexer/config && \
chmod 600 /usr/share/wazuh-indexer/config/jvm.options && \
chmod 600 /usr/share/wazuh-indexer/config/opensearch.yml
RUN chmod 700 $INSTALL_DIR && \
chmod 700 $INSTALL_DIR/config && \
chmod 600 $INSTALL_DIR/config/jvm.options && \
chmod 600 $INSTALL_DIR/config/opensearch.yml && \
if [ -d "$ENGINE_DIR" ]; then \
find "$ENGINE_DIR" -type d -exec chmod 750 {} + && \
find "$ENGINE_DIR" -type f -exec chmod 640 {} + && \
{ [ -f "$ENGINE_DIR/run_engine.sh" ] && chmod 750 "$ENGINE_DIR/run_engine.sh" || true; } && \
{ [ -f "$ENGINE_DIR/bin/wazuh-engine" ] && chmod 750 "$ENGINE_DIR/bin/wazuh-engine" || true; } && \
{ [ -d "$ENGINE_DIR/sockets" ] && chmod 777 "$ENGINE_DIR/sockets" || true; }; \
fi
USER wazuh-indexer
WORKDIR $INSTALL_DIR
# Services ports
EXPOSE 9200
ENTRYPOINT ["/entrypoint.sh"]
# Dummy overridable parameter parsed by entrypoint
CMD ["opensearchwrapper"]
CMD ["opensearch"]
@@ -1,12 +0,0 @@
---
_meta:
type: "actiongroups"
config_version: 2
# ISM API permissions group
manage_ism:
reserved: true
hidden: false
allowed_actions:
- "cluster:admin/opendistro/ism/*"
static: false
@@ -1,15 +0,0 @@
## variables
APT_KEY=https://packages-dev.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages-dev.wazuh.com/pre-release/yum/\nprotect=1"
WAZUH_TAG=$(curl --silent https://api.github.com/repos/wazuh/wazuh/git/refs/tags | grep '["]ref["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 11- | grep ^v${WAZUH_VERSION}$)
## check tag to use the correct repository
if [[ -n "${WAZUH_TAG}" ]]; then
APT_KEY=https://packages.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1"
fi
rpm --import "${APT_KEY}"
echo -e "${REPOSITORY}" | tee /etc/yum.repos.d/wazuh.repo
@@ -3,99 +3,23 @@
export DH_OPTIONS
export NAME=wazuh-indexer
export TARGET_DIR=${CURDIR}/debian/${NAME}
# Package build options
export USER=${NAME}
export GROUP=${NAME}
export VERSION=${WAZUH_VERSION}-${WAZUH_TAG_REVISION}
export LOG_DIR=/var/log/${NAME}
export LIB_DIR=/var/lib/${NAME}
export PID_DIR=/run/${NAME}
export INSTALLATION_DIR=/usr/share/${NAME}
export CONFIG_DIR=${INSTALLATION_DIR}/config
export BASE_DIR=${NAME}-*
export INDEXER_FILE=wazuh-indexer-base.tar.xz
export BASE_FILE=wazuh-indexer-base-${VERSION}-linux-x64.tar.xz
export REPO_DIR=/unattended_installer
## Variables
CERT_TOOL=wazuh-certs-tool.sh
PASSWORD_TOOL=wazuh-passwords-tool.sh
PACKAGES_URL=https://packages.wazuh.com/4.14/
PACKAGES_DEV_URL=https://packages-dev.wazuh.com/4.14/
## Check if the cert tool exists in S3 buckets
CERT_TOOL_PACKAGES=$(curl --silent -I $PACKAGES_URL$CERT_TOOL | grep -E "^HTTP" | awk '{print $2}')
CERT_TOOL_PACKAGES_DEV=$(curl --silent -I $PACKAGES_DEV_URL$CERT_TOOL | grep -E "^HTTP" | awk '{print $2}')
## If cert tool exists in some bucket, download it, if not exit 1
if [ "$CERT_TOOL_PACKAGES" = "200" ]; then
curl -o $CERT_TOOL $PACKAGES_URL$CERT_TOOL
echo "Cert tool exists in Packages bucket"
elif [ "$CERT_TOOL_PACKAGES_DEV" = "200" ]; then
curl -o $CERT_TOOL $PACKAGES_DEV_URL$CERT_TOOL
echo "Cert tool exists in Packages-dev bucket"
else
echo "Cert tool does not exist in any bucket"
exit 1
# Modify opensearch.yml config paths
if [ -d "/etc/wazuh-indexer" ]; then
mkdir -p ${CONFIG_DIR}
chown ${USER}:${GROUP} ${CONFIG_DIR}
mkdir -p ${CONFIG_DIR}/certs
chown ${USER}:${GROUP} ${CONFIG_DIR}/certs
mv /etc/wazuh-indexer/* ${CONFIG_DIR}/
rmdir /etc/wazuh-indexer
fi
sed -i "s|/etc/wazuh-indexer|${CONFIG_DIR}|g" ${CONFIG_DIR}/opensearch.yml
sed -i 's/-Djava.security.policy=file:\/\/\/etc\/wazuh-indexer\/opensearch-performance-analyzer\/opensearch_security.policy/-Djava.security.policy=file:\/\/\/usr\/share\/wazuh-indexer\/opensearch-performance-analyzer\/opensearch_security.policy/g' ${CONFIG_DIR}/jvm.options
## Check if the password tool exists in S3 buckets
PASSWORD_TOOL_PACKAGES=$(curl --silent -I $PACKAGES_URL$PASSWORD_TOOL | grep -E "^HTTP" | awk '{print $2}')
PASSWORD_TOOL_PACKAGES_DEV=$(curl --silent -I $PACKAGES_DEV_URL$PASSWORD_TOOL | grep -E "^HTTP" | awk '{print $2}')
## If password tool exists in some bucket, download it, if not exit 1
if [ "$PASSWORD_TOOL_PACKAGES" = "200" ]; then
curl -o $PASSWORD_TOOL $PACKAGES_URL$PASSWORD_TOOL
echo "Password tool exists in Packages bucket"
elif [ "$PASSWORD_TOOL_PACKAGES_DEV" = "200" ]; then
curl -o $PASSWORD_TOOL $PACKAGES_DEV_URL$PASSWORD_TOOL
echo "Password tool exists in Packages-dev bucket"
else
echo "Password tool does not exist in any bucket"
exit 1
fi
chmod 755 $CERT_TOOL && bash /$CERT_TOOL -A
# copy to target
mkdir -p ${TARGET_DIR}${INSTALLATION_DIR}
mkdir -p ${TARGET_DIR}${CONFIG_DIR}
mkdir -p ${TARGET_DIR}${LIB_DIR}
mkdir -p ${TARGET_DIR}${LOG_DIR}
mkdir -p ${TARGET_DIR}/etc/init.d
mkdir -p ${TARGET_DIR}/etc/default
mkdir -p ${TARGET_DIR}/usr/lib/tmpfiles.d
mkdir -p ${TARGET_DIR}/usr/lib/sysctl.d
mkdir -p ${TARGET_DIR}/usr/lib/systemd/system
mkdir -p ${TARGET_DIR}${CONFIG_DIR}/certs
# Copy Wazuh's config files for the security plugin
cp -pr /roles_mapping.yml ${TARGET_DIR}${CONFIG_DIR}/opensearch-security/
cp -pr /roles.yml ${TARGET_DIR}${CONFIG_DIR}/opensearch-security/
cp -pr /action_groups.yml ${TARGET_DIR}${CONFIG_DIR}/opensearch-security/
cp -pr /internal_users.yml ${TARGET_DIR}${CONFIG_DIR}/opensearch-security/
cp -pr /opensearch.yml ${TARGET_DIR}${CONFIG_DIR}
# Copy Wazuh indexer's certificates
cp -pr /wazuh-certificates/demo.indexer.pem ${TARGET_DIR}${CONFIG_DIR}/certs/indexer.pem
cp -pr /wazuh-certificates/demo.indexer-key.pem ${TARGET_DIR}${CONFIG_DIR}/certs/indexer-key.pem
cp -pr /wazuh-certificates/root-ca.key ${TARGET_DIR}${CONFIG_DIR}/certs/root-ca.key
cp -pr /wazuh-certificates/root-ca.pem ${TARGET_DIR}${CONFIG_DIR}/certs/root-ca.pem
cp -pr /wazuh-certificates/admin.pem ${TARGET_DIR}${CONFIG_DIR}/certs/admin.pem
cp -pr /wazuh-certificates/admin-key.pem ${TARGET_DIR}${CONFIG_DIR}/certs/admin-key.pem
# Delete xms and xmx parameters in jvm.options
sed '/-Xms/d' -i /etc/wazuh-indexer/jvm.options
sed '/-Xmx/d' -i /etc/wazuh-indexer/jvm.options
sed -i 's/-Djava.security.policy=file:\/\/\/etc\/wazuh-indexer\/opensearch-performance-analyzer\/opensearch_security.policy/-Djava.security.policy=file:\/\/\/usr\/share\/wazuh-indexer\/opensearch-performance-analyzer\/opensearch_security.policy/g' /etc/wazuh-indexer/jvm.options
chmod -R 500 ${TARGET_DIR}${CONFIG_DIR}/certs
chmod -R 400 ${TARGET_DIR}${CONFIG_DIR}/certs/*
find ${TARGET_DIR} -type d -exec chmod 750 {} \;
find ${TARGET_DIR} -type f -perm 644 -exec chmod 640 {} \;
find ${TARGET_DIR} -type f -perm 664 -exec chmod 660 {} \;
find ${TARGET_DIR} -type f -perm 755 -exec chmod 750 {} \;
find ${TARGET_DIR} -type f -perm 744 -exec chmod 740 {} \;
@@ -1,5 +0,0 @@
nodes:
# Wazuh indexer server nodes
indexer:
- name: demo.indexer
ip: demo.indexer
@@ -1,93 +1,115 @@
#!/usr/bin/env bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
set -e
#!/bin/bash
umask 0002
# Copyright OpenSearch Contributors
# SPDX-License-Identifier: Apache-2.0
export USER=wazuh-indexer
export INSTALLATION_DIR=/usr/share/wazuh-indexer
export OPENSEARCH_PATH_CONF=${INSTALLATION_DIR}/config
export JAVA_HOME=${INSTALLATION_DIR}/jdk
export DISCOVERY=$(grep -oP "(?<=discovery.type: ).*" ${OPENSEARCH_PATH_CONF}/opensearch.yml)
export CACERT=$(grep -oP "(?<=plugins.security.ssl.transport.pemtrustedcas_filepath: ).*" ${OPENSEARCH_PATH_CONF}/opensearch.yml)
export CERT="${OPENSEARCH_PATH_CONF}/certs/admin.pem"
export KEY="${OPENSEARCH_PATH_CONF}/certs/admin-key.pem"
# This script specify the entrypoint startup actions for opensearch
# It will start both opensearch and performance analyzer plugin cli
# If either process failed, the entire docker container will be removed
# in favor of a newly started container
# Export OpenSearch Home
export OPENSEARCH_HOME=/usr/share/wazuh-indexer
export OPENSEARCH_PATH_CONF=$OPENSEARCH_HOME/config
export CONFIG_FILE=${OPENSEARCH_PATH_CONF}/opensearch.yml
export PATH=$OPENSEARCH_HOME/bin:$PATH
# The virtual file /proc/self/cgroup should list the current cgroup
# membership. For each hierarchy, you can follow the cgroup path from
# this file to the cgroup filesystem (usually /sys/fs/cgroup/) and
# introspect the statistics for the cgroup for the given
# hierarchy. Alas, Docker breaks this by mounting the container
# statistics at the root while leaving the cgroup paths as the actual
# paths. Therefore, OpenSearch provides a mechanism to override
# reading the cgroup path from /proc/self/cgroup and instead uses the
# cgroup path defined the JVM system property
# opensearch.cgroups.hierarchy.override. Therefore, we set this value here so
# that cgroup statistics are available for the container this process
# will run in.
export OPENSEARCH_JAVA_OPTS="-Dopensearch.cgroups.hierarchy.override=/ $OPENSEARCH_JAVA_OPTS"
# Start up the opensearch and performance analyzer agent processes.
# When either of them halts, this script exits, or we receive a SIGTERM or SIGINT signal then we want to kill both these processes.
function runOpensearch {
# Files created by OpenSearch should always be group writable too
umask 0002
if [[ "$(id -u)" == "0" ]]; then
echo "Wazuh indexer cannot run as root. Please start your container as another user."
exit 1
fi
# Parse Docker env vars to customize Wazuh indexer / OpenSearch configuration
#
# e.g. Setting the env var cluster.name=testcluster
# will cause Wazuh indexer to be invoked with -Ecluster.name=testcluster
opensearch_opts=()
while IFS='=' read -r envvar_key envvar_value
do
# OpenSearch settings need to have at least two dot separated lowercase
# words, e.g. `cluster.name`, except for `processors` which we handle
# specially
if [[ "$envvar_key" =~ ^[a-z0-9_]+\.[a-z0-9_]+ || "$envvar_key" == "processors" ]]; then
if [[ ! -z $envvar_value ]]; then
opensearch_opt="-E${envvar_key}=${envvar_value}"
opensearch_opts+=("${opensearch_opt}")
fi
fi
done < <(env)
# Start Wazuh Engine
if [ -x "$OPENSEARCH_HOME/engine/run_engine.sh" ]; then
nohup "$OPENSEARCH_HOME/engine/run_engine.sh" > /dev/null 2>&1 &
echo $! > /run/wazuh-indexer/wazuh-engine.pid
fi
# Start opensearch
exec "$@" "${opensearch_opts[@]}"
run_as_other_user_if_needed() {
if [[ "$(id -u)" == "0" ]]; then
# If running as root, drop to specified UID and run command
exec chroot --userspec=1000:0 / "${@}"
else
# Either we are running in Openshift with random uid and are a member of the root group
# or with a custom --user
exec "${@}"
fi
}
# Allow user specify custom CMD, maybe bin/opensearch itself
# for example to directly specify `-E` style parameters for opensearch on k8s
# or simply to run /bin/bash to check the image
if [[ "$1" != "opensearchwrapper" ]]; then
if [[ "$(id -u)" == "0" && $(basename "$1") == "opensearch" ]]; then
# Rewrite CMD args to replace $1 with `opensearch` explicitly,
# Without this, user could specify `opensearch -E x.y=z` but
# `bin/opensearch -E x.y=z` would not work.
set -- "opensearch" "${@:2}"
# Use chroot to switch to UID 1000 / GID 0
exec chroot --userspec=1000:0 / "$@"
else
# User probably wants to run something else, like /bin/bash, with another uid forced (Openshift?)
function configureOpensearch {
# Update opensearch.yml with NODES_DN if set
if [ -n "$NODES_DN" ]; then
CLEAN_NODES_DN=$(echo "$NODES_DN" | sed 's/^["'\'']//; s/["'\'']$//; s/""/"/g')
NODES_DN_YAML=$(echo $CLEAN_NODES_DN | tr ';' '\n' | sed 's/^/- "/; s/$/"/')
awk '
/^plugins\.security\.nodes_dn:/ {in_block=1; print; next}
in_block && /^[^#[:space:]-]/ {in_block=0}
!in_block || /^plugins\.security\.nodes_dn:/ {next}
{print}
' "$CONFIG_FILE" > "${CONFIG_FILE}.tmp"
awk -v repl="$NODES_DN_YAML" '
/^plugins\.security\.nodes_dn:/ {
print "plugins.security.nodes_dn:";
print repl;
skip=1; next
}
skip && /^[^#[:space:]-]/ {skip=0}
!skip
' "${CONFIG_FILE}" > "${CONFIG_FILE}.new"
mv "${CONFIG_FILE}.new" "$CONFIG_FILE"
rm -f "${CONFIG_FILE}.tmp"
fi
}
# Prepend "opensearch" command if no argument was provided or if the first
# argument looks like a flag (i.e. starts with a dash).
configureOpensearch
if [ $# -eq 0 ] || [ "${1:0:1}" = '-' ]; then
set -- opensearch "$@"
fi
if [ "$1" = "opensearch" ]; then
# If the first argument is opensearch, then run the setup script.
runOpensearch "$@"
else
# Otherwise, just exec the command.
exec "$@"
fi
fi
# Allow environment variables to be set by creating a file with the
# contents, and setting an environment variable with the suffix _FILE to
# point to it. This can be used to provide secrets to a container, without
# the values being specified explicitly when running the container.
#
# This is also sourced in opensearch-env, and is only needed here
# as well because we use INDEXER_PASSWORD below. Sourcing this script
# is idempotent.
source /usr/share/wazuh-indexer/bin/opensearch-env-from-file
if [[ -f bin/opensearch-users ]]; then
# Check for the INDEXER_PASSWORD environment variable to set the
# bootstrap password for Security.
#
# This is only required for the first node in a cluster with Security
# enabled, but we have no way of knowing which node we are yet. We'll just
# honor the variable if it's present.
if [[ -n "$INDEXER_PASSWORD" ]]; then
[[ -f /usr/share/wazuh-indexer/opensearch.keystore ]] || (run_as_other_user_if_needed opensearch-keystore create)
if ! (run_as_other_user_if_needed opensearch-keystore has-passwd --silent) ; then
# keystore is unencrypted
if ! (run_as_other_user_if_needed opensearch-keystore list | grep -q '^bootstrap.password$'); then
(run_as_other_user_if_needed echo "$INDEXER_PASSWORD" | opensearch-keystore add -x 'bootstrap.password')
fi
else
# keystore requires password
if ! (run_as_other_user_if_needed echo "$KEYSTORE_PASSWORD" \
| opensearch-keystore list | grep -q '^bootstrap.password$') ; then
COMMANDS="$(printf "%s\n%s" "$KEYSTORE_PASSWORD" "$INDEXER_PASSWORD")"
(run_as_other_user_if_needed echo "$COMMANDS" | opensearch-keystore add -x 'bootstrap.password')
fi
fi
fi
fi
if [[ "$(id -u)" == "0" ]]; then
# If requested and running as root, mutate the ownership of bind-mounts
if [[ -n "$TAKE_FILE_OWNERSHIP" ]]; then
chown -R 1000:0 /usr/share/wazuh-indexer/{data,logs}
fi
fi
#if [[ "$DISCOVERY" == "single-node" ]] && [[ ! -f "/var/lib/wazuh-indexer/.flag" ]]; then
# run securityadmin.sh for single node with CACERT, CERT and KEY parameter
# nohup /securityadmin.sh &
# touch "/var/lib/wazuh-indexer/.flag"
#fi
run_as_other_user_if_needed /usr/share/wazuh-indexer/bin/opensearch <<<"$KEYSTORE_PASSWORD"
fi
@@ -1,74 +0,0 @@
---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
_meta:
type: "internalusers"
config_version: 2
# Define your internal users here
## Demo users
admin:
hash: "$2a$12$VcCDgh2NDk07JGN0rjGbM.Ad41qVR/YFJcgHp0UGns5JDymv..TOG"
reserved: true
backend_roles:
- "admin"
description: "Demo admin user"
kibanaserver:
hash: "$2a$12$4AcgAt3xwOWadA5s5blL6ev39OXDNhmOesEoo33eZtrq2N0YrU3H."
reserved: true
description: "Demo kibanaserver user"
kibanaro:
hash: "$2a$12$JJSXNfTowz7Uu5ttXfeYpeYE0arACvcwlPBStB1F.MI7f0U9Z4DGC"
reserved: false
backend_roles:
- "kibanauser"
- "readall"
attributes:
attribute1: "value1"
attribute2: "value2"
attribute3: "value3"
description: "Demo kibanaro user"
logstash:
hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
reserved: false
backend_roles:
- "logstash"
description: "Demo logstash user"
readall:
hash: "$2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2"
reserved: false
backend_roles:
- "readall"
description: "Demo readall user"
snapshotrestore:
hash: "$2y$12$DpwmetHKwgYnorbgdvORCenv4NAK8cPUg8AI6pxLCuWf/ALc0.v7W"
reserved: false
backend_roles:
- "snapshotrestore"
description: "Demo snapshotrestore user"
wazuh_admin:
hash: "$2y$12$d2awHiOYvZjI88VfsDON.u6buoBol0gYPJEgdG1ArKVE0OMxViFfu"
reserved: true
hidden: false
backend_roles: []
attributes: {}
opendistro_security_roles: []
static: false
wazuh_user:
hash: "$2y$12$BQixeoQdRubZdVf/7sq1suHwiVRnSst1.lPI2M0.GPZms4bq2D9vO"
reserved: true
hidden: false
backend_roles: []
attributes: {}
opendistro_security_roles: []
static: false
@@ -1,34 +0,0 @@
network.host: "0.0.0.0"
node.name: "wazuh.indexer"
cluster.name: "wazuh-cluster"
path.data: /var/lib/wazuh-indexer
path.logs: /var/log/wazuh-indexer
discovery.type: single-node
compatibility.override_main_response_version: true
plugins.security.ssl.http.pemcert_filepath: /usr/share/wazuh-indexer/config/certs/indexer.pem
plugins.security.ssl.http.pemkey_filepath: /usr/share/wazuh-indexer/config/certs/indexer-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /usr/share/wazuh-indexer/config/certs/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /usr/share/wazuh-indexer/config/certs/indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /usr/share/wazuh-indexer/config/certs/indexer-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /usr/share/wazuh-indexer/config/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
plugins.security.ssl.http.enabled_ciphers:
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
plugins.security.ssl.http.enabled_protocols:
- "TLSv1.2"
plugins.security.authcz.admin_dn:
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=demo.indexer,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
- "security_rest_api_access"
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opendistro-notifications-*", ".opendistro-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
@@ -1,171 +0,0 @@
_meta:
type: "roles"
config_version: 2
# Restrict users so they can only view visualization and dashboards on kibana
kibana_read_only:
reserved: true
# The security REST API access role is used to assign specific users access to change the security settings through the REST API.
security_rest_api_access:
reserved: true
# Allows users to view monitors, destinations and alerts
alerting_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/alerting/alerts/get'
- 'cluster:admin/opendistro/alerting/destination/get'
- 'cluster:admin/opendistro/alerting/monitor/get'
- 'cluster:admin/opendistro/alerting/monitor/search'
# Allows users to view and acknowledge alerts
alerting_ack_alerts:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/alerting/alerts/*'
# Allows users to use all alerting functionality
alerting_full_access:
reserved: true
cluster_permissions:
- 'cluster_monitor'
- 'cluster:admin/opendistro/alerting/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices_monitor'
- 'indices:admin/aliases/get'
- 'indices:admin/mappings/get'
# Allow users to read Anomaly Detection detectors and results
anomaly_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/ad/detector/info'
- 'cluster:admin/opendistro/ad/detector/search'
- 'cluster:admin/opendistro/ad/detectors/get'
- 'cluster:admin/opendistro/ad/result/search'
- 'cluster:admin/opendistro/ad/tasks/search'
# Allows users to use all Anomaly Detection functionality
anomaly_full_access:
reserved: true
cluster_permissions:
- 'cluster_monitor'
- 'cluster:admin/opendistro/ad/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices_monitor'
- 'indices:admin/aliases/get'
- 'indices:admin/mappings/get'
# Allows users to read Notebooks
notebooks_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/notebooks/list'
- 'cluster:admin/opendistro/notebooks/get'
# Allows users to all Notebooks functionality
notebooks_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/notebooks/create'
- 'cluster:admin/opendistro/notebooks/update'
- 'cluster:admin/opendistro/notebooks/delete'
- 'cluster:admin/opendistro/notebooks/get'
- 'cluster:admin/opendistro/notebooks/list'
# Allows users to read and download Reports
reports_instances_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to read and download Reports and Report-definitions
reports_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/definition/get'
- 'cluster:admin/opendistro/reports/definition/list'
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to all Reports functionality
reports_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/reports/definition/create'
- 'cluster:admin/opendistro/reports/definition/update'
- 'cluster:admin/opendistro/reports/definition/on_demand'
- 'cluster:admin/opendistro/reports/definition/delete'
- 'cluster:admin/opendistro/reports/definition/get'
- 'cluster:admin/opendistro/reports/definition/list'
- 'cluster:admin/opendistro/reports/instance/list'
- 'cluster:admin/opendistro/reports/instance/get'
- 'cluster:admin/opendistro/reports/menu/download'
# Allows users to use all asynchronous-search functionality
asynchronous_search_full_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/asynchronous_search/*'
index_permissions:
- index_patterns:
- '*'
allowed_actions:
- 'indices:data/read/search*'
# Allows users to read stored asynchronous-search results
asynchronous_search_read_access:
reserved: true
cluster_permissions:
- 'cluster:admin/opendistro/asynchronous_search/get'
wazuh_ui_user:
reserved: true
hidden: false
cluster_permissions: []
index_permissions:
- index_patterns:
- "wazuh-*"
dls: ""
fls: []
masked_fields: []
allowed_actions:
- "read"
tenant_permissions: []
static: false
wazuh_ui_admin:
reserved: true
hidden: false
cluster_permissions: []
index_permissions:
- index_patterns:
- "wazuh-*"
dls: ""
fls: []
masked_fields: []
allowed_actions:
- "read"
- "delete"
- "manage"
- "index"
tenant_permissions: []
static: false
# ISM API permissions role
manage_ism:
reserved: true
hidden: false
cluster_permissions:
- "manage_ism"
static: false
@@ -1,78 +0,0 @@
---
# In this file users, backendroles and hosts can be mapped to Wazuh indexer Security roles.
# Permissions for Wazuh indexer roles are configured in roles.yml
_meta:
type: "rolesmapping"
config_version: 2
# Define your roles mapping here
## Demo roles mapping
all_access:
reserved: false
backend_roles:
- "admin"
description: "Maps admin to all_access"
own_index:
reserved: false
users:
- "*"
description: "Allow full access to an index named like the username"
logstash:
reserved: false
backend_roles:
- "logstash"
kibana_user:
reserved: false
backend_roles:
- "kibanauser"
users:
- "wazuh_user"
- "wazuh_admin"
description: "Maps kibanauser to kibana_user"
readall:
reserved: false
backend_roles:
- "readall"
manage_snapshots:
reserved: false
backend_roles:
- "snapshotrestore"
kibana_server:
reserved: true
users:
- "kibanaserver"
wazuh_ui_admin:
reserved: true
hidden: false
backend_roles: []
hosts: []
users:
- "wazuh_admin"
- "kibanaserver"
and_backend_roles: []
wazuh_ui_user:
reserved: true
hidden: false
backend_roles: []
hosts: []
users:
- "wazuh_user"
and_backend_roles: []
# ISM API permissions role mapping
manage_ism:
reserved: true
hidden: false
users:
- "kibanaserver"
+86 -56
View File
@@ -1,71 +1,101 @@
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
FROM amazonlinux:2023
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
################################################################################
# Build stage 0 (builder):
# Install Wazuh Manager RPM, configure directories, prepare permanent data,
# and download tini (static PID-1 init shim).
################################################################################
FROM amazonlinux:2023 AS builder
ARG WAZUH_VERSION
ARG WAZUH_TAG_REVISION
ARG FILEBEAT_TEMPLATE_BRANCH
ARG FILEBEAT_CHANNEL=filebeat-oss
ARG FILEBEAT_VERSION=7.10.2
ARG FILEBEAT_REVISION=2
ARG WAZUH_FILEBEAT_MODULE
ARG S6_VERSION="v2.2.0.3"
ARG TINI_VERSION="v0.19.0"
ARG TARGETARCH
ARG wazuh_manager_x86_64_rpm
ARG wazuh_manager_aarch64_rpm
ARG WAZUH_UID=101
ARG WAZUH_GID=101
RUN yum install curl-minimal xz gnupg tar gzip openssl findutils procps -y &&\
yum clean all
COPY config/check_repository.sh /
COPY config/filebeat_module.sh /
# Prepare permanent data config needed by permanent_data.sh at build time
COPY config/permanent_data.env config/permanent_data.sh /
RUN chmod 775 /check_repository.sh
RUN source /check_repository.sh
RUN dnf install openssl findutils procps shadow-utils -y && \
dnf clean all && \
getent group wazuh-manager || groupadd -r -g ${WAZUH_GID} wazuh-manager && \
getent passwd wazuh-manager || useradd --system \
--no-create-home \
--home-dir /var/wazuh-manager \
--uid ${WAZUH_UID} \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
wazuh-manager && \
RPM_ARCH="x86_64" && \
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
URL_VAR="wazuh_manager_${RPM_ARCH}_rpm" && \
manager_url="${!URL_VAR}" && \
dnf install curl-minimal xz gnupg tar gzip -y && \
dnf clean all && \
curl -o /wazuh-manager.rpm "${manager_url}" && \
dnf install /wazuh-manager.rpm -y && \
rm -rf /wazuh-manager.rpm && \
dnf clean all && \
# Set up required directories with correct ownership
mkdir -p /var/wazuh-manager/var/multigroups && \
chown root:wazuh-manager /var/wazuh-manager/var/multigroups && \
chmod 770 /var/wazuh-manager/var/multigroups && \
mkdir -p /var/wazuh-manager/etc/certs && \
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/certs && \
chmod 500 /var/wazuh-manager/etc/certs && \
rm -f /var/wazuh-manager/etc/sslmanager.key && \
rm -f /var/wazuh-manager/etc/sslmanager.cert
RUN yum install wazuh-manager-${WAZUH_VERSION}-${WAZUH_TAG_REVISION} -y && \
yum clean all && \
chmod 775 /filebeat_module.sh && \
source /filebeat_module.sh && \
rm /filebeat_module.sh && \
curl --fail --silent -L https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-amd64.tar.gz \
-o /tmp/s6-overlay-amd64.tar.gz && \
tar xzf /tmp/s6-overlay-amd64.tar.gz -C / --exclude="./bin" && \
tar xzf /tmp/s6-overlay-amd64.tar.gz -C /usr ./bin && \
rm /tmp/s6-overlay-amd64.tar.gz && \
rm -f /var/ossec/etc/sslmanager.key && \
rm -f /var/ossec/etc/sslmanager.cert
COPY config/etc/ /etc/
COPY --chown=root:wazuh config/create_user.py /var/ossec/framework/scripts/create_user.py
COPY config/filebeat.yml /etc/filebeat/
RUN chmod go-w /etc/filebeat/filebeat.yml
ADD https://raw.githubusercontent.com/wazuh/wazuh/$FILEBEAT_TEMPLATE_BRANCH/extensions/elasticsearch/7.x/wazuh-template.json /etc/filebeat
RUN chmod go-w /etc/filebeat/wazuh-template.json
# Prepare permanent data
# Sync calls are due to https://github.com/docker/docker/issues/9547
#Make mount directories for keep permissions
RUN mkdir -p /var/ossec/var/multigroups && \
chown root:wazuh /var/ossec/var/multigroups && \
chmod 770 /var/ossec/var/multigroups && \
mkdir -p /var/ossec/agentless && \
chown root:wazuh /var/ossec/agentless && \
chmod 770 /var/ossec/agentless && \
mkdir -p /var/ossec/active-response/bin && \
chown root:wazuh /var/ossec/active-response/bin && \
chmod 770 /var/ossec/active-response/bin && \
chmod 755 /permanent_data.sh && \
# Prepare permanent data snapshot (sync calls: https://github.com/docker/docker/issues/9547)
RUN chmod 755 /permanent_data.sh && \
sync && /permanent_data.sh && \
sync && rm /permanent_data.sh
RUN rm /etc/yum.repos.d/wazuh.repo
# Download tini static binary (no external library dependencies)
RUN curl --fail --silent -L \
https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-${TARGETARCH} \
-o /usr/local/bin/tini && \
chmod +x /usr/local/bin/tini
################################################################################
# Build stage 1 (the actual Wazuh Manager image):
# Copy Wazuh Manager and tini from builder. Install only runtime dependencies.
################################################################################
FROM amazonlinux:2023
ARG WAZUH_UID=101
ARG WAZUH_GID=101
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# Install only runtime dependencies (no curl, tar, gzip, xz, or full dnf stack)
RUN dnf install openssl findutils procps shadow-utils -y && \
dnf clean all && \
getent group wazuh-manager || groupadd -r -g ${WAZUH_GID} wazuh-manager && \
getent passwd wazuh-manager || useradd --system \
--no-create-home \
--home-dir /var/wazuh-manager \
--uid ${WAZUH_UID} \
--gid ${WAZUH_GID} \
--shell /sbin/nologin \
wazuh-manager
# Copy Wazuh Manager installation (includes permanent data snapshot)
COPY --from=builder /var/wazuh-manager /var/wazuh-manager
# Copy tini static binary
COPY --from=builder /usr/local/bin/tini /usr/local/bin/tini
# Copy entrypoint, init scripts and runtime config
COPY config/entrypoint.sh /entrypoint.sh
COPY config/etc/ /etc/
COPY config/permanent_data.env /
RUN chmod 755 /entrypoint.sh
# Services ports
EXPOSE 55000/tcp 1514/tcp 1515/tcp 514/udp 1516/tcp
ENTRYPOINT [ "/init" ]
ENTRYPOINT ["/usr/local/bin/tini", "--", "/entrypoint.sh"]
@@ -1,15 +0,0 @@
## variables
APT_KEY=https://packages-dev.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages-dev.wazuh.com/pre-release/yum/\nprotect=1"
WAZUH_TAG=$(curl --silent https://api.github.com/repos/wazuh/wazuh/git/refs/tags | grep '["]ref["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 11- | grep ^v${WAZUH_VERSION}$)
## check tag to use the correct repository
if [[ -n "${WAZUH_TAG}" ]]; then
APT_KEY=https://packages.wazuh.com/key/GPG-KEY-WAZUH
GPG_SIGN="gpgcheck=1\ngpgkey=${APT_KEY}]"
REPOSITORY="[wazuh]\n${GPG_SIGN}\nenabled=1\nname=EL-\$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1"
fi
rpm --import "${APT_KEY}"
echo -e "${REPOSITORY}" | tee /etc/yum.repos.d/wazuh.repo
@@ -1,102 +0,0 @@
import logging
import sys
import json
import random
import string
import os
# Set framework path
sys.path.append(os.path.dirname(sys.argv[0]) + "/../framework")
USER_FILE_PATH = "/var/ossec/api/configuration/admin.json"
SPECIAL_CHARS = "@$!%*?&-_"
try:
from wazuh.rbac.orm import check_database_integrity
from wazuh.security import (
create_user,
get_users,
get_roles,
set_user_role,
update_user,
)
except ModuleNotFoundError as e:
logging.error("No module 'wazuh' found.")
sys.exit(1)
def read_user_file(path=USER_FILE_PATH):
with open(path) as user_file:
data = json.load(user_file)
return data["username"], data["password"]
def db_users():
users_result = get_users()
return {user["username"]: user["id"] for user in users_result.affected_items}
def db_roles():
roles_result = get_roles()
return {role["name"]: role["id"] for role in roles_result.affected_items}
def disable_user(uid):
random_pass = "".join(
random.choices(
string.ascii_uppercase
+ string.ascii_lowercase
+ string.digits
+ SPECIAL_CHARS,
k=8,
)
)
# assure there must be at least one character from each group
random_pass = random_pass + ''.join([random.choice(chars) for chars in [string.ascii_lowercase, string.digits, string.ascii_uppercase, SPECIAL_CHARS]])
random_pass = ''.join(random.sample(random_pass,len(random_pass)))
update_user(
user_id=[
str(uid),
],
password=random_pass,
)
if __name__ == "__main__":
if not os.path.exists(USER_FILE_PATH):
# abort if no user file detected
sys.exit(0)
username, password = read_user_file()
# create RBAC database
check_database_integrity()
initial_users = db_users()
if username not in initial_users:
# create a new user
create_user(username=username, password=password)
users = db_users()
uid = users[username]
roles = db_roles()
rid = roles["administrator"]
set_user_role(
user_id=[
str(uid),
],
role_ids=[
str(rid),
],
)
else:
# modify an existing user ("wazuh" or "wazuh-wui")
uid = initial_users[username]
update_user(
user_id=[
str(uid),
],
password=password,
)
# disable unused default users
for def_user in ['wazuh', 'wazuh-wui']:
if def_user != username:
disable_user(initial_users[def_user])
@@ -0,0 +1,22 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
# Run initialization and configuration
bash /etc/cont-init.d/0-wazuh-init
# Start Wazuh Manager (may log warnings in environments without certs)
bash /etc/cont-init.d/1-manager
# Tail the main log to stdout so Docker captures it
tail -F /var/wazuh-manager/logs/wazuh-manager.log &
TAIL_PID=$!
# Graceful shutdown: stop Wazuh and exit cleanly on SIGTERM/SIGINT
_stop() {
echo "Stopping Wazuh Manager..."
/var/wazuh-manager/bin/wazuh-manager-control stop 2>/dev/null || true
kill "${TAIL_PID}" 2>/dev/null || true
}
trap _stop SIGTERM SIGINT SIGQUIT
wait "${TAIL_PID}"
@@ -1,10 +1,10 @@
#!/usr/bin/with-contenv bash
#!/bin/bash
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
# Variables
source /permanent_data.env
WAZUH_INSTALL_PATH=/var/ossec
WAZUH_INSTALL_PATH=/var/wazuh-manager
WAZUH_CONFIG_MOUNT=/wazuh-config-mount
##############################################################################
@@ -119,7 +119,7 @@ remove_data_files() {
# Create certificates: Manager
##############################################################################
create_ossec_key_cert() {
create_wazuh_key_cert() {
print "Creating wazuh-authd key and cert"
exec_cmd "openssl genrsa -out ${WAZUH_INSTALL_PATH}/etc/sslmanager.key 4096"
exec_cmd "openssl req -new -x509 -key ${WAZUH_INSTALL_PATH}/etc/sslmanager.key -out ${WAZUH_INSTALL_PATH}/etc/sslmanager.cert -days 3650 -subj /CN=${HOSTNAME}/"
@@ -129,9 +129,9 @@ create_ossec_key_cert() {
# Copy all files from $WAZUH_CONFIG_MOUNT to $WAZUH_INSTALL_PATH and respect
# destination files permissions
#
# For example, to mount the file /var/ossec/data/etc/ossec.conf, mount it at
# $WAZUH_CONFIG_MOUNT/etc/ossec.conf in your container and this code will
# replace the ossec.conf file in /var/ossec/data/etc with yours.
# For example, to mount the file /var/wazuh-manager/data/etc/wazuh-manager.conf, mount it at
# $WAZUH_CONFIG_MOUNT/etc/wazuh-manager.conf in your container and this code will
# replace the wazuh-manager.conf file in /var/wazuh-manager/data/etc with yours.
##############################################################################
mount_files() {
@@ -150,27 +150,92 @@ mount_files() {
# container start.
#
# To use this:
# 1. Create your own ossec.conf file
# 2. In your ossec.conf file, set to_be_replaced_by_hostname as your node_name
# 3. Mount your custom ossec.conf file at $WAZUH_CONFIG_MOUNT/etc/ossec.conf
# 1. Create your own wazuh-manager.conf file
# 2. In your wazuh-manager.conf file, set to_be_replaced_by_hostname as your node_name
# 3. Mount your custom wazuh-manager.conf file at $WAZUH_CONFIG_MOUNT/etc/wazuh-manager.conf
##############################################################################
set_custom_hostname() {
sed -i 's/<node_name>to_be_replaced_by_hostname<\/node_name>/<node_name>'"${HOSTNAME}"'<\/node_name>/g' ${WAZUH_INSTALL_PATH}/etc/ossec.conf
sed -i 's/<node_name>to_be_replaced_by_hostname<\/node_name>/<node_name>'"${HOSTNAME}"'<\/node_name>/g' ${WAZUH_INSTALL_PATH}/etc/wazuh-manager.conf
}
##############################################################################
# Allow users to set the container cluster key dynamically on
# container start.
#
# To use this:
# 1. Create your own ossec.conf file
# 2. In your ossec.conf file, set to_be_replaced_by_cluster_key as your key
# 3. Mount your custom ossec.conf file at $WAZUH_CONFIG_MOUNT/etc/ossec.conf
##############################################################################
function_configure_wazuh_manager_conf() {
WAZUH_MANAGER_CONF="${WAZUH_INSTALL_PATH}/etc/wazuh-manager.conf"
set_custom_cluster_key() {
sed -i 's/<key>to_be_replaced_by_cluster_key<\/key>/<key>'"${WAZUH_CLUSTER_KEY}"'<\/key>/g' ${WAZUH_INSTALL_PATH}/etc/ossec.conf
# --------------------------
# Defaults based on WAZUH_MANAGER_CONF
# --------------------------
if [[ -z "$WAZUH_CLUSTER_KEY" ]]; then
WAZUH_CLUSTER_KEY=$(sed -n '/<cluster>/,/<\/cluster>/s/.*<key>\(.*\)<\/key>.*/\1/p' "$WAZUH_MANAGER_CONF" | head -n1)
fi
# Node type logic
if [[ "$WAZUH_NODE_TYPE" != "worker" ]]; then
WAZUH_NODE_TYPE="master"
fi
# Default node name → HOSTNAME if not defined
WAZUH_NODE_NAME="${WAZUH_NODE_NAME:-$HOSTNAME}"
# --------------------------
# Replace Indexer Hosts
# --------------------------
if [[ -n "$WAZUH_INDEXER_HOSTS" ]]; then
TMP_HOSTS=$(mktemp)
{
echo " <hosts>"
IFS=',' read -ra NODES <<< "$WAZUH_INDEXER_HOSTS"
for NODE in "${NODES[@]}"; do
IP="${NODE%:*}"
PORT="${NODE#*:}"
echo " <host>https://$IP:$PORT</host>"
done
echo " </hosts>"
} > "$TMP_HOSTS";
sed -i -e '/<indexer>/,/<\/indexer>/{ /<hosts>/,/<\/hosts>/{ /<hosts>/r '"$TMP_HOSTS" \
-e 'd }}' "$WAZUH_MANAGER_CONF";
rm -f "$TMP_HOSTS";
fi
# --------------------------
# Cluster: node_name
# --------------------------
sed -i "/<cluster>/,/<\/cluster>/ s|<node_name>.*</node_name>|<node_name>$WAZUH_NODE_NAME</node_name>|" "$WAZUH_MANAGER_CONF"
# --------------------------
# Cluster: node_type
# --------------------------
sed -i "/<cluster>/,/<\/cluster>/ s|<node_type>.*</node_type>|<node_type>$WAZUH_NODE_TYPE</node_type>|" "$WAZUH_MANAGER_CONF"
# --------------------------
# Cluster: key
# --------------------------
sed -i "/<cluster>/,/<\/cluster>/ s|<key>.*</key>|<key>$WAZUH_CLUSTER_KEY</key>|" "$WAZUH_MANAGER_CONF"
# --------------------------
# Cluster: bind_addr
# --------------------------
sed -i "/<cluster>/,/<\/cluster>/ s|<bind_addr>.*</bind_addr>|<bind_addr>$WAZUH_CLUSTER_BIND_ADDR</bind_addr>|" "$WAZUH_MANAGER_CONF"
# --------------------------
# Cluster: nodes list
# --------------------------
if [[ -n "$WAZUH_CLUSTER_NODES" ]]; then
TMP_NODES=$(mktemp)
{
echo " <nodes>"
for N in $WAZUH_CLUSTER_NODES; do
echo " <node>$N</node>"
done
echo " </nodes>"
} > "$TMP_NODES";
sed -i -e '/<cluster>/,/<\/cluster>/{ /<nodes>/,/<\/nodes>/{ /<nodes>/r '"$TMP_NODES" \
-e 'd }}' "$WAZUH_MANAGER_CONF";
rm -f "$TMP_NODES";
fi
echo "Wazuh manager config modified successfully."
}
##############################################################################
@@ -179,18 +244,17 @@ set_custom_cluster_key() {
##############################################################################
configure_permissions() {
chown -R wazuh:wazuh /var/ossec/queue/rids
chown -R wazuh:wazuh /var/ossec/etc/lists
chown -R wazuh-manager:wazuh-manager /var/wazuh-manager/queue/rids
}
##############################################################################
# Change any ossec user/group to wazuh user/group
# Change any legacy user/group to wazuh-manager user/group
##############################################################################
set_correct_permOwner() {
find / -group 997 -exec chown :999 {} +;
find / -group 101 -exec chown :999 {} +;
find / -user 101 -exec chown 999 {} +;
find /var/wazuh-manager/ -group 997 -exec chown :101 {} +;
find /var/wazuh-manager/ -group 999 -exec chown :101 {} +;
find /var/wazuh-manager/ -user 999 -exec chown 101:{} +;
}
##############################################################################
@@ -198,7 +262,7 @@ set_correct_permOwner() {
##############################################################################
main() {
# Mount permanent data (i.e. ossec.conf)
# Mount permanent data (i.e. wazuh-manager.conf)
mount_permanent_data
# Restore files stored in permanent data that are not permanent (i.e. internal_options.conf)
@@ -207,7 +271,7 @@ main() {
# Apply correct permission and ownership
set_correct_permOwner
# Rename files stored in permanent data (i.e. queue/ossec)
# Rename files stored in permanent data (i.e. queue/wazuh-manager)
move_data_files
# Remove some files in permanent_data (i.e. .template.db)
@@ -216,7 +280,7 @@ main() {
# Create wazuh-authd key and cert if not present
if [ ! -e ${WAZUH_INSTALL_PATH}/etc/sslmanager.key ]
then
create_ossec_key_cert
create_wazuh_key_cert
fi
# Mount selected files (WAZUH_CONFIG_MOUNT) to container
@@ -225,9 +289,8 @@ main() {
# Allow setting custom hostname
set_custom_hostname
# Allow setting custom cluster key
set_custom_cluster_key
# Configure wazuh-manager.conf based on environment variables
function_configure_wazuh_manager_conf
# Delete temporary data folder
rm -rf ${WAZUH_INSTALL_PATH}/data_tmp
@@ -1,51 +0,0 @@
#!/usr/bin/with-contenv bash
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
set -e
if [ "$INDEXER_URL" != "" ]; then
>&2 echo "Customize Elasticsearch output IP"
sed -i "s|hosts:.*|hosts: ['$INDEXER_URL']|g" /etc/filebeat/filebeat.yml
fi
# Configure filebeat.yml security settings
if [ "$INDEXER_USERNAME" != "" ]; then
>&2 echo "Configuring username."
sed -i "s|#username:.*|username:|g" /etc/filebeat/filebeat.yml
sed -i "s|username:.*|username: '$INDEXER_USERNAME'|g" /etc/filebeat/filebeat.yml
fi
if [ "$INDEXER_PASSWORD" != "" ]; then
>&2 echo "Configuring password."
sed -i "s|#password:.*|password:|g" /etc/filebeat/filebeat.yml
sed -i "s|password:.*|password: '$INDEXER_PASSWORD'|g" /etc/filebeat/filebeat.yml
fi
if [ "$FILEBEAT_SSL_VERIFICATION_MODE" != "" ]; then
>&2 echo "Configuring SSL verification mode."
sed -i "s|#ssl.verification_mode:.*|ssl.verification_mode:|g" /etc/filebeat/filebeat.yml
sed -i "s|ssl.verification_mode:.*|ssl.verification_mode: '$FILEBEAT_SSL_VERIFICATION_MODE'|g" /etc/filebeat/filebeat.yml
fi
if [ "$SSL_CERTIFICATE_AUTHORITIES" != "" ]; then
>&2 echo "Configuring Certificate Authorities."
sed -i "s|#ssl.certificate_authorities:.*|ssl.certificate_authorities:|g" /etc/filebeat/filebeat.yml
sed -i "s|ssl.certificate_authorities:.*|ssl.certificate_authorities: ['$SSL_CERTIFICATE_AUTHORITIES']|g" /etc/filebeat/filebeat.yml
fi
if [ "$SSL_CERTIFICATE" != "" ]; then
>&2 echo "Configuring SSL Certificate."
sed -i "s|#ssl.certificate:.*|ssl.certificate:|g" /etc/filebeat/filebeat.yml
sed -i "s|ssl.certificate:.*|ssl.certificate: '$SSL_CERTIFICATE'|g" /etc/filebeat/filebeat.yml
fi
if [ "$SSL_KEY" != "" ]; then
>&2 echo "Configuring SSL Key."
sed -i "s|#ssl.key:.*|ssl.key:|g" /etc/filebeat/filebeat.yml
sed -i "s|ssl.key:.*|ssl.key: '$SSL_KEY'|g" /etc/filebeat/filebeat.yml
fi
chmod go-w /etc/filebeat/filebeat.yml || true
chown root: /etc/filebeat/filebeat.yml || true
@@ -0,0 +1,104 @@
#!/bin/bash
##############################################################################
# Migration sequence
# Detect if there is a mounted volume on /wazuh-migration and copy the data
# to /var/wazuh-manager, finally it will create a flag ".migration-completed" inside
# the mounted volume
##############################################################################
function __colortext()
{
echo -e " \e[1;$2m$1\e[0m"
}
function echogreen()
{
echo $(__colortext "$1" "32")
}
function echoyellow()
{
echo $(__colortext "$1" "33")
}
function echored()
{
echo $(__colortext "$1" "31")
}
function_wazuh_migration(){
if [ -d "/wazuh-migration" ]; then
if [ ! -e /wazuh-migration/.migration-completed ]; then
if [ ! -e /wazuh-migration/global.db ]; then
echoyellow "The volume mounted on /wazuh-migration does not contain all the correct files."
return
fi
\cp -f /wazuh-migration/data/etc/wazuh-manager.conf /var/wazuh-manager/etc/wazuh-manager.conf
chown root:wazuh-manager /var/wazuh-manager/etc/wazuh-manager.conf
chmod 640 /var/wazuh-manager/etc/wazuh-manager.conf
\cp -f /wazuh-migration/data/etc/client.keys /var/wazuh-manager/etc/client.keys
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/client.keys
chmod 640 /var/wazuh-manager/etc/client.keys
\cp -f /wazuh-migration/data/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.cert
\cp -f /wazuh-migration/data/etc/sslmanager.key /var/wazuh-manager/etc/sslmanager.key
chown root:root /var/wazuh-manager/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.key
chmod 640 /var/wazuh-manager/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.key
\cp -f /wazuh-migration/data/etc/shared/default/agent.conf /var/wazuh-manager/etc/shared/default/agent.conf
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/shared/default/agent.conf
chmod 660 /var/wazuh-manager/etc/shared/default/agent.conf
\cp -f /wazuh-migration/data/etc/decoders/* /var/wazuh-manager/etc/decoders/
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/decoders/*
chmod 660 /var/wazuh-manager/etc/decoders/*
\cp -f /wazuh-migration/data/etc/rules/* /var/wazuh-manager/etc/rules/
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/rules/*
chmod 660 /var/wazuh-manager/etc/rules/*
\cp -f /wazuh-migration/global.db /var/wazuh-manager/queue/db/global.db
chown wazuh-manager:wazuh-manager /var/wazuh-manager/queue/db/global.db
chmod 640 /var/wazuh-manager/queue/db/global.db
# mark volume as migrated
touch /wazuh-migration/.migration-completed
echogreen "Migration completed succesfully"
else
echoyellow "This volume has already been migrated. You may proceed and remove it from the mount point (/wazuh-migration)"
fi
fi
}
function_entrypoint_scripts() {
# It will run every .sh script located in entrypoint-scripts folder in lexicographical order
if [ -d "/entrypoint-scripts/" ]
then
for script in `ls /entrypoint-scripts/*.sh | sort -n`; do
bash "$script"
done
fi
}
function_configure_vulnerability_detection() {
if [ "$INDEXER_PASSWORD" != "" ]; then
>&2 echo "Configuring password."
echo "$INDEXER_USERNAME" | /var/wazuh-manager/bin/wazuh-manager-keystore -f indexer -k username
echo "$INDEXER_PASSWORD" | /var/wazuh-manager/bin/wazuh-manager-keystore -f indexer -k password
fi
}
# Migrate data from /wazuh-migration volume
function_wazuh_migration
# configure Vulnerabilty detection
function_configure_vulnerability_detection
# run entrypoint scripts
function_entrypoint_scripts
# Start Wazuh
/var/wazuh-manager/bin/wazuh-manager-control start
@@ -1,136 +0,0 @@
#!/usr/bin/with-contenv bash
##############################################################################
# Migration sequence
# Detect if there is a mounted volume on /wazuh-migration and copy the data
# to /var/ossec, finally it will create a flag ".migration-completed" inside
# the mounted volume
##############################################################################
function __colortext()
{
echo -e " \e[1;$2m$1\e[0m"
}
function echogreen()
{
echo $(__colortext "$1" "32")
}
function echoyellow()
{
echo $(__colortext "$1" "33")
}
function echored()
{
echo $(__colortext "$1" "31")
}
function_wazuh_migration(){
if [ -d "/wazuh-migration" ]; then
if [ ! -e /wazuh-migration/.migration-completed ]; then
if [ ! -e /wazuh-migration/global.db ]; then
echoyellow "The volume mounted on /wazuh-migration does not contain all the correct files."
return
fi
\cp -f /wazuh-migration/data/etc/ossec.conf /var/ossec/etc/ossec.conf
chown root:wazuh /var/ossec/etc/ossec.conf
chmod 640 /var/ossec/etc/ossec.conf
\cp -f /wazuh-migration/data/etc/client.keys /var/ossec/etc/client.keys
chown wazuh:wazuh /var/ossec/etc/client.keys
chmod 640 /var/ossec/etc/client.keys
\cp -f /wazuh-migration/data/etc/sslmanager.cert /var/ossec/etc/sslmanager.cert
\cp -f /wazuh-migration/data/etc/sslmanager.key /var/ossec/etc/sslmanager.key
chown root:root /var/ossec/etc/sslmanager.cert /var/ossec/etc/sslmanager.key
chmod 640 /var/ossec/etc/sslmanager.cert /var/ossec/etc/sslmanager.key
\cp -f /wazuh-migration/data/etc/shared/default/agent.conf /var/ossec/etc/shared/default/agent.conf
chown wazuh:wazuh /var/ossec/etc/shared/default/agent.conf
chmod 660 /var/ossec/etc/shared/default/agent.conf
\cp -f /wazuh-migration/data/etc/decoders/* /var/ossec/etc/decoders/
chown wazuh:wazuh /var/ossec/etc/decoders/*
chmod 660 /var/ossec/etc/decoders/*
\cp -f /wazuh-migration/data/etc/rules/* /var/ossec/etc/rules/
chown wazuh:wazuh /var/ossec/etc/rules/*
chmod 660 /var/ossec/etc/rules/*
if [ -e /wazuh-migration/data/agentless/.passlist ]; then
\cp -f /wazuh-migration/data/agentless/.passlist /var/ossec/agentless/.passlist
chown root:wazuh /var/ossec/agentless/.passlist
chmod 640 /var/ossec/agentless/.passlist
fi
\cp -f /wazuh-migration/global.db /var/ossec/queue/db/global.db
chown wazuh:wazuh /var/ossec/queue/db/global.db
chmod 640 /var/ossec/queue/db/global.db
# mark volume as migrated
touch /wazuh-migration/.migration-completed
echogreen "Migration completed succesfully"
else
echoyellow "This volume has already been migrated. You may proceed and remove it from the mount point (/wazuh-migration)"
fi
fi
}
function_create_custom_user() {
if [[ ! -z $API_USERNAME ]] && [[ ! -z $API_PASSWORD ]]; then
cat << EOF > /var/ossec/api/configuration/admin.json
{
"username": "$API_USERNAME",
"password": "$API_PASSWORD"
}
EOF
# create or customize API user
if /var/ossec/framework/python/bin/python3 /var/ossec/framework/scripts/create_user.py; then
# remove json if exit code is 0
rm /var/ossec/api/configuration/admin.json
else
echored "There was an error configuring the API user"
# terminate container to avoid unpredictable behavior
exec s6-svscanctl -t /var/run/s6/services
exit 1
fi
fi
}
function_entrypoint_scripts() {
# It will run every .sh script located in entrypoint-scripts folder in lexicographical order
if [ -d "/entrypoint-scripts/" ]
then
for script in `ls /entrypoint-scripts/*.sh | sort -n`; do
bash "$script"
done
fi
}
function_configure_vulnerability_detection() {
if [ "$INDEXER_PASSWORD" != "" ]; then
>&2 echo "Configuring password."
echo "$INDEXER_USERNAME" | /var/ossec/bin/wazuh-keystore -f indexer -k username
echo "$INDEXER_PASSWORD" | /var/ossec/bin/wazuh-keystore -f indexer -k password
fi
}
# Migrate data from /wazuh-migration volume
function_wazuh_migration
# create API custom user
function_create_custom_user
# configure Vulnerabilty detection
function_configure_vulnerability_detection
# run entrypoint scripts
function_entrypoint_scripts
# Start Wazuh
/var/ossec/bin/wazuh-control start
@@ -1,6 +0,0 @@
#!/usr/bin/env sh
echo >&2 "Filebeat exited. code=${1}"
# terminate other services to exit from the container
exec s6-svscanctl -t /var/run/s6/services
@@ -1,4 +0,0 @@
#!/usr/bin/with-contenv sh
echo >&2 "starting Filebeat"
exec /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat
@@ -1,4 +0,0 @@
#!/usr/bin/with-contenv sh
# dumping ossec.log to standard output
exec tail -F /var/ossec/logs/ossec.log
@@ -0,0 +1,4 @@
#!/bin/sh
# dumping wazuh-manager.log to standard output
exec tail -F /var/wazuh-manager/logs/wazuh-manager.log
@@ -1,31 +0,0 @@
# Wazuh - Filebeat configuration file
filebeat.modules:
- module: wazuh
alerts:
enabled: true
archives:
enabled: false
setup.template.json.enabled: true
setup.template.overwrite: true
setup.template.json.path: '/etc/filebeat/wazuh-template.json'
setup.template.json.name: 'wazuh'
setup.ilm.enabled: false
output.elasticsearch:
hosts: ['https://wazuh.indexer:9200']
#username:
#password:
#ssl.verification_mode:
#ssl.certificate_authorities:
#ssl.certificate:
#ssl.key:
logging.metrics.enabled: false
seccomp:
default_action: allow
syscalls:
- action: allow
names:
- rseq
@@ -1,11 +0,0 @@
## variables
REPOSITORY="packages-dev.wazuh.com/pre-release"
WAZUH_TAG=$(curl --silent https://api.github.com/repos/wazuh/wazuh/git/refs/tags | grep '["]ref["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 11- | grep ^v${WAZUH_VERSION}$)
## check tag to use the correct repository
if [[ -n "${WAZUH_TAG}" ]]; then
REPOSITORY="packages.wazuh.com/4.x"
fi
yum install filebeat-${FILEBEAT_VERSION}-${FILEBEAT_REVISION} -y && \
curl -s https://${REPOSITORY}/filebeat/${WAZUH_FILEBEAT_MODULE} | tar -xvz -C /usr/share/filebeat/module
@@ -1,115 +1,25 @@
# Permanent data mounted in volumes
i=0
PERMANENT_DATA[((i++))]="/var/ossec/api/configuration"
PERMANENT_DATA[((i++))]="/var/ossec/etc"
PERMANENT_DATA[((i++))]="/var/ossec/logs"
PERMANENT_DATA[((i++))]="/var/ossec/queue"
PERMANENT_DATA[((i++))]="/var/ossec/agentless"
PERMANENT_DATA[((i++))]="/var/ossec/var/multigroups"
PERMANENT_DATA[((i++))]="/var/ossec/integrations"
PERMANENT_DATA[((i++))]="/var/ossec/active-response/bin"
PERMANENT_DATA[((i++))]="/var/ossec/wodles"
PERMANENT_DATA[((i++))]="/etc/filebeat"
PERMANENT_DATA[((i++))]="/var/wazuh-manager/api/configuration"
PERMANENT_DATA[((i++))]="/var/wazuh-manager/etc"
PERMANENT_DATA[((i++))]="/var/wazuh-manager/logs"
PERMANENT_DATA[((i++))]="/var/wazuh-manager/queue"
PERMANENT_DATA[((i++))]="/var/wazuh-manager/var/multigroups"
export PERMANENT_DATA
# Files mounted in a volume that should not be permanent
i=0
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/etc/internal_options.conf"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/slack"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/slack.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/virustotal"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/virustotal.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/shuffle"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/shuffle.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/pagerduty"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/pagerduty.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/maltiverse"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/integrations/maltiverse.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/default-firewall-drop"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/disable-account"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/firewalld-drop"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/firewall-drop"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/host-deny"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/ip-customblock"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/ipfw"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/kaspersky.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/kaspersky"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/npf"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/wazuh-slack"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/pf"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/restart-wazuh"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/restart.sh"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/active-response/bin/route-null"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/sshlogin.exp"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_pixconfig_diff"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_asa-fwsmconfig_diff"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_integrity_check_bsd"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/main.exp"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/su.exp"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_integrity_check_linux"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/register_host.sh"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_generic_diff"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_foundry_diff"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh_nopass.exp"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/agentless/ssh.exp"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/utils.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/aws-s3"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/aws-s3.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/aws_tools.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/wazuh_integration.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/aws_bucket.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/cloudtrail.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/config.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/guardduty.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/load_balancers.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/server_access.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/umbrella.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/vpcflow.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/buckets_s3/waf.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/services/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/services/aws_service.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/services/cloudwatchlogs.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/services/inspector.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/subscribers/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/subscribers/s3_log_handler.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/subscribers/sqs_message_processor.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/aws/subscribers/sqs_queue.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure-logs"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure-logs.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/db/orm.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/db/utils.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/db/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure_utils.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure_services/__init__.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure_services/analytics.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure_services/graph.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/azure/azure_services/storage.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/docker/DockerListener"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/docker/DockerListener.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/gcloud"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/gcloud.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/integration.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/tools.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/exceptions.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/buckets/bucket.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/buckets/access_logs.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/wodles/gcloud/pubsub/subscriber.py"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/etc/lists/malicious-ioc/malicious-ip"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/etc/lists/malicious-ioc/malicious-domains"
PERMANENT_DATA_EXCP[((i++))]="/var/ossec/etc/lists/malicious-ioc/malware-hashes"
PERMANENT_DATA_EXCP[((i++))]="/etc/filebeat/wazuh-template.json"
PERMANENT_DATA_EXCP[((i++))]="/etc/filebeat/filebeat.yml"
PERMANENT_DATA_EXCP[((i++))]="/var/wazuh-manager/etc/internal_options.conf"
export PERMANENT_DATA_EXCP
# Files mounted in a volume that should be deleted
i=0
PERMANENT_DATA_DEL[((i++))]="/var/ossec/queue/db/.template.db"
PERMANENT_DATA_DEL[((i++))]="/var/wazuh-manager/queue/db/.template.db"
export PERMANENT_DATA_DEL
i=0
PERMANENT_DATA_MOVE[((i++))]="/var/ossec/logs/ossec /var/ossec/logs/wazuh"
PERMANENT_DATA_MOVE[((i++))]="/var/ossec/queue/ossec /var/ossec/queue/sockets"
PERMANENT_DATA_MOVE[((i++))]="/var/wazuh-manager/logs/ossec /var/wazuh-manager/logs/wazuh"
PERMANENT_DATA_MOVE[((i++))]="/var/wazuh-manager/queue/ossec /var/wazuh-manager/queue/sockets"
export PERMANENT_DATA_MOVE
@@ -4,7 +4,7 @@
# Variables
source /permanent_data.env
WAZUH_INSTALL_PATH=/var/ossec
WAZUH_INSTALL_PATH=/var/wazuh-manager
DATA_TMP_PATH=${WAZUH_INSTALL_PATH}/data_tmp
mkdir ${DATA_TMP_PATH}
+115
View File
@@ -0,0 +1,115 @@
# Documentation installation and setup
This guide covers how to set up the documentation build environment for the Wazuh Docker documentation.
## Prerequisites
The documentation is built using [mdBook](https://rust-lang.github.io/mdBook/), a command-line tool for creating books
with Markdown, along with [mdBook Mermaid](https://github.com/badboy/mdbook-mermaid) for diagram support.
## Required versions
- **mdbook**: 0.5.2
- **mdbook-mermaid**: 0.17.0
## Installation
Install tools:
```bash
cargo install mdbook --version 0.5.2
cargo install mdbook-mermaid --version 0.17.0
```
Verify installation:
```bash
mdbook --version
mdbook-mermaid --version
```
## Building the documentation
Once you have installed mdBook and mdBook Mermaid:
```bash
# Navigate to the docs directory
cd docs
# Build the documentation (generates html in docs/book/)
mdbook build
# Serve locally with live reload (recommended for development)
mdbook serve --open
```
The documentation will be available at `http://localhost:3000` when using `mdbook serve`.
## Development workflow
When editing documentation:
1. Run `mdbook serve --open` from the `docs/` directory
2. Edit markdown files in `docs/ref/`
3. Changes are automatically reflected in the browser
4. Navigation structure is defined in `docs/SUMMARY.md`
## Troubleshooting
### Version mismatch errors
If you encounter build errors, verify you have the correct versions installed:
```bash
mdbook --version
mdbook-mermaid --version
```
If you have different versions, uninstall the current ones and reinstall by following the [Installation section](#installation):
```bash
cargo uninstall mdbook
cargo uninstall mdbook-mermaid
```
### Cargo install fails with feature 'edition2024' is required
You may see an error like:
```sh
failed to download `globset v0.4.18`
failed to parse manifest ... feature `edition2024` is required
The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo.
```
This can happen when installing `mdbook` version 0.5.2 because one of its transitive dependencies has been updated to
use Rust edition 2024, which is only supported on nightly Rust toolchains.
To fix it, install the required `mdbook` version (0.5.2) using nightly Rust:
```sh
rustup install nightly
rustup run nightly cargo install mdbook --version 0.5.2
```
### Mermaid diagrams not rendering
If Mermaid diagrams are not rendering in the browser:
1. Clear your browser cache
2. Run `mdbook clean` to remove the build directory
3. Run `mdbook serve --open` again
### Port already in use
If port 3000 is already in use, specify a different port:
```bash
mdbook serve --port 3001 --open
```
## Additional resources
- [mdBook documentation](https://rust-lang.github.io/mdBook/)
- [mdBook Mermaid documentation](https://github.com/badboy/mdbook-mermaid)
- [Mermaid diagram syntax](https://mermaid.js.org/)
+5 -23
View File
@@ -7,7 +7,7 @@
In this repository you will find the containers to run:
* Wazuh manager: it runs the Wazuh manager, Wazuh API and Filebeat OSS
* Wazuh manager: it runs the Wazuh manager, and Wazuh API
* Wazuh dashboard: provides a web user interface to browse through alert data and allows you to visualize the agents configuration and status.
* Wazuh indexer: Wazuh indexer container (working as a single-node cluster or as a multi-node cluster). **Be aware to increase the `vm.max_map_count` setting, as it's detailed in the [Wazuh documentation](https://documentation.wazuh.com/current/docker/wazuh-container.html#increase-max-map-count-on-your-host-linux).**
* Wazuh agent: This container contains the Wazuh agent services. Current functionality is limited.
@@ -28,7 +28,7 @@ The folder `wazuh-agent` contains a README explaining how to run a container wit
├── build-docker-images
│   ├── build-images.sh
│   ├── build-images.yml
│   ├── docker-bake.hcl
│   ├── README.md
│   ├── wazuh-agent
│   │   ├── config
@@ -43,43 +43,25 @@ The folder `wazuh-agent` contains a README explaining how to run a container wit
│   │   └── Dockerfile
│   ├── wazuh-dashboard
│   │   ├── config
│   │   │   ├── check_repository.sh
│   │   │   ├── config.sh
│   │   │   ├── config.yml
│   │   │   ├── entrypoint.sh
│   │   │   ├── wazuh_app_config.sh
│   │   │   └── wazuh.yml
│   │   │   ├── wazuh_dashboard_config.sh
│   │   └── Dockerfile
│   ├── wazuh-indexer
│   │   ├── config
│   │   │   ├── action_groups.yml
│   │   │   ├── check_repository.sh
│   │   │   ├── config.sh
│   │   │   ├── config.yml
│   │   │   ├── entrypoint.sh
│   │   │   ├── internal_users.yml
│   │   │   ├── opensearch.yml
│   │   │   ├── roles_mapping.yml
│   │   │   ├── roles.yml
│   │   │   └── securityadmin.sh
│   │   └── Dockerfile
│   └── wazuh-manager
│   ├── config
│   │   ├── check_repository.sh
│   │   ├── create_user.py
│   │   ├── etc
│   │   │   ├── cont-init.d
│   │   │   │   ├── 0-wazuh-init
│   │   │   │   ├── 1-config-filebeat
│   │   │   │   └── 2-manager
│   │   │   └── services.d
│   │   │   ── filebeat
│   │   │   │   ├── finish
│   │   │   │   └── run
│   │   │   └── ossec-logs
│   │   │   ── wazuh-manager-logs
│   │   │   └── run
│   │   ├── filebeat_module.sh
│   │   ├── filebeat.yml
│   │   ├── permanent_data.env
│   │   └── permanent_data.sh
│   └── Dockerfile
@@ -107,7 +89,7 @@ The folder `wazuh-agent` contains a README explaining how to run a container wit
│   │   │   ├── README.md
│   │   │   └── requirements.md
│   │   ├── glossary.md
│   │   ├── Introduction
│   │   ├── introduction
│   │   │   ├── compatibility.md
│   │   │   ├── description.md
│   │   │   └── README.md
+15 -3
View File
@@ -8,11 +8,13 @@
- [Setup Environment](dev/setup.md)
- [Build Image](dev/build-image.md)
- [Run Tests](dev/run-tests.md)
- [Workflow Usage](dev/workflow-usage.md)
# Reference Manual
- [Introduction](ref/Introduction/introduction.md)
- [Description](ref/Introduction/description.md)
- [Introduction](ref/introduction/introduction.md)
- [Description](ref/introduction/description.md)
- [Compatibility](ref/introduction/compatibility.md)
- [Getting Started](ref/getting-started/getting-started.md)
- [Requirements](ref/getting-started/requirements.md)
- [Deployment](ref/getting-started/deployment/deployment.md)
@@ -23,4 +25,14 @@
- [Environment Variabless](ref/configuration/environment-variables.md)
- [Configuration files](ref/configuration/configuration-files.md)
- [Upgrade](ref/upgrade.md)
- [Glossary](ref/glossary.md)
- [Uninstall](ref/uninstall.md)
- [Backup and restore](ref/backup-and-restore.md)
- [Security](ref/security.md)
- [Performance](ref/performance.md)
- [Glossary](ref/glossary.md)
---
# Integration Tests
- [Docker Integration Tests](ref/integration_test/docker_integration_tests.md)
+29 -5
View File
@@ -1,7 +1,31 @@
[book]
title = "Wazuh Docker Documentation"
description = "Technical documentation for Wazuh Docker deployment."
authors = ["Victor Erenu"]
multilingual = false
title = "Wazuh Docker documentation"
authors = ["Wazuh XDRSIEM DevOps Team"]
description = "The technical documentation for the Wazuh Docker deployment."
language = "en"
src = "."
language = "en"
[build]
build-dir = "book"
create-missing = false
[preprocessor.mermaid]
command = "mdbook-mermaid"
[output.html]
default-theme = "light"
preferred-dark-theme = "navy"
git-repository-url = "https://github.com/wazuh/wazuh-docker"
additional-js = ["mermaid.min.js", "mermaid-init.js"]
[output.html.fold]
enable = true
level = 0
[output.html.search]
enable = true
[output.html.playground]
editable = false
copyable = true
+25 -18
View File
@@ -1,32 +1,39 @@
# Wazuh Docker Image Builder
The creation of the images for the Wazuh stack deployment in Docker is done with the build-images.yml script
To execute the process, the following must be executed in the root of the wazuh-docker repository:
```
$ build-docker-images/build-images.sh
```
The creation of the images for the Wazuh stack deployment in Docker is done with the `build-docker-images/build-images.sh` script
This script initializes the environment variables needed to build each of the images.
The script allows you to build images from other versions of Wazuh, to do this you must use the -v or --version argument:
To execute it, make sure to be in the `build-docker-images` directory:
```
$ build-docker-images/build-images.sh -v 4.14.2
```bash
cd build-docker-images
```
To get all the available script options use the -h or --help option:
Then execute:
```bash
./build-images.sh
```
$ build-docker-images/build-images.sh -h
Usage: build-docker-images/build-images.sh [OPTIONS]
The script also allows to build images from other versions of Wazuh by using the `-v` or `--version` argument:
-d, --dev <ref> [Optional] Set the development stage you want to build, example rc4 or beta1, not used by default.
-f, --filebeat-module <ref> [Optional] Set Filebeat module version. By default 0.5.
-r, --revision <rev> [Optional] Package revision. By default 1
-v, --version <ver> [Optional] Set the Wazuh version should be builded. By default, 4.14.2.
```bash
./build-images.sh -v 5.0.0
```
To get all the available script options use the `-h` or `--help` option:
```bash
./build-images.sh -h
Usage: build-images.sh [OPTIONS]
-d, --dev <ref> [Optional] Set the development stage you want to build, example rc2 or beta1, not used by default.
-refs, --references <ref> [Optional] Set each Wazuh component reference to be build (indexer, manager, dasboard and agent). By default, using the latest release: ['latest', 'latest', 'latest', 'latest']
-rg, --registry <reg> [Optional] Set the Docker registry to push the images.
-v, --version <ver> [Optional] Set the Wazuh version should be builded. By default, 5.0.0.
-m, --multiarch [Optional] Enable multi-architecture builds.
-h, --help Show this help.
```
```
+1 -1
View File
@@ -1,6 +1,6 @@
# Development Guide - Introduction
Welcome to the Development Guide for Wazuh-docker version 4.14.2. This guide is intended for developers, contributors, and advanced users who wish to understand the development aspects of the Wazuh-Docker project, build custom Docker images, or contribute to its development.
Welcome to the Development Guide for Wazuh-docker version 5.0.0 This guide is intended for developers, contributors, and advanced users who wish to understand the development aspects of the Wazuh-Docker project, build custom Docker images, or contribute to its development.
## Purpose of This Guide
+2
View File
@@ -2,6 +2,8 @@
This repository includes automated tests designed to validate the correct deployment of Wazuh using Docker. These tests are executed on every pull request (PR) to ensure the integrity and stability of the system when changes are introduced.
Check more information on the [Workflow usage](workflow-usage.md) page.
## Purpose
The main objective of the tests is to verify that the Wazuh Docker environment can be successfully deployed and that all its core components (Wazuh Manager, Indexer, Dashboard, and Agents) operate as expected after any modification in the codebase.
+3 -3
View File
@@ -1,6 +1,6 @@
# Development Guide - Setup Environment
This section outlines the steps required to set up your local development environment for working with the Wazuh-Docker project (version 4.14.2). A proper setup is crucial for building images, running tests, and contributing effectively.
This section outlines the steps required to set up your local development environment for working with the Wazuh-Docker project (version 5.0.0). A proper setup is crucial for building images, running tests, and contributing effectively.
## Prerequisites
@@ -26,12 +26,12 @@ Before you begin, ensure your system meets the following requirements:
Follow these steps to prepare your development environment:
1. **Clone the Repository**:
Clone the `wazuh-docker` repository from GitHub. It's important to check out the specific branch you intend to work with, in this case, `4.14.2`.
Clone the `wazuh-docker` repository from GitHub. It's important to check out the specific branch you intend to work with, in this case, `5.0.0`.
```bash
git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git)
cd wazuh-docker
git checkout v4.14.2
git checkout v5.0.0
```
2. **Verify Docker Installation**:
+60
View File
@@ -0,0 +1,60 @@
# Workflow usage
The Procedure_push_docker_images.yml workflow builds and pushes multi-architecture Docker images (amd64/arm64) of Wazuh core components (Indexer, Manager, Dashboard, and Agent) to container registries.
## Input Parameters
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `image_tag` | Docker image version tag | `5.0.0` | Yes |
| `docker_reference` | Branch/tag to build from | - | Yes |
| `reference` | Dev reference (for pre-release builds) | `latest` | No |
| `id` | Workflow run identifier | - | No |
| `dev` | Enable development mode (adds `-dev` suffix) | `false`/`true` | No |
## Development vs Production Mode
**Development Mode** (`dev: true`):
- Pushes to AWS ECR (Elastic Container Registry)
- Uses pre-signed S3 URLs for packages
- Generates dynamic `artifact_urls.yaml` from S3 bucket
- Adds development reference to image tags
- Authenticates via AWS IAM role
**Production Mode** (`dev: false`):
- Pushes to Docker Hub
- Uses public package repositories
- Authenticates with Docker Hub credentials
- Supports version stages (rc, beta, etc.)
## Build Process
1. **Artifact Resolution**:
- Dev mode: Creates pre-signed URLs for all Wazuh packages from S3
- Prod mode: Uses packages from public repositories
2. **Multi-architecture Build**:
- Uses Docker Buildx with QEMU for cross-platform builds
- Builds for `linux/amd64` and `linux/arm64`
- Leverages `docker-bake.hcl` for parallel multi-arch build configuration
3. **Image Publishing**:
- Tags images appropriately based on mode
- Pushes to the configured registry
- Generates .env file with build metadata
## Log Collection Feature
When tests fail, the workflows automatically collect and display relevant logs to help diagnose issues quickly.
This is implemented via two scripts, executed depending on the test setup:
Single-node: `single-node-log-check.sh`
Multi-node: `multi-node-log-check.sh`
Capabilities include:
- Collects ERROR, WARNING, and CRITICAL messages from all nodes.
- Automatically gathers logs on test failures for faster debugging.
+35
View File
@@ -0,0 +1,35 @@
(() => {
const darkThemes = ['ayu', 'navy', 'coal'];
const lightThemes = ['light', 'rust'];
const classList = document.getElementsByTagName('html')[0].classList;
let lastThemeWasLight = true;
for (const cssClass of classList) {
if (darkThemes.includes(cssClass)) {
lastThemeWasLight = false;
break;
}
}
const theme = lastThemeWasLight ? 'default' : 'dark';
mermaid.initialize({ startOnLoad: true, theme });
// Simplest way to make mermaid re-render the diagrams in the new theme is via refreshing the page
for (const darkTheme of darkThemes) {
document.getElementById(darkTheme).addEventListener('click', () => {
if (lastThemeWasLight) {
window.location.reload();
}
});
}
for (const lightTheme of lightThemes) {
document.getElementById(lightTheme).addEventListener('click', () => {
if (!lastThemeWasLight) {
window.location.reload();
}
});
}
})();
+2609
View File
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
# Backup and restore
For backup and restore, refer to the documentation for each component:
- [Wazuh manager](https://github.com/wazuh/wazuh/blob/v5.0.0/docs/ref/backup-restore.md)
- [Wazuh agent](https://github.com/wazuh/wazuh-agent/blob/v5.0.0/docs/ref/backup-restore.md)
+18 -3
View File
@@ -2,8 +2,8 @@
### 1. Wazuh Manager Configuration
* **`ossec.conf`**: The main configuration file for the Wazuh manager. It controls rules, decoders, agent enrollment, active responses, integrations, clustering, and more.
* **Customization**: Mount a custom `ossec.conf` or specific configuration snippets (e.g., local rules in `local_rules.xml`) into the manager container at `/wazuh-mount-point/`, which will be copied to the path `/var/ossec` (e.g., the file `/var/ossec/etc/ossec.conf` must be mounted at `/wazuh-mount-point/etc/ossec.conf`) .
* **`wazuh-manager.conf`**: The main configuration file for the Wazuh manager. It controls rules, decoders, agent enrollment, active responses, clustering, and more.
* **Customization**: Mount a custom `wazuh-manager.conf` or specific configuration snippets (e.g., local rules in `local_rules.xml`) into the manager container at `/wazuh-mount-point/`, which will be copied to the path `/var/wazuh-manager` (e.g., the file `/var/wazuh-manager/etc/wazuh-manager.conf` must be mounted at `/wazuh-mount-point/etc/wazuh-manager.conf`) .
### 2. Wazuh Indexer Configuration
@@ -28,5 +28,20 @@
docker compose up -d
```
Consult the official Wazuh documentation for version 5.0.0 for detailed information on all possible configuration parameters for each component.
Consult the official Wazuh documentation for version 4.14.2 for detailed information on all possible configuration parameters for each component.
## Persistence configuration
When customizing your Wazuh Docker deployment, certain files and directories must be persisted to retain your changes across container restarts and recreations. This is critical for maintaining custom configurations, user credentials, and security settings.
### Volumes and Bind Mounts
Docker volumes allow you to persist data outside of container lifecycles. When a container is removed or recreated, data stored in volumes remains intact. This is essential for maintaining configuration files, user data, and other persistent state. While, bind mounts allow you to mount a file or directory from the host into the container.
To persist files or directories in your Wazuh deployment, you can mount them as volumes or bind mounts in your `docker-compose.yml` file.
> **Important**: Ensure that files exist on the host before starting the containers. If the file doesn't exist, Docker will create a directory instead, which may cause startup failures.
For more information on Docker volumes and bind mounts, refer to the official Docker documentation:
- [Use volumes](https://docs.docker.com/storage/volumes/)
- [Bind mounts](https://docs.docker.com/storage/bind-mounts/)
+2 -2
View File
@@ -1,6 +1,6 @@
# Reference Manual - Configuration
This section details how to configure your Wazuh-Docker deployment (version 4.14.2). Proper configuration is key to tailoring the Wazuh stack to your specific needs, managing data persistence, and integrating with your environment.
This section details how to configure your Wazuh-Docker deployment (version 5.0.0). Proper configuration is key to tailoring the Wazuh stack to your specific needs, managing data persistence, and integrating with your environment.
## Overview of Configuration Methods
@@ -11,7 +11,7 @@ Configuring Wazuh components within a Docker environment typically involves seve
* These are often used for setting up initial passwords, component versions, cluster names, or basic operational parameters.
2. **[Configuration Files](configuration-files.md)**:
* Core Wazuh components (manager, indexer, dashboard) rely on their traditional configuration files (e.g., `ossec.conf`, `opensearch.yml`, `opensearch_dashboards.yml`).
* Core Wazuh components (manager, indexer, dashboard) rely on their traditional configuration files (e.g., `wazuh-manager.conf`, `opensearch.yml`, `opensearch_dashboards.yml`).
* To customize these, you typically mount your custom configuration files into the containers, replacing or supplementing the defaults. This is managed using Docker volumes in your `docker-compose.yml`.
3. **Docker Compose File (`docker-compose.yml`)**:
@@ -4,11 +4,14 @@ This document outlines the environment variables applicable to the Wazuh Docker
## Table of Contents
- [Wazuh Manager](#wazuh-manager)
- [Wazuh Indexer](#wazuh-indexer)
- [Wazuh Dashboard](#wazuh-dashboard)
- [Wazuh Agent](#wazuh-agent)
- [Overriding Configuration Files with Environment Variables](#overriding-configuration-files-with-environment-variables)
- [Environment Variables in Wazuh Docker Deployment](#environment-variables-in-wazuh-docker-deployment)
- [Table of Contents](#table-of-contents)
- [Wazuh Manager](#wazuh-manager)
- [Wazuh Indexer](#wazuh-indexer)
- [Wazuh Dashboard](#wazuh-dashboard)
- [Wazuh Agent](#wazuh-agent)
- [Overriding Configuration Files with Environment Variables](#overriding-configuration-files-with-environment-variables)
- [Examples:](#examples)
---
@@ -23,8 +26,6 @@ environment:
- WAZUH_API_URL=https://wazuh.manager
- DASHBOARD_USERNAME=kibanaserver
- DASHBOARD_PASSWORD=kibanaserver
- API_USERNAME=wazuh-wui
- API_PASSWORD=MyS3cr37P450r.*-
```
**Variable Descriptions:**
@@ -32,7 +33,6 @@ environment:
- `INDEXER_USERNAME` / `INDEXER_PASSWORD`: Credentials for accessing the Wazuh Indexer with `admin` user or a user with the same permissions.
- `WAZUH_API_URL`: URL of the Wazuh API, used by other services for communication.
- `DASHBOARD_USERNAME` / `DASHBOARD_PASSWORD`: Credentials for the Wazuh Dashboard to authenticate with the Indexer.
- `API_USERNAME` / `API_PASSWORD`: Credentials for the Wazuh API user, utilized by the Dashboard for API interactions.
---
@@ -62,8 +62,6 @@ environment:
- WAZUH_API_URL=https://wazuh.manager
- DASHBOARD_USERNAME=kibanaserver
- DASHBOARD_PASSWORD=kibanaserver
- API_USERNAME=wazuh-wui
- API_PASSWORD=MyS3cr37P450r.*-
```
**Variable Descriptions:**
@@ -84,14 +82,11 @@ The Wazuh Agent container uses the following environment variables to dynamicall
```yaml
environment:
- WAZUH_MANAGER_SERVER=wazuh.manager
- WAZUH_MANAGER_PORT=1514
- WAZUH_REGISTRATION_SERVER=wazuh.manager
- WAZUH_REGISTRATION_PORT=1515
- WAZUH_AGENT_NAME=my-agent
- WAZUH_REGISTRATION_PASSWORD=StrongPassword
```
These variables are used by the `set_manager_conn()` function in the entrypoint script to replace placeholder values in `ossec.conf` and set the enrollment password.
These variables are used by the `set_manager_conn()` function in the entrypoint script to replace placeholder values in `ossec.conf`.
---
@@ -1,6 +1,6 @@
# Reference Manual - Deployment
This section provides detailed instructions for deploying Wazuh-Docker (version 4.14.2) in various configurations. Choose the deployment model that best suits your needs, from simple single-node setups for testing to more robust multi-node configurations for production environments.
This section provides detailed instructions for deploying Wazuh-Docker (version 5.0.0) in various configurations. Choose the deployment model that best suits your needs, from simple single-node setups for testing to more robust multi-node configurations for production environments.
## Overview of Deployment Options
@@ -22,13 +22,13 @@ Wazuh-Docker offers flexibility in how you can deploy the Wazuh stack. The prima
Ensure you have:
- Met all the [System Requirements](ref/getting-started/requirements.md).
- Met all the [System Requirements](../requirements.md).
- Installed Docker and Docker Compose on your host(s).
- Cloned the `wazuh-docker` repository (version `4.14.2`) or downloaded the necessary deployment files.
- Cloned the `wazuh-docker` repository (version `5.0.0`) or downloaded the necessary deployment files.
```bash
git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git)
git clone https://github.com/wazuh/wazuh-docker.git
cd wazuh-docker
git checkout v4.14.2
git checkout v5.0.0
```
- Made a backup of any existing Wazuh data if you are migrating or upgrading.
@@ -2,31 +2,74 @@
## Deploying Wazuh Docker in a Multi-Node Configuration
This deployment utilizes the `multi-node/docker-compose.yml` file, which defines a cluster setup with two Wazuh manager containers, three Wazuh indexer containers, and one Wazuh dashboard container. Follow these steps to deploy this configuration:
This deployment utilizes the `multi-node/docker-compose.yml` file, which defines a cluster setup with two Wazuh Manager, three Wazuh Indexer, and one Wazuh Dashboard containers. Follow these steps to deploy this configuration:
1. Increase `vm.max_map_count` on each Docker host that will run a Wazuh Indexer container (Linux). This setting is crucial for Wazuh Indexer to operate correctly. This command requires root permissions:
```bash
sudo sysctl -w vm.max_map_count=262144
```
**Note:** This change is temporary and will revert upon reboot. To make it permanent on each relevant host, you'll need to edit the `/etc/sysctl.conf` file, add `vm.max_map_count=262144`, and then apply the change with `sudo sysctl -p`.
2. Navigate to the `multi-node` directory within your repository:
1. Navigate to the `multi-node` directory within your repository:
```bash
cd multi-node
```
2. Increase `vm.max_map_count` on each Docker host that will run a Wazuh Indexer container (Linux). This setting is crucial for Wazuh Indexer to operate correctly. This command requires root permissions:
```bash
sudo sysctl -w vm.max_map_count=262144
```
**Note:** This change is temporary and will revert upon reboot. To make it permanent on each relevant host, you'll need to edit the `/etc/sysctl.conf` file, add `vm.max_map_count=262144`, and then apply the change with `sudo sysctl -p`.
3. Download the certificate creation script and config.yml file:
3. Run the script to generate the necessary certificates for the Wazuh Stack. This ensures secure communication between the nodes:
```bash
docker compose -f generate-indexer-certs.yml run --rm generator
curl -o wazuh-certs-tool.sh https://packages.wazuh.com/5.0/wazuh-certs-tool-5.0.0-1.sh
curl -o config.yml https://packages.wazuh.com/5.0/config-5.0.0-1.yml
```
4. Start the Wazuh environment using `docker compose`:
4. Edit the `config.yml` file with the configuration of the Wazuh components to be deployed
```yaml
nodes:
# Wazuh indexer server nodes
indexer:
- name: wazuh1.indexer
dns: "wazuh1.indexer"
- name: wazuh2.indexer
dns: "wazuh2.indexer"
- name: wazuh3.indexer
dns: "wazuh3.indexer"
# Wazuh manager nodes
# Use node_type only with more than one Wazuh manager
manager:
- name: wazuh.master
dns: "wazuh.master"
node_type: master
- name: wazuh.worker
dns: "wazuh.worker"
node_type: worker
# Wazuh dashboard node
dashboard:
- name: wazuh.dashboard
dns: "wazuh.dashboard"
```
5. Run the certificate creation script:
```bash
sudo bash ../tools/utils/deployment/certificates-conf.sh --cert --copy --priv
```
6. Start the Wazuh environment using `docker compose`:
* To run in the foreground (logs will be displayed in your current terminal; press `Ctrl+C` to stop):
```bash
docker compose up
```
* To run in the background (detached mode, allowing the containers to run independently of your terminal):
```bash
docker compose up -d
```
@@ -2,34 +2,68 @@
## Deploying Wazuh Docker in a Single-Node Configuration
This deployment uses the `single-node/docker-compose.yml` file, which defines a setup with one Wazuh manager container, one Wazuh indexer container, and one Wazuh dashboard container. Follow these steps to deploy it:
This deployment uses the `single-node/docker-compose.yml` file, which defines a setup with one Wazuh Manager, one Wazuh Indexer, and one Wazuh Dashboard container. Follow these steps to deploy it:
1. Increase `vm.max_map_count` on each Docker host that will run a Wazuh Indexer container (Linux). This setting is crucial for Wazuh Indexer to operate correctly. This command requires root permissions:
```bash
sudo sysctl -w vm.max_map_count=262144
```
**Note:** This change is temporary and will revert upon reboot. To make it permanent, you'll need to edit the `/etc/sysctl.conf` file and add `vm.max_map_count=262144`, then apply with `sudo sysctl -p`.
2. Navigate to the `single-node` directory within your repository:
1. Navigate to the `single-node` directory within your repository:
```bash
cd single-node
```
2. Increase `vm.max_map_count` on each Docker host that will run a Wazuh Indexer container (Linux). This setting is crucial for Wazuh Indexer to operate correctly. This command requires root permissions:
```bash
sudo sysctl -w vm.max_map_count=262144
```
**Note:** This change is temporary and will revert upon reboot. To make it permanent, you'll need to edit the `/etc/sysctl.conf` file and add `vm.max_map_count=262144`, then apply with `sudo sysctl -p`.
3. Download the certificate creation script and `config.yml` file:
3. Run the script to generate the necessary certificates for the Wazuh Stack. This ensures secure communication between the nodes:
```bash
docker compose -f generate-indexer-certs.yml run --rm generator
curl -o wazuh-certs-tool.sh https://packages.wazuh.com/5.0/wazuh-certs-tool-5.0.0-1.sh
curl -o config.yml https://packages.wazuh.com/5.0/config-5.0.0-1.yml
```
4. Start the Wazuh environment using `docker compose`:
4. Edit the config.yml file with the configuration of the Wazuh components to be deployed
```yaml
nodes:
# Wazuh indexer server nodes
indexer:
- name: wazuh.indexer
dns: "wazuh.indexer"
# Wazuh manager nodes
# Use node_type only with more than one Wazuh manager
manager:
- name: wazuh.manager
dns: "wazuh.manager"
# Wazuh dashboard node
dashboard:
- name: wazuh.dashboard
dns: "wazuh.dashboard"
```
5. Run the certificate creation script:
```bash
sudo bash ../tools/utils/deployment/certificates-conf.sh --cert --copy --priv
```
6. Start the Wazuh environment using `docker compose`:
* To run in the foreground (logs will be displayed in your current terminal; press `Ctrl+C` to stop):
```bash
docker compose up
```
* To run in the background (detached mode, allowing the containers to run independently of your terminal):
```bash
docker compose up -d
```
Please allow some time for the environment to initialize, especially on the first run. It can take approximately a minute or two (depending on your host's resources) as the Wazuh Indexer starts up and generates the necessary indexes and index patterns.
+4 -4
View File
@@ -1,6 +1,6 @@
# Reference Manual - Getting Started
This section guides you through the initial steps to get your Wazuh-docker (version 4.14.2) environment up and running. We will cover the prerequisites and point you to the deployment instructions.
This section guides you through the initial steps to get your Wazuh-docker (version 5.0.0) environment up and running. We will cover the prerequisites and point you to the deployment instructions.
## Overview
@@ -18,7 +18,7 @@ Getting started with Wazuh-Docker involves the following general steps:
Before diving into the deployment, please ensure you have reviewed:
- The [Description](ref/Introduction/description.md) of Wazuh-docker to understand the components and architecture.
- The [Description](ref/introduction/description.md) of Wazuh-docker to understand the components and architecture.
- The [Requirements](ref/getting-started/requirements.md) to confirm your environment is suitable.
## Steps to Get Started
@@ -27,11 +27,11 @@ Before diving into the deployment, please ensure you have reviewed:
Verify that your host system has sufficient RAM, CPU, and disk space. Ensure Docker and Docker Compose are installed and functioning correctly.
2. **Obtain Wazuh-docker Configuration**:
You'll need the Docker Compose files and any associated configuration files from the `wazuh-docker` repository for version 4.14.2.
You'll need the Docker Compose files and any associated configuration files from the `wazuh-docker` repository for version 5.0.0.
```bash
git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git)
cd wazuh-docker
git checkout v4.14.2
git checkout v5.0.0
# Navigate to the specific docker-compose directory, e.g., single-node or multi-node
# cd docker-compose/single-node/ (example path)
```
+32 -5
View File
@@ -1,6 +1,6 @@
# Reference Manual - Requirements
Before deploying Wazuh-Docker (version 4.14.2), it's essential to ensure your environment meets the necessary hardware and software requirements. Meeting these prerequisites will help ensure a stable and performant Wazuh deployment.
Before deploying Wazuh-Docker (version 5.0.0), it's essential to ensure your environment meets the necessary hardware and software requirements. Meeting these prerequisites will help ensure a stable and performant Wazuh deployment.
## Host System Requirements
@@ -24,17 +24,17 @@ These are general recommendations. Actual needs may vary based on the number of
* **Network**:
* A stable network connection with sufficient bandwidth, especially if agents are reporting from remote locations.
### Software:
### Software Prerequisites:
#### Linux:
* **Operating System**:
* A 64-bit Linux distribution is preferred (e.g., Ubuntu, CentOS, RHEL, Debian).
* **Docker Engine**:
* Version `20.10.0` or newer.
* Install Docker by following the official instructions: [Install Docker Engine](https://docs.docker.com/engine/install/).
* **Git Client**:
* Required for cloning the `wazuh-docker` repository.
* **Web Browser**:
* A modern web browser (e.g., Chrome, Firefox, Edge, Safari) for accessing the Wazuh Dashboard.
* A modern web browser (e.g., Chrome, Firefox, Edge, Safari) for accessing the Wazuh dashboard.
* **`vm.max_map_count` (Linux Hosts for Wazuh Indexer/OpenSearch)**:
* The Wazuh Indexer (OpenSearch) requires a higher `vm.max_map_count` setting than the default on most Linux systems.
* Set it permanently:
@@ -48,6 +48,33 @@ These are general recommendations. Actual needs may vary based on the number of
```
* This is crucial for the stability of the Wazuh Indexer.
#### Windows:
* **Docker Desktop**
* Install Docker Desktop by following the official instructions: [Install Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/).
* **WSL Linux distribution**
* Install Ubuntu or other compatible Linux distribution (bash in Alpine is not compatible with wazuh-certs-tool-5.0.0-1.sh): [Install Ubuntu on WSL](https://documentation.ubuntu.com/wsl/stable/howto/install-ubuntu-wsl2/)
* **Git Client**:
* Required for cloning the `wazuh-docker` repository.
* **Web Browser**:
* A modern web browser (e.g., Chrome, Firefox, Edge, Safari) for accessing the Wazuh dashboard.
#### macOS:
* **Docker Desktop**
* Install Docker Desktop by following the official instructions: [Install Docker Desktop](https://docs.docker.com/desktop/setup/install/mac-install/).
* **Bash Shell**
* **GNU versions of apps**:
* [Install GNU sed](https://formulae.brew.sh/formula/gnu-sed).
* [Install GNU awk](https://formulae.brew.sh/formula/gawk).
* [Install GNU grep](https://formulae.brew.sh/formula/grep).
* **OpenSSL**:
* [Install OpenSSL](https://formulae.brew.sh/formula/openssl@3).
* **Git Client**:
* Required for cloning the `wazuh-docker` repository.
* **Web Browser**:
* A modern web browser (e.g., Chrome, Firefox, Edge, Safari) for accessing the Wazuh dashboard.
## Network Ports
Ensure that the necessary network ports are open and available on the Docker host and any firewalls:
+5 -4
View File
@@ -1,6 +1,6 @@
# Reference Manual - Glossary
This glossary defines key terms and concepts related to Wazuh, Docker, and their use together in the Wazuh-Docker project (version 4.14.2).
This glossary defines key terms and concepts related to Wazuh, Docker, and their use together in the Wazuh-Docker project (version 5.0.0).
---
@@ -22,7 +22,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their
**D**
- **Dashboard (Wazuh Dashboard / OpenSearch Dashboards / Kibana)**: A web-based visualization tool used to explore, analyze, and visualize data stored in the Wazuh Indexer. It provides dashboards, visualizations, and a query interface for security events and alerts. For Wazuh 4.14.2, this is typically OpenSearch Dashboards.
- **Dashboard (Wazuh Dashboard / OpenSearch Dashboards / Kibana)**: A web-based visualization tool used to explore, analyze, and visualize data stored in the Wazuh Indexer. It provides dashboards, visualizations, and a query interface for security events and alerts. For Wazuh 5.0.0, this is typically OpenSearch Dashboards.
- **Decoder**: A component in the Wazuh Manager that parses and extracts relevant information (fields) from raw log messages or event data.
- **Docker**: An open platform for developing, shipping, and running applications inside containers.
- **Docker Compose**: A tool for defining and running multi-container Docker applications. It uses a YAML file (`docker-compose.yml`) to configure the application's services, networks, and volumes.
@@ -42,7 +42,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their
**I**
- **Indexer (Wazuh Indexer / OpenSearch / Elasticsearch)**: The component responsible for storing, indexing, and making searchable the alerts and event data generated by the Wazuh Manager. For Wazuh 4.14.2, this is typically OpenSearch.
- **Indexer (Wazuh Indexer / OpenSearch / Elasticsearch)**: The component responsible for storing, indexing, and making searchable the alerts and event data generated by the Wazuh Manager. For Wazuh 5.0.0, this is typically OpenSearch.
**L**
@@ -60,7 +60,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their
**O**
- **`ossec.conf`**: The main configuration file for the Wazuh Manager and Wazuh Agent.
- **`ossec.conf`**: The main configuration file for the Wazuh Agent.
**R**
@@ -84,6 +84,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their
- **Wazuh Dashboard**: See Dashboard.
- **Wazuh Indexer**: See Indexer.
- **Wazuh Manager**: See Manager.
- **`wazuh-manager.conf`**: The main configuration file for the Wazuh Manager.
---
This glossary provides a starting point. For more detailed definitions or terms not listed here, please refer to the official Wazuh and Docker documentation.
@@ -0,0 +1,332 @@
# Docker Integration Tests
Workflow file: `.github/workflows/5_check_integration_tools.yml`
This workflow optionally builds Docker images from the PR branch, provisions a dedicated AWS VM, deploys the Wazuh Docker stack (single-node or multi-node), and runs the integration test suite against it via SSH.
---
## Triggers
| Mode | Trigger | Who can trigger |
|---|---|---|
| PR comment | `issue_comment` on an open, non-draft PR | Any repo collaborator |
| Manual | `workflow_dispatch` | Anyone with repo write access |
---
## Execution Flows
### issue_comment flow
```mermaid
flowchart TD
A[PR comment posted] --> B{Recognized command\non open non-draft PR?}
B -- No --> Z[Ignored]
B -- Yes --> C[get_pr_info\nReact · Extract PR data\nParse command · Create Check Run]
C --> D[prepare\nResolve branch · Read VERSION.json]
D --> E[build_images\nBuild + push to ECR\nalways runs on PR comment]
E --> F{deployment_matrix}
F --> G[docker_test\nsingle-node]
F --> H[docker_test\nmulti-node]
G --> I[update_check]
H --> I
```
**Recognized commands:**
| Comment | Deployment matrix |
|---|---|
| `/test-docker` | `["single-node","multi-node"]` |
| `/test-docker-single` | `["single-node"]` |
| `/test-docker-multi` | `["multi-node"]` |
When triggered by PR comment, `build_images` **always** runs — images are always built from the PR branch and pushed to ECR.
### workflow_dispatch flow
```mermaid
flowchart TD
A[Manual trigger] --> D[prepare\nResolve branch · Read VERSION.json]
D --> E{Build needed?\nno version + no stage\n+ registry=ECR}
E -- Yes --> F[build_images\nBuild + push to ECR]
E -- No --> G{deployment_type input}
F --> G
G -- single-node --> H[docker_test\nsingle-node]
G -- multi-node --> I[docker_test\nmulti-node]
G -- both --> H & I
```
`build_images` is **skipped** when either `version` or `stage` is provided, or when `registry = DockerHub`.
---
## Parameters
### workflow_dispatch inputs
| Input | Required | Default | Description |
|---|---|---|---|
| `pr_head_ref` | Yes | — | Branch of `wazuh-docker` to test |
| `automation_reference` | No | `main` | Branch of `wazuh-automation` to use |
| `deployment_type` | Yes | — | `single-node`, `multi-node`, or `both` |
| `version` | No | — | Override image version (e.g. `5.0.1`). If empty, reads from `VERSION.json` |
| `stage` | No | — | Image stage suffix (e.g. `beta1`, `beta2-latest`). Required when `version` is set |
| `registry` | No | `ECR` | `ECR` (dev/built images) or `DockerHub` (released images) |
### issue_comment parameters
All parameters are derived automatically:
| Parameter | Source |
|---|---|
| `pr_head_ref` | PR head branch from GitHub API |
| `deployment_matrix` | Parsed from comment command |
| `version` / `stage` | Read from `VERSION.json` on the PR branch |
| `registry` | Always ECR (images are always built) |
| `automation_reference` | Always `main` |
---
## Image Resolution Scenarios
The workflow distinguishes five cases based on inputs:
| Case | `version` input | `stage` input | Registry | Action | Image tag |
|---|---|---|---|---|---|
| a.1 | empty | empty | ECR (or PR comment) | **BUILD** from PR → ECR | `{version}-{stage}-latest` |
| a.2 | empty | empty | DockerHub | Pull (no build) | `{version}-{stage}` |
| b.1 | set | empty | ECR | Pull (no build) | `{version}-latest` |
| b.2 | set | empty | DockerHub | Pull (no build) | `{version}` |
| c | set or empty | set | ECR or DockerHub | Pull (no build) | `{version}-{stage}` |
> When neither `version` nor `stage` is set, `version` and `stage` are read from `VERSION.json` on the target branch.
> Case a.1 always applies when triggered by PR comment, regardless of the `registry` input (which is not available in that trigger mode).
---
## Job Details
### Job 1 — `get_pr_info` (issue_comment only)
| Step | What it does |
|---|---|
| React to comment | Adds a 🚀 reaction to the triggering PR comment |
| Extract PR data | Calls GitHub API to get PR `head_ref` and `head_sha` |
| Parse command | Maps comment text → `deployment_matrix` JSON and `check_name` string |
| Create Check Run | Creates a GitHub Check Run in `in_progress` state on the PR head SHA |
### Job 2 — `prepare` (both triggers)
| Step | What it does |
|---|---|
| Resolve context | Reads inputs (workflow_dispatch) or `get_pr_info` outputs (issue_comment) |
| Checkout `VERSION.json` | Sparse-checks out only `VERSION.json` from the target branch |
| Read version info | Extracts `version` and `stage` from `VERSION.json` |
| Show test plan | Logs the resolved image case (a.1/a.2/b.1/b.2/c) and writes a summary table |
Outputs: `pr_head_ref`, `deployment_matrix`, `wazuh_version`, `wazuh_stage`.
### Job 3 — `build_images` (conditional)
Calls the reusable workflow `.github/workflows/5_build_and_push_images.yml`.
**Runs when:** `version == ''` AND `stage == ''` AND (`registry == 'ECR'` OR `github.event_name == 'issue_comment'`).
**Skipped when:** any explicit `version` or `stage` is provided, or `registry = DockerHub`.
| Parameter passed | Value |
|---|---|
| `image_tag` | `{wazuh_version}-{wazuh_stage}` |
| `docker_reference` | `pr_head_ref` |
| `wazuh_automation_reference` | `automation_reference` input |
| `products` | `wazuh-manager,wazuh-dashboard,wazuh-indexer,wazuh-agent` |
| `dev` | `true` |
| `id` | `docker-integration-{run_id}` |
### Job 4 — `docker_test` (matrix, both triggers)
Runs once per entry in `deployment_matrix`. Each instance provisions its own VM.
#### Setup
1. Checkout `wazuh-automation` at `automation_reference`
2. Checkout `wazuh-docker` at `pr_head_ref`
3. Resolve image configuration (see [Image Resolution Scenarios](#image-resolution-scenarios)) → sets `DOCKER_REGISTRY`, `DOCKER_TAG`, `DOCKER_VERSION`
4. Set up Python 3.12 and install `test_runner`
5. Configure AWS credentials via OIDC (`AWS_IAM_DOCKER_ROLE`)
#### Instance allocation
Provisions a dedicated AWS VM using the `deployability` allocator module:
```bash
python3 wazuh-automation/deployability/modules/allocation/main.py \
--action create \
--provider aws \
--size large \
--composite-name ubuntu-24-amd64 \
--instance-name gha_{run_id}_docker_{deployment_type} \
--label-team devops \
--label-termination-date 1d
```
The allocator writes `inventory.yml` with the SSH connection details (`ansible_host`, `ansible_port`, `ansible_user`, `ansible_ssh_private_key_file`). These are extracted and exported as `SSH_HOST`, `SSH_PORT`, `SSH_USER`, `SSH_KEY` environment variables.
#### VM configuration and Docker install
All subsequent steps run on the remote VM over SSH:
1. **Install Docker CE**: `curl -fsSL https://get.docker.com | sudo sh`
2. **Login to ECR** (when registry is ECR or trigger is issue_comment): authenticates the VM's Docker daemon to the dev registry
3. **Set `vm.max_map_count=262144`**: required for OpenSearch/Wazuh Indexer
#### Certificate generation and config
Runs on the **runner** (not the VM):
1. **Download `wazuh-certs-tool.sh`** directly from the packages URL:
- Pre-release: `packages-staging.xdrsiem.wazuh.info/pre-release/{major}.x/installation-assistant/wazuh-certs-tool-{version}-{stage}.sh`
- Release: `packages.wazuh.com/{major}.{minor}/wazuh-certs-tool-{version}-1.sh`
2. **Generate `config.yml`** inline based on deployment type:
**single-node:**
```yaml
nodes:
indexer: [{ name: wazuh.indexer, dns: wazuh.indexer }]
manager: [{ name: wazuh.manager, dns: wazuh.manager }]
dashboard:[{ name: wazuh.dashboard, dns: wazuh.dashboard }]
```
**multi-node:**
```yaml
nodes:
indexer:
- { name: wazuh1.indexer, dns: wazuh1.indexer }
- { name: wazuh2.indexer, dns: wazuh2.indexer }
- { name: wazuh3.indexer, dns: wazuh3.indexer }
manager:
- { name: wazuh.master, dns: wazuh.master, node_type: master }
- { name: wazuh.worker, dns: wazuh.worker, node_type: worker }
dashboard: [{ name: wazuh.dashboard, dns: wazuh.dashboard }]
```
3. **Copy `wazuh-docker/` to VM** via SCP: `scp -r wazuh-docker {remote}:/tmp/wazuh-docker`
4. **Generate certificates on VM**: runs `tools/utils/deployment/certificates-conf.sh --cert --copy` inside `/tmp/wazuh-docker/{deployment}/`
#### Deployment
```bash
# On the VM
cd /tmp/wazuh-docker/{deployment_type}
sudo docker compose up -d
```
Waits up to **15 minutes** polling every 10 seconds until all non-nginx containers report `healthy` status.
After containers are healthy, waits for steady state:
- `single-node`: 60 seconds
- `multi-node`: 90 seconds
#### Test execution
```bash
test_runner \
--test-type "docker-{deployment_type}" \
--deployment-type "docker-{deployment_type}" \
--ssh-host "{SSH_HOST}" \
--ssh-port "{SSH_PORT}" \
--ssh-key-path "{SSH_KEY}" \
--ssh-username "{SSH_USER}" \
--version "{DOCKER_VERSION}" \
--log-level INFO \
--output github \
--output-file "test-results-docker-{deployment_type}.github"
```
| Argument | Value | Notes |
|---|---|---|
| `--test-type` | `docker-single-node` or `docker-multi-node` | Selects the test module set |
| `--deployment-type` | `docker-single-node` or `docker-multi-node` | Selects the deployment profile |
| `--ssh-host/port/key/username` | From allocator inventory | Connects to the allocated VM |
| `--version` | Resolved `DOCKER_VERSION` | Used for version assertion tests |
| `--output github` | — | Emits GitHub Actions annotations |
For details on what `docker-single-node` and `docker-multi-node` test types validate, see the `Integration Test Module — Description` of the internal documentation.
#### Reporting
| Output | When | Content |
|---|---|---|
| Step summary | Always | Test results appended to `$GITHUB_STEP_SUMMARY` |
| PR comment | `issue_comment` trigger only | Posts or updates a comment (marker: `<!-- docker-integration-check-{deployment} -->`) with ✅/❌ and results |
| Artifact: `test-results-docker-{deployment}-{run_id}` | Always | Results file, retained 7 days |
| Artifact: `docker-logs-{deployment}-{run_id}` | On failure only | Full `docker compose logs` output, retained 7 days |
#### Cleanup (always runs, even on failure)
1. `docker compose down -v` on the VM (stops containers and removes volumes)
2. Deallocate the VM:
```bash
python3 wazuh-automation/deployability/modules/allocation/main.py \
--action delete \
--track-output {ALLOCATOR_PATH}/track.yml
```
### Job 5 — `update_check` (issue_comment only)
Updates the GitHub Check Run created in Job 1:
| `docker_test` result | Check conclusion |
|---|---|
| `success` | `success` — ✅ All Docker integration tests passed |
| `failure` | `failure` — ❌ One or more tests failed |
| `cancelled` | `cancelled` |
---
## Required Secrets and Variables
### Secrets
| Secret | Used by |
|---|---|
| `AWS_IAM_DOCKER_ROLE` | OIDC role for AWS operations (allocator + ECR) |
| `GH_CLONE_TOKEN` | Checkout `wazuh-automation` |
| `GITHUB_TOKEN` | PR comments and Check Run updates (built-in) |
### Repository variables
| Variable | Used by |
|---|---|
| `IMAGE_REGISTRY_PROD` | DockerHub registry URL |
| `IMAGE_REGISTRY_DEV` | ECR registry URL |
---
## Permissions
| Permission | Purpose |
|---|---|
| `id-token: write` | OIDC authentication to AWS |
| `contents: read` | Checkout repository |
| `pull-requests: write` | Post PR comments |
| `issues: write` | Post comments via issues API |
| `checks: write` | Create and update GitHub Check Runs |
---
## Instance Naming
Allocated VMs are named:
```
gha_{github.run_id}_docker_{deployment_type}
```
Example: `gha_12345678_docker_single-node`
VMs are tagged with `termination-date: 1d` — they are automatically terminated after 24 hours as a safety net, even if the cleanup step fails.
+22
View File
@@ -0,0 +1,22 @@
# Compatibility
This section provides information about the compatibility of the Wazuh Docker stack with different platforms.
## Supported platforms
### Host operating system and architecture
- Linux hosts are recommended for running the stack.
- Windows and macOS are supported when using Docker Desktop. On Windows, the WSL 2 backend is recommended.
- When building images, the build process supports `linux/amd64` and `linux/arm64`.
### Privileged ports and rootless Docker
The default Compose deployments publish some privileged ports on the host (for example, the Dashboard on `443/tcp` and syslog on `514/udp`).
- If you run Docker in rootless mode or under restrictive policies, publishing ports below `1024` may fail.
- In such environments, map the services to non-privileged host ports in the corresponding `docker-compose.yml` file.
### Resource constraints
For detailed information on resource requirements and recommendations, please refer to the [Requirements](../getting-started/requirements.md) section.
@@ -1,6 +1,6 @@
# Reference Manual - Description
This section provides a detailed description of Wazuh-docker (version 4.14.2), its components, and its architecture when deployed using Docker containers. Understanding these aspects is key to effectively deploying and managing your Wazuh environment.
This section provides a detailed description of Wazuh-docker (version 5.0.0), its components, and its architecture when deployed using Docker containers. Understanding these aspects is key to effectively deploying and managing your Wazuh environment.
## What is Wazuh?
@@ -18,7 +18,7 @@ Wazuh-docker is a project that provides Docker images and `docker compose` confi
## Core Components in Wazuh-Docker
The Wazuh-Docker project typically provides images for the following core Wazuh components, adapted for version 4.14.2:
The Wazuh-Docker project typically provides images for the following core Wazuh components, adapted for version 5.0.0:
1. **Wazuh Manager**:
- The central component that collects and analyzes data from deployed Wazuh agents.
@@ -28,7 +28,7 @@ The Wazuh-Docker project typically provides images for the following core Wazuh
2. **Wazuh Indexer**:
- A highly scalable, full-text search and analytics engine.
- Based on OpenSearch (or historically Elasticsearch), it stores and indexes alerts and monitoring data generated by the Wazuh manager.
- The Wazuh indexer container provides the data persistence layer for Wazuh alerts and events. For version 4.14.2, this is typically an OpenSearch-based component.
- The Wazuh indexer container provides the data persistence layer for Wazuh alerts and events. For version 5.0.0, this is typically an OpenSearch-based component.
3. **Wazuh Dashboard**:
- A flexible visualization tool based on OpenSearch Dashboards (or historically Kibana).
@@ -1,6 +1,6 @@
# Reference Manual - Introduction
Welcome to the Reference Manual for Wazuh-Docker, version 4.14.2. This manual provides comprehensive information about deploying, configuring, and managing your Wazuh environment using Docker.
Welcome to the Reference Manual for Wazuh-Docker, version 5.0.0. This manual provides comprehensive information about deploying, configuring, and managing your Wazuh environment using Docker.
## Purpose of This Manual
@@ -44,4 +44,4 @@ This manual is structured to help you find information efficiently:
- If you need to customize your deployment, refer to the [Configuration](configuration/configuration.md) section.
- For specific terms or concepts, consult the [Glossary](glossary.md).
This manual refers to version 4.14.2 of Wazuh-Docker. Ensure you are using the documentation that corresponds to your deployed version.
This manual refers to version 5.0.0 of Wazuh-Docker. Ensure you are using the documentation that corresponds to your deployed version.
+42
View File
@@ -0,0 +1,42 @@
# Performance
This section provides practical recommendations to improve performance for Wazuh Docker deployments (single-node and multi-node). Apply the controls that match your workload and environment.
## Performance drivers
- **Wazuh Indexer** is typically the main bottleneck (JVM heap, disk I/O, and CPU).
- **Wazuh Manager** load grows with the number of connected agents and event throughput.
- **Wazuh Dashboard** mainly affects interactive usage and depends on Indexer responsiveness.
For baseline host sizing and prerequisites, see [Requirements](getting-started/requirements.md).
## Storage and host
- Use low-latency storage for the Indexer data volume (see [Requirements](getting-started/requirements.md)).
- Avoid slow or inconsistent storage for the Indexer (for example, network filesystems) unless you have validated latency and durability for your use case.
- Monitor disk space growth. Index data and persistent volumes can grow quickly in high-ingest environments.
## Wazuh Indexer (OpenSearch)
- Set the JVM heap explicitly using `OPENSEARCH_JAVA_OPTS` (documented in [Environment variables](configuration/environment-variables.md)).
- Keep heap sizing conservative relative to available memory so the OS can cache filesystem data; oversized heap commonly degrades disk-heavy workloads.
- Ensure the Linux host meets the required `vm.max_map_count` prerequisite (documented in [Requirements](getting-started/requirements.md)).
- Prioritize heap sizing and GC stability.
- Prioritize disk throughput/latency for the Indexer data volume.
- Prioritize CPU availability during ingest peaks.
## Wazuh Manager
- If you observe ingestion backpressure or delayed processing, validate that the Manager has sufficient CPU and memory and that persistent volumes are not constrained by slow storage.
- For multi-node deployments, distribute agent load appropriately (for example, by separating responsibilities between master/worker nodes) to avoid overloading.
## Dashboard
- Dashboard responsiveness depends on Indexer health. Address Indexer resource constraints first when troubleshooting slow UI queries.
- Avoid exposing the Dashboard to excessive concurrent users on small hosts; scale the host or deployment model if needed.
## Observability and troubleshooting
- Start with container-level signals: `docker stats`, container logs, and host disk utilization.
- For Indexer issues, validate basic cluster health and look for sustained CPU saturation, JVM memory pressure, and disk I/O contention.
- For Manager issues, review Manager logs for queue growth and repeated connection retries.
+26
View File
@@ -0,0 +1,26 @@
# Security
This section summarizes security recommendations for Wazuh Docker deployments (single-node and multi-node). Apply the controls that match your environment and risk profile.
## Credentials and secrets
- Do not use default credentials. The Compose examples include placeholder values for the Wazuh API, Dashboard, and Indexer access.
- Prefer injecting secrets at runtime (for example, via your CI/CD secret store or an external secrets manager) instead of hardcoding them in `docker-compose.yml`.
- Rotate credentials regularly and after any suspected exposure.
## Certificates and TLS
- Protect the generated `wazuh-certificates/` directory. Limit filesystem permissions and do not publish it.
- Regenerate certificates if private keys are leaked or if nodes are re-provisioned.
- Use certificates and TLS settings appropriate for production (trusted CA, correct DNS names, and key protection).
## Network exposure
- Restrict access to exposed service ports at the host firewall and security group level.
- Do not expose internal-only endpoints to untrusted networks. In particular, limit access to the Indexer API port (`9200`) and the Wazuh API port (`55000`) to administrative networks.
## Host and runtime hardening
- Run Docker on a hardened host (patched OS, minimal installed packages, restricted SSH access).
- Limit access to the Docker daemon. Docker socket access grants administrative control over the host.
- Ensure persistent volumes and bind-mounted configuration files are backed by secure storage and appropriate permissions.
+49
View File
@@ -0,0 +1,49 @@
# Uninstall
This section describes how to uninstall a Wazuh Docker deployment by stopping and removing the resources created.
## Uninstalling single-node and multi-node deployments
1. Navigate to the deployment directory (`single-node` or `multi-node`):
```bash
cd <deployment-directory>
```
2. Stop and remove the containers, persistent volumes and all stored data:
```bash
docker compose down -v
```
3. Remove generated or downloaded files:
```bash
rm -rf wazuh-certificates/ config.yml wazuh-certs-tool.sh config/*/certs
```
4. Verify that the deployment is removed:
```bash
docker ps
```
## Wazuh agent deployment
1. Navigate to the agent deployment directory:
```bash
cd wazuh-agent
```
2. Stop and remove the container:
```bash
docker compose down
```
3. Verify that the deployment is removed:
```bash
docker ps
```
+74 -5
View File
@@ -1,10 +1,79 @@
# Upgrading Wazuh in Docker
To upgrade your Wazuh deployment when using Docker, we recommend following the official Wazuh documentation. It contains the most accurate and up-to-date information for upgrading from previous versions to the current one.
To upgrade your Wazuh deployment when using Docker, the process primarily involves updating the image tags in your `docker-compose.yml` file to the desired version.
> 📘 Please refer to the official guide:
> [Upgrading Wazuh Docker](https://documentation.wazuh.com/current/deployment-options/docker/upgrading-wazuh-docker.html)
Below is a step-by-step example of how to perform this update:
This external guide provides detailed upgrade instructions that cover multiple scenarios and configurations.
1. **Stop the current deployment**:
Stop and remove the existing containers.
```bash
docker-compose down
```
Following the official documentation ensures a smoother and safer upgrade process, with fewer risks of data loss or configuration issues.
2. **Update the image tags**:
Edit your `docker-compose.yml` file and update the `image` field for all Wazuh services to the desired version.
### Single-node configuration
Update the image tag for the following services in `single-node/docker-compose.yml`:
- `wazuh.manager`
- `wazuh.indexer`
- `wazuh.dashboard`
Example (update to 5.0.0):
```yaml
services:
wazuh.manager:
image: wazuh/wazuh-manager:5.0.0-beta3
...
wazuh.indexer:
image: wazuh/wazuh-indexer:5.0.0-beta3
...
wazuh.dashboard:
image: wazuh/wazuh-dashboard:5.0.0-beta3
...
```
### Multi-node configuration
Update the image tag for the following services in `multi-node/docker-compose.yml`:
- `wazuh.master`
- `wazuh.worker`
- `wazuh1.indexer`, `wazuh2.indexer`, and `wazuh3.indexer`
- `wazuh.dashboard`
Example (update to 5.0.0):
```yaml
services:
wazuh.master:
image: wazuh/wazuh-manager:5.0.0-beta3
...
wazuh.worker:
image: wazuh/wazuh-manager:5.0.0-beta3
...
wazuh1.indexer:
image: wazuh/wazuh-indexer:5.0.0-beta3
...
wazuh2.indexer:
image: wazuh/wazuh-indexer:5.0.0-beta3
...
wazuh3.indexer:
image: wazuh/wazuh-indexer:5.0.0-beta3
...
wazuh.dashboard:
image: wazuh/wazuh-dashboard:5.0.0-beta3
...
```
3. **Start the updated deployment**:
Start the containers again. Docker will automatically pull the new images.
```bash
docker-compose up -d
```
-12
View File
@@ -1,12 +0,0 @@
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
FROM amazonlinux:2023
RUN yum update -y && yum install openssl curl-minimal -y
WORKDIR /
COPY config/entrypoint.sh /
RUN chmod 700 /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-9
View File
@@ -1,9 +0,0 @@
# Certificate creation image build
The dockerfile hosted in this directory is used to build the image used to boot Wazuh's single node and multi node stacks.
To create the image, the following command must be executed:
```
$ docker build -t wazuh/wazuh-certs-generator:0.0.3 .
```
@@ -1,68 +0,0 @@
#!/bin/bash
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
##############################################################################
# Downloading Cert Gen Tool
##############################################################################
## Variables
CERT_TOOL=wazuh-certs-tool.sh
PASSWORD_TOOL=wazuh-passwords-tool.sh
PACKAGES_URL=https://packages.wazuh.com/$CERT_TOOL_VERSION/
PACKAGES_DEV_URL=https://packages-dev.wazuh.com/$CERT_TOOL_VERSION/
OUTPUT_FILE="/$CERT_TOOL"
download_package() {
local url=$1
echo "Checking $url$CERT_TOOL ..."
if curl -fsL "$url$CERT_TOOL" -o "$OUTPUT_FILE"; then
echo "Downloaded $CERT_TOOL from $url"
return 0
else
return 1
fi
}
# Try first the prod URL, if it fails try the dev URL
if download_package "$PACKAGES_URL"; then
:
elif download_package "$PACKAGES_DEV_URL"; then
:
else
echo "The tool to create the certificates does not exist in any bucket"
echo "ERROR: certificates were not created"
exit 1
fi
cp /config/certs.yml /config.yml
chmod 700 "$OUTPUT_FILE"
##############################################################################
# Creating Cluster certificates
##############################################################################
## Execute cert tool and parsin cert.yml to set UID permissions
source /$CERT_TOOL -A
nodes_server=$( cert_parseYaml /config.yml | grep -E "nodes[_]+server[_]+[0-9]+=" | sed -e 's/nodes__server__[0-9]=//' | sed 's/"//g' )
node_names=($nodes_server)
echo "Moving created certificates to the destination directory"
cp /wazuh-certificates/* /certificates/
echo "Changing certificate permissions"
chmod -R 500 /certificates
chmod -R 400 /certificates/*
echo "Setting UID indexer and dashboard"
chown 1000:1000 /certificates/*
echo "Setting UID for wazuh manager and worker"
cp /certificates/root-ca.pem /certificates/root-ca-manager.pem
cp /certificates/root-ca.key /certificates/root-ca-manager.key
chown 999:999 /certificates/root-ca-manager.pem
chown 999:999 /certificates/root-ca-manager.key
for i in ${node_names[@]};
do
chown 999:999 "/certificates/${i}.pem"
chown 999:999 "/certificates/${i}-key.pem"
done
-361
View File
@@ -1,361 +0,0 @@
# Opendistro data migration to Wazuh indexer on docker.
This procedure explains how to migrate Opendistro data from Opendistro to Wazuh indexer in docker production deployments.
The example is migrating from v4.2 to v4.4.
## Procedure
Assuming that you have a v4.2 production deployment, perform the following steps.
**1. Stop 4.2 environment**
`docker-compose -f production-cluster.yml stop`
**2. List elasticsearch volumes**
`docker volume ls --filter name='wazuh-docker_elastic-data'`
**3. Inspect elasticsearch volume**
`docker volume inspect wazuh-docker_elastic-data-1`
**4. Spin down the 4.2 environment.**
`docker-compose -f production-cluster.yml down`
**Steps 5 and 6 can be done with the volume-migrator.sh script, specifying Docker compose version and project name as parameters.**
Ex: $ multi-node/volume-migrator.sh 1.25.0 multi-node
**5. Run the volume create command:** create new indexer and Wazuh manager volumes using the `com.docker.compose.version` label value from the previous command.
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=wazuh-indexer-data-1 \
multi-node_wazuh-indexer-data-1
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=wazuh-indexer-data-2 \
multi-node_wazuh-indexer-data-2
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=wazuh-indexer-data-3 \
multi-node_wazuh-indexer-data-3
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master_wazuh_api_configuration \
multi-node_master_wazuh_api_configuration
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master_wazuh_etc \
multi-node_docker_wazuh_etc
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-logs \
multi-node_master-wazuh-logs
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-queue \
multi-node_master-wazuh-queue
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-var-multigroups \
multi-node_master-wazuh-var-multigroups
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-integrations \
multi-node_master-wazuh-integrations
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-active-response \
multi-node_master-wazuh-active-response
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-agentless \
multi-node_master-wazuh-agentless
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-wazuh-wodles \
multi-node_master-wazuh-wodles
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-filebeat-etc \
multi-node_master-filebeat-etc
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=master-filebeat-var \
multi-node_master-filebeat-var
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker_wazuh_api_configuration \
multi-node_worker_wazuh_api_configuration
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker_wazuh_etc \
multi-node_worker-wazuh-etc
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-logs \
multi-node_worker-wazuh-logs
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-queue \
multi-node_worker-wazuh-queue
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-var-multigroups \
multi-node_worker-wazuh-var-multigroups
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-integrations \
multi-node_worker-wazuh-integrations
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-active-response \
multi-node_worker-wazuh-active-response
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-agentless \
multi-node_worker-wazuh-agentless
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-wazuh-wodles \
multi-node_worker-wazuh-wodles
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-filebeat-etc \
multi-node_worker-filebeat-etc
```
```
docker volume create \
--label com.docker.compose.project=multi-node \
--label com.docker.compose.version=1.25.0 \
--label com.docker.compose.volume=worker-filebeat-var \
multi-node_worker-filebeat-var
```
**6. Copy the volume content from elasticsearch to Wazuh indexer volumes and old Wazuh manager content to new volumes.**
```
docker container run --rm -it \
-v wazuh-docker_elastic-data-1:/from \
-v multi-node_wazuh-indexer-data-1:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_elastic-data-2:/from \
-v multi-node_wazuh-indexer-data-2:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_elastic-data-3:/from \
-v multi-node_wazuh-indexer-data-3:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-api-configuration:/from \
-v multi-node_master-wazuh-api-configuration:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-etc:/from \
-v multi-node_master-wazuh-etc:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-logs:/from \
-v multi-node_master-wazuh-logs:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-queue:/from \
-v multi-node_master-wazuh-queue:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-var-multigroups:/from \
-v multi-node_master-wazuh-var-multigroups:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-integrations:/from \
-v multi-node_master-wazuh-integrations:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-active-response:/from \
-v multi-node_master-wazuh-active-response:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-agentless:/from \
-v multi-node_master-wazuh-agentless:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_ossec-wodles:/from \
-v multi-node_master-wazuh-wodles:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_filebeat-etc:/from \
-v multi-node_master-filebeat-etc:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_filebeat-var:/from \
-v multi-node_master-filebeat-var:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-api-configuration:/from \
-v multi-node_worker-wazuh-api-configuration:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-etc:/from \
-v multi-node_worker-wazuh-etc:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-logs:/from \
-v multi-node_worker-wazuh-logs:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-queue:/from \
-v multi-node_worker-wazuh-queue:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-var-multigroups:/from \
-v multi-node_worker-wazuh-var-multigroups:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-integrations:/from \
-v multi-node_worker-wazuh-integrations:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-active-response:/from \
-v multi-node_worker-wazuh-active-response:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-agentless:/from \
-v multi-node_worker-wazuh-agentless:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-ossec-wodles:/from \
-v multi-node_worker-wazuh-wodles:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-filebeat-etc:/from \
-v multi-node_worker-filebeat-etc:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
```
docker container run --rm -it \
-v wazuh-docker_worker-filebeat-var:/from \
-v multi-node_worker-filebeat-var:/to \
alpine ash -c "cd /from ; cp -avp . /to"
```
**7. Start the 4.4 environment.**
```
git checkout 4.4
cd multi-node
docker-compose -f generate-indexer-certs.yml run --rm generator
docker-compose up -d
```
**8. Check the access to Wazuh dashboard**: go to the Wazuh dashboard using the web browser and check the data.
-26
View File
@@ -1,26 +0,0 @@
# Deploy Wazuh Docker in multi node configuration
This deployment is defined in the `docker-compose.yml` file with two Wazuh manager containers, three Wazuh indexer containers, and one Wazuh dashboard container. It can be deployed by following these steps:
1) Increase max_map_count on your host (Linux). This command must be run with root permissions:
```
$ sysctl -w vm.max_map_count=262144
```
2) Run the certificate creation script:
```
$ docker compose -f generate-indexer-certs.yml run --rm generator
```
3) Start the environment with docker compose:
- In the foregroud:
```
$ docker compose up
```
- In the background:
```
$ docker compose up -d
```
The environment takes about 1 minute to get up (depending on your Docker host) for the first time since Wazuh Indexer must be started for the first time and the indexes and index patterns must be generated.
-24
View File
@@ -1,24 +0,0 @@
nodes:
# Wazuh indexer server nodes
indexer:
- name: wazuh1.indexer
ip: wazuh1.indexer
- name: wazuh2.indexer
ip: wazuh2.indexer
- name: wazuh3.indexer
ip: wazuh3.indexer
# Wazuh server nodes
# Use node_type only with more than one Wazuh manager
server:
- name: wazuh.master
ip: wazuh.master
node_type: master
- name: wazuh.worker
ip: wazuh.worker
node_type: worker
# Wazuh dashboard node
dashboard:
- name: wazuh.dashboard
ip: wazuh.dashboard
@@ -1,313 +0,0 @@
<ossec_config>
<global>
<jsonout_output>yes</jsonout_output>
<alerts_log>yes</alerts_log>
<logall>no</logall>
<logall_json>no</logall_json>
<email_notification>no</email_notification>
<smtp_server>smtp.example.wazuh.com</smtp_server>
<email_from>wazuh@example.wazuh.com</email_from>
<email_to>recipient@example.wazuh.com</email_to>
<email_maxperhour>12</email_maxperhour>
<email_log_source>alerts.log</email_log_source>
<agents_disconnection_time>10m</agents_disconnection_time>
<agents_disconnection_alert_time>0</agents_disconnection_alert_time>
</global>
<alerts>
<log_alert_level>3</log_alert_level>
<email_alert_level>12</email_alert_level>
</alerts>
<!-- Choose between "plain", "json", or "plain,json" for the format of internal logs -->
<logging>
<log_format>plain</log_format>
</logging>
<remote>
<connection>secure</connection>
<port>1514</port>
<protocol>tcp</protocol>
<queue_size>131072</queue_size>
</remote>
<!-- Policy monitoring -->
<rootcheck>
<disabled>no</disabled>
<check_files>yes</check_files>
<check_trojans>yes</check_trojans>
<check_dev>yes</check_dev>
<check_sys>yes</check_sys>
<check_pids>yes</check_pids>
<check_ports>yes</check_ports>
<check_if>yes</check_if>
<!-- Frequency that rootcheck is executed - every 12 hours -->
<frequency>43200</frequency>
<rootkit_files>etc/rootcheck/rootkit_files.txt</rootkit_files>
<rootkit_trojans>etc/rootcheck/rootkit_trojans.txt</rootkit_trojans>
<skip_nfs>yes</skip_nfs>
</rootcheck>
<wodle name="cis-cat">
<disabled>yes</disabled>
<timeout>1800</timeout>
<interval>1d</interval>
<scan-on-start>yes</scan-on-start>
<java_path>wodles/java</java_path>
<ciscat_path>wodles/ciscat</ciscat_path>
</wodle>
<!-- Osquery integration -->
<wodle name="osquery">
<disabled>yes</disabled>
<run_daemon>yes</run_daemon>
<log_path>/var/log/osquery/osqueryd.results.log</log_path>
<config_path>/etc/osquery/osquery.conf</config_path>
<add_labels>yes</add_labels>
</wodle>
<!-- System inventory -->
<wodle name="syscollector">
<disabled>no</disabled>
<interval>1h</interval>
<scan_on_start>yes</scan_on_start>
<hardware>yes</hardware>
<os>yes</os>
<network>yes</network>
<packages>yes</packages>
<ports all="yes">yes</ports>
<processes>yes</processes>
<!-- Database synchronization settings -->
<synchronization>
<max_eps>10</max_eps>
</synchronization>
</wodle>
<sca>
<enabled>yes</enabled>
<scan_on_start>yes</scan_on_start>
<interval>12h</interval>
<skip_nfs>yes</skip_nfs>
</sca>
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
<indexer>
<enabled>yes</enabled>
<hosts>
<host>https://wazuh1.indexer:9200</host>
<host>https://wazuh2.indexer:9200</host>
<host>https://wazuh3.indexer:9200</host>
</hosts>
<ssl>
<certificate_authorities>
<ca>/etc/ssl/root-ca.pem</ca>
</certificate_authorities>
<certificate>/etc/ssl/filebeat.pem</certificate>
<key>/etc/ssl/filebeat.key</key>
</ssl>
</indexer>
<!-- File integrity monitoring -->
<syscheck>
<disabled>no</disabled>
<!-- Frequency that syscheck is executed default every 12 hours -->
<frequency>43200</frequency>
<scan_on_start>yes</scan_on_start>
<!-- Generate alert when new file detected -->
<alert_new_files>yes</alert_new_files>
<!-- Don't ignore files that change more than 'frequency' times -->
<auto_ignore frequency="10" timeframe="3600">no</auto_ignore>
<!-- Directories to check (perform all possible verifications) -->
<directories>/etc,/usr/bin,/usr/sbin</directories>
<directories>/bin,/sbin,/boot</directories>
<!-- Files/directories to ignore -->
<ignore>/etc/mtab</ignore>
<ignore>/etc/hosts.deny</ignore>
<ignore>/etc/mail/statistics</ignore>
<ignore>/etc/random-seed</ignore>
<ignore>/etc/random.seed</ignore>
<ignore>/etc/adjtime</ignore>
<ignore>/etc/httpd/logs</ignore>
<ignore>/etc/utmpx</ignore>
<ignore>/etc/wtmpx</ignore>
<ignore>/etc/cups/certs</ignore>
<ignore>/etc/dumpdates</ignore>
<ignore>/etc/svc/volatile</ignore>
<!-- File types to ignore -->
<ignore type="sregex">.log$|.swp$</ignore>
<!-- Check the file, but never compute the diff -->
<nodiff>/etc/ssl/private.key</nodiff>
<skip_nfs>yes</skip_nfs>
<skip_dev>yes</skip_dev>
<skip_proc>yes</skip_proc>
<skip_sys>yes</skip_sys>
<!-- Nice value for Syscheck process -->
<process_priority>10</process_priority>
<!-- Maximum output throughput -->
<max_eps>100</max_eps>
<!-- Database synchronization settings -->
<synchronization>
<enabled>yes</enabled>
<interval>5m</interval>
<max_interval>1h</max_interval>
<max_eps>10</max_eps>
</synchronization>
</syscheck>
<!-- Active response -->
<global>
<white_list>127.0.0.1</white_list>
<white_list>^localhost.localdomain$</white_list>
</global>
<command>
<name>disable-account</name>
<executable>disable-account</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>restart-wazuh</name>
<executable>restart-wazuh</executable>
</command>
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>host-deny</name>
<executable>host-deny</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>route-null</name>
<executable>route-null</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>win_route-null</name>
<executable>route-null.exe</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>netsh</name>
<executable>netsh.exe</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<!--
<active-response>
active-response options here
</active-response>
-->
<!-- Log analysis -->
<localfile>
<log_format>command</log_format>
<command>df -P</command>
<frequency>360</frequency>
</localfile>
<localfile>
<log_format>full_command</log_format>
<command>netstat -tulpn | sed 's/\([[:alnum:]]\+\)\ \+[[:digit:]]\+\ \+[[:digit:]]\+\ \+\(.*\):\([[:digit:]]*\)\ \+\([0-9\.\:\*]\+\).\+\ \([[:digit:]]*\/[[:alnum:]\-]*\).*/\1 \2 == \3 == \4 \5/' | sort -k 4 -g | sed 's/ == \(.*\) ==/:\1/' | sed 1,2d</command>
<alias>netstat listening ports</alias>
<frequency>360</frequency>
</localfile>
<localfile>
<log_format>full_command</log_format>
<command>last -n 20</command>
<frequency>360</frequency>
</localfile>
<ruleset>
<!-- Default ruleset -->
<decoder_dir>ruleset/decoders</decoder_dir>
<rule_dir>ruleset/rules</rule_dir>
<rule_exclude>0215-policy_rules.xml</rule_exclude>
<list>etc/lists/audit-keys</list>
<list>etc/lists/amazon/aws-eventnames</list>
<list>etc/lists/security-eventchannel</list>
<list>etc/lists/malicious-ioc/malicious-ip</list>
<list>etc/lists/malicious-ioc/malicious-domains</list>
<list>etc/lists/malicious-ioc/malware-hashes</list>
<!-- User-defined ruleset -->
<decoder_dir>etc/decoders</decoder_dir>
<rule_dir>etc/rules</rule_dir>
</ruleset>
<rule_test>
<enabled>yes</enabled>
<threads>1</threads>
<max_sessions>64</max_sessions>
<session_timeout>15m</session_timeout>
</rule_test>
<!-- Configuration for wazuh-authd -->
<auth>
<disabled>no</disabled>
<port>1515</port>
<use_source_ip>no</use_source_ip>
<purge>yes</purge>
<use_password>no</use_password>
<ciphers>HIGH:!ADH:!EXP:!MD5:!RC4:!3DES:!CAMELLIA:@STRENGTH</ciphers>
<!-- <ssl_agent_ca></ssl_agent_ca> -->
<ssl_verify_host>no</ssl_verify_host>
<ssl_manager_cert>etc/sslmanager.cert</ssl_manager_cert>
<ssl_manager_key>etc/sslmanager.key</ssl_manager_key>
<ssl_auto_negotiate>no</ssl_auto_negotiate>
</auth>
<cluster>
<name>wazuh</name>
<node_name>manager</node_name>
<node_type>master</node_type>
<key>c98b6ha9b6169zc5f67rae55ae4z5647</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>wazuh.master</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
</ossec_config>
<ossec_config>
<localfile>
<log_format>syslog</log_format>
<location>/var/ossec/logs/active-responses.log</location>
</localfile>
</ossec_config>
@@ -1,313 +0,0 @@
<ossec_config>
<global>
<jsonout_output>yes</jsonout_output>
<alerts_log>yes</alerts_log>
<logall>no</logall>
<logall_json>no</logall_json>
<email_notification>no</email_notification>
<smtp_server>smtp.example.wazuh.com</smtp_server>
<email_from>wazuh@example.wazuh.com</email_from>
<email_to>recipient@example.wazuh.com</email_to>
<email_maxperhour>12</email_maxperhour>
<email_log_source>alerts.log</email_log_source>
<agents_disconnection_time>10m</agents_disconnection_time>
<agents_disconnection_alert_time>0</agents_disconnection_alert_time>
</global>
<alerts>
<log_alert_level>3</log_alert_level>
<email_alert_level>12</email_alert_level>
</alerts>
<!-- Choose between "plain", "json", or "plain,json" for the format of internal logs -->
<logging>
<log_format>plain</log_format>
</logging>
<remote>
<connection>secure</connection>
<port>1514</port>
<protocol>tcp</protocol>
<queue_size>131072</queue_size>
</remote>
<!-- Policy monitoring -->
<rootcheck>
<disabled>no</disabled>
<check_files>yes</check_files>
<check_trojans>yes</check_trojans>
<check_dev>yes</check_dev>
<check_sys>yes</check_sys>
<check_pids>yes</check_pids>
<check_ports>yes</check_ports>
<check_if>yes</check_if>
<!-- Frequency that rootcheck is executed - every 12 hours -->
<frequency>43200</frequency>
<rootkit_files>etc/rootcheck/rootkit_files.txt</rootkit_files>
<rootkit_trojans>etc/rootcheck/rootkit_trojans.txt</rootkit_trojans>
<skip_nfs>yes</skip_nfs>
</rootcheck>
<wodle name="cis-cat">
<disabled>yes</disabled>
<timeout>1800</timeout>
<interval>1d</interval>
<scan-on-start>yes</scan-on-start>
<java_path>wodles/java</java_path>
<ciscat_path>wodles/ciscat</ciscat_path>
</wodle>
<!-- Osquery integration -->
<wodle name="osquery">
<disabled>yes</disabled>
<run_daemon>yes</run_daemon>
<log_path>/var/log/osquery/osqueryd.results.log</log_path>
<config_path>/etc/osquery/osquery.conf</config_path>
<add_labels>yes</add_labels>
</wodle>
<!-- System inventory -->
<wodle name="syscollector">
<disabled>no</disabled>
<interval>1h</interval>
<scan_on_start>yes</scan_on_start>
<hardware>yes</hardware>
<os>yes</os>
<network>yes</network>
<packages>yes</packages>
<ports all="yes">yes</ports>
<processes>yes</processes>
<!-- Database synchronization settings -->
<synchronization>
<max_eps>10</max_eps>
</synchronization>
</wodle>
<sca>
<enabled>yes</enabled>
<scan_on_start>yes</scan_on_start>
<interval>12h</interval>
<skip_nfs>yes</skip_nfs>
</sca>
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
<indexer>
<enabled>yes</enabled>
<hosts>
<host>https://wazuh1.indexer:9200</host>
<host>https://wazuh2.indexer:9200</host>
<host>https://wazuh3.indexer:9200</host>
</hosts>
<ssl>
<certificate_authorities>
<ca>/etc/ssl/root-ca.pem</ca>
</certificate_authorities>
<certificate>/etc/ssl/filebeat.pem</certificate>
<key>/etc/ssl/filebeat.key</key>
</ssl>
</indexer>
<!-- File integrity monitoring -->
<syscheck>
<disabled>no</disabled>
<!-- Frequency that syscheck is executed default every 12 hours -->
<frequency>43200</frequency>
<scan_on_start>yes</scan_on_start>
<!-- Generate alert when new file detected -->
<alert_new_files>yes</alert_new_files>
<!-- Don't ignore files that change more than 'frequency' times -->
<auto_ignore frequency="10" timeframe="3600">no</auto_ignore>
<!-- Directories to check (perform all possible verifications) -->
<directories>/etc,/usr/bin,/usr/sbin</directories>
<directories>/bin,/sbin,/boot</directories>
<!-- Files/directories to ignore -->
<ignore>/etc/mtab</ignore>
<ignore>/etc/hosts.deny</ignore>
<ignore>/etc/mail/statistics</ignore>
<ignore>/etc/random-seed</ignore>
<ignore>/etc/random.seed</ignore>
<ignore>/etc/adjtime</ignore>
<ignore>/etc/httpd/logs</ignore>
<ignore>/etc/utmpx</ignore>
<ignore>/etc/wtmpx</ignore>
<ignore>/etc/cups/certs</ignore>
<ignore>/etc/dumpdates</ignore>
<ignore>/etc/svc/volatile</ignore>
<!-- File types to ignore -->
<ignore type="sregex">.log$|.swp$</ignore>
<!-- Check the file, but never compute the diff -->
<nodiff>/etc/ssl/private.key</nodiff>
<skip_nfs>yes</skip_nfs>
<skip_dev>yes</skip_dev>
<skip_proc>yes</skip_proc>
<skip_sys>yes</skip_sys>
<!-- Nice value for Syscheck process -->
<process_priority>10</process_priority>
<!-- Maximum output throughput -->
<max_eps>100</max_eps>
<!-- Database synchronization settings -->
<synchronization>
<enabled>yes</enabled>
<interval>5m</interval>
<max_interval>1h</max_interval>
<max_eps>10</max_eps>
</synchronization>
</syscheck>
<!-- Active response -->
<global>
<white_list>127.0.0.1</white_list>
<white_list>^localhost.localdomain$</white_list>
</global>
<command>
<name>disable-account</name>
<executable>disable-account</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>restart-wazuh</name>
<executable>restart-wazuh</executable>
</command>
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>host-deny</name>
<executable>host-deny</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>route-null</name>
<executable>route-null</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>win_route-null</name>
<executable>route-null.exe</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>netsh</name>
<executable>netsh.exe</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<!--
<active-response>
active-response options here
</active-response>
-->
<!-- Log analysis -->
<localfile>
<log_format>command</log_format>
<command>df -P</command>
<frequency>360</frequency>
</localfile>
<localfile>
<log_format>full_command</log_format>
<command>netstat -tulpn | sed 's/\([[:alnum:]]\+\)\ \+[[:digit:]]\+\ \+[[:digit:]]\+\ \+\(.*\):\([[:digit:]]*\)\ \+\([0-9\.\:\*]\+\).\+\ \([[:digit:]]*\/[[:alnum:]\-]*\).*/\1 \2 == \3 == \4 \5/' | sort -k 4 -g | sed 's/ == \(.*\) ==/:\1/' | sed 1,2d</command>
<alias>netstat listening ports</alias>
<frequency>360</frequency>
</localfile>
<localfile>
<log_format>full_command</log_format>
<command>last -n 20</command>
<frequency>360</frequency>
</localfile>
<ruleset>
<!-- Default ruleset -->
<decoder_dir>ruleset/decoders</decoder_dir>
<rule_dir>ruleset/rules</rule_dir>
<rule_exclude>0215-policy_rules.xml</rule_exclude>
<list>etc/lists/audit-keys</list>
<list>etc/lists/amazon/aws-eventnames</list>
<list>etc/lists/security-eventchannel</list>
<list>etc/lists/malicious-ioc/malicious-ip</list>
<list>etc/lists/malicious-ioc/malicious-domains</list>
<list>etc/lists/malicious-ioc/malware-hashes</list>
<!-- User-defined ruleset -->
<decoder_dir>etc/decoders</decoder_dir>
<rule_dir>etc/rules</rule_dir>
</ruleset>
<rule_test>
<enabled>yes</enabled>
<threads>1</threads>
<max_sessions>64</max_sessions>
<session_timeout>15m</session_timeout>
</rule_test>
<!-- Configuration for wazuh-authd -->
<auth>
<disabled>no</disabled>
<port>1515</port>
<use_source_ip>no</use_source_ip>
<purge>yes</purge>
<use_password>no</use_password>
<ciphers>HIGH:!ADH:!EXP:!MD5:!RC4:!3DES:!CAMELLIA:@STRENGTH</ciphers>
<!-- <ssl_agent_ca></ssl_agent_ca> -->
<ssl_verify_host>no</ssl_verify_host>
<ssl_manager_cert>etc/sslmanager.cert</ssl_manager_cert>
<ssl_manager_key>etc/sslmanager.key</ssl_manager_key>
<ssl_auto_negotiate>no</ssl_auto_negotiate>
</auth>
<cluster>
<name>wazuh</name>
<node_name>worker01</node_name>
<node_type>worker</node_type>
<key>c98b6ha9b6169zc5f67rae55ae4z5647</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>wazuh.master</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
</ossec_config>
<ossec_config>
<localfile>
<log_format>syslog</log_format>
<location>/var/ossec/logs/active-responses.log</location>
</localfile>
</ossec_config>

Some files were not shown because too many files have changed in this diff Show More