@@ -143,13 +143,15 @@ pabawi::integrations:
143143 - bolt
144144 - puppetdb
145145
146- # Configure each integration via class parameters
147- pabawi::integrations::bolt::project_path : ' /opt/bolt-project'
148- pabawi::integrations::bolt::command_whitelist :
149- - ' plan run'
150- - ' task run'
146+ # Configure each integration via class parameters using settings hash
147+ pabawi::integrations::bolt::settings :
148+ project_path : ' /opt/bolt-project'
149+ execution_timeout : 300000
151150
152- pabawi::integrations::puppetdb::server_url : ' https://puppetdb.example.com:8081'
151+ pabawi::integrations::puppetdb::settings :
152+ server_url : ' https://puppetdb.example.com'
153+ port : 8081
154+ ssl_enabled : true
153155pabawi::integrations::puppetdb::ssl_ca_source : ' file:///etc/puppetlabs/puppet/ssl/certs/ca.pem'
154156` ` `
155157
@@ -177,7 +179,8 @@ pabawi::integrations:
177179
178180# Configure and control enabled state
179181pabawi::integrations::bolt::enabled: true # or false to disable
180- pabawi::integrations::bolt::project_path: '/opt/bolt-project'
182+ pabawi::integrations::bolt::settings:
183+ project_path: '/opt/bolt-project'
181184` ` `
182185
183186**Benefits:**
@@ -195,10 +198,9 @@ pabawi::integrations:
195198 - bolt
196199
197200pabawi::integrations::bolt::enabled: false # Disabled but configured
198- pabawi::integrations::bolt::project_path: '/opt/bolt-project'
199- pabawi::integrations::bolt::command_whitelist:
200- - 'plan run'
201- - 'task run'
201+ pabawi::integrations::bolt::settings:
202+ project_path: '/opt/bolt-project'
203+ execution_timeout: 300000
202204` ` `
203205
204206This generates `.env` with `BOLT_ENABLED=false`, allowing you to enable it later by simply changing the parameter to `true`.
@@ -252,7 +254,8 @@ For directory-based content (Bolt projects, Ansible inventories, Hiera control r
252254pabawi::integrations:
253255 - bolt
254256
255- pabawi::integrations::bolt::project_path: '/opt/bolt-project'
257+ pabawi::integrations::bolt::settings:
258+ project_path: '/opt/bolt-project'
256259pabawi::integrations::bolt::project_path_source: 'https://github.com/example/bolt-project.git'
257260` ` `
258261
@@ -288,7 +291,8 @@ pabawi::integrations:
288291 - bolt
289292
290293pabawi::integrations::bolt::manage_package: true # Installs puppet-bolt package
291- pabawi::integrations::bolt::project_path: '/opt/bolt-project'
294+ pabawi::integrations::bolt::settings:
295+ project_path: '/opt/bolt-project'
292296` ` `
293297
294298**Note:** PuppetDB and Puppet Server integrations don't manage packages as they're external services.
@@ -694,13 +698,241 @@ pabawi::integrations::bolt::settings:
694698 project_path : ' /opt/bolt-project'
695699` ` `
696700
701+ ### Complete Hiera Configuration Examples
702+
703+ #### NPM Installation with Full Integration Stack
704+
705+ Complete Hiera configuration for NPM-based installation with Bolt, Hiera, PuppetDB, and Puppet Server integrations:
706+
707+ ` ` ` yaml
708+ ---
709+ # File: data/common.yaml or data/nodes/<node-fqdn>.yaml
710+
711+ # Installation method
712+ pabawi::install_manage : true
713+ pabawi::install_class : ' pabawi::install::npm'
714+
715+ # NPM installation settings
716+ pabawi::install::npm::install_dir : ' /opt/pabawi'
717+ pabawi::install::npm::repo_url : ' https://github.com/example42/pabawi.git'
718+ pabawi::install::npm::version : ' main'
719+ pabawi::install::npm::user : ' pabawi'
720+ pabawi::install::npm::group : ' pabawi'
721+ pabawi::install::npm::auth_enabled : true
722+ pabawi::install::npm::jwt_secret : ' change-this-to-a-secure-random-string'
723+ pabawi::install::npm::log_level : ' info'
724+ pabawi::install::npm::concurrent_execution_limit : 10
725+
726+ # Proxy configuration
727+ pabawi::proxy_manage : true
728+ pabawi::proxy_class : ' pabawi::proxy::nginx'
729+
730+ # Nginx proxy settings
731+ pabawi::proxy::nginx::server_name : ' pabawi.example.com'
732+ pabawi::proxy::nginx::listen_port : 443
733+ pabawi::proxy::nginx::backend_port : 3000
734+ pabawi::proxy::nginx::ssl_enable : true
735+ pabawi::proxy::nginx::ssl_self_signed : false
736+ pabawi::proxy::nginx::ssl_cert : ' /etc/ssl/certs/pabawi.example.com.crt'
737+ pabawi::proxy::nginx::ssl_key : ' /etc/ssl/private/pabawi.example.com.key'
738+
739+ # Enable integrations
740+ pabawi::integrations :
741+ - bolt
742+ - hiera
743+ - puppetdb
744+ - puppetserver
745+
746+ # Bolt Integration
747+ pabawi::integrations::bolt::enabled : true
748+ pabawi::integrations::bolt::manage_package : true
749+ pabawi::integrations::bolt::settings :
750+ project_path : ' /opt/pabawi-bolt-project'
751+ execution_timeout : 300000
752+ pabawi::integrations::bolt::project_path_source : ' https://github.com/example/bolt-project.git'
753+
754+ # Hiera Integration
755+ pabawi::integrations::hiera::enabled : true
756+ pabawi::integrations::hiera::manage_package : false
757+ pabawi::integrations::hiera::settings :
758+ control_repo_path : ' /opt/pabawi-control-repo'
759+ config_path : ' hiera.yaml'
760+ environments :
761+ - ' production'
762+ - ' development'
763+ - ' staging'
764+ fact_source_prefer_puppetdb : true
765+ pabawi::integrations::hiera::control_repo_source : ' https://github.com/example/control-repo.git'
766+
767+ # PuppetDB Integration
768+ pabawi::integrations::puppetdb::enabled : true
769+ pabawi::integrations::puppetdb::settings :
770+ server_url : ' https://puppetdb.example.com'
771+ port : 8081
772+ ssl_enabled : true
773+ ssl_ca : ' /etc/pabawi/ssl/puppetdb/ca.pem'
774+ ssl_cert : ' /etc/pabawi/ssl/puppetdb/cert.pem'
775+ ssl_key : ' /etc/pabawi/ssl/puppetdb/key.pem'
776+ ssl_reject_unauthorized : true
777+ pabawi::integrations::puppetdb::ssl_ca_source : ' file:///etc/puppetlabs/puppet/ssl/certs/ca.pem'
778+ pabawi::integrations::puppetdb::ssl_cert_source : ' file:///etc/puppetlabs/puppet/ssl/certs/%{facts.fqdn}.pem'
779+ pabawi::integrations::puppetdb::ssl_key_source : ' file:///etc/puppetlabs/puppet/ssl/private_keys/%{facts.fqdn}.pem'
780+
781+ # Puppet Server Integration
782+ pabawi::integrations::puppetserver::enabled : true
783+ pabawi::integrations::puppetserver::settings :
784+ server_url : ' https://puppet.example.com'
785+ port : 8140
786+ ssl_enabled : true
787+ ssl_ca : ' /etc/pabawi/ssl/puppetserver/ca.pem'
788+ ssl_cert : ' /etc/pabawi/ssl/puppetserver/cert.pem'
789+ ssl_key : ' /etc/pabawi/ssl/puppetserver/key.pem'
790+ ssl_reject_unauthorized : true
791+ inactivity_threshold : 3600
792+ cache_ttl : 300000
793+ circuit_breaker_threshold : 5
794+ circuit_breaker_timeout : 60000
795+ circuit_breaker_reset_timeout : 30000
796+ pabawi::integrations::puppetserver::ssl_ca_source : ' file:///etc/puppetlabs/puppet/ssl/certs/ca.pem'
797+ pabawi::integrations::puppetserver::ssl_cert_source : ' file:///etc/puppetlabs/puppet/ssl/certs/%{facts.fqdn}.pem'
798+ pabawi::integrations::puppetserver::ssl_key_source : ' file:///etc/puppetlabs/puppet/ssl/private_keys/%{facts.fqdn}.pem'
799+ ` ` `
800+
801+ #### Docker Installation with Full Integration Stack
802+
803+ Complete Hiera configuration for Docker-based installation with the same integrations:
804+
805+ ` ` ` yaml
806+ ---
807+ # File: data/common.yaml or data/nodes/<node-fqdn>.yaml
808+
809+ # Installation method
810+ pabawi::install_manage : true
811+ pabawi::install_class : ' pabawi::install::docker'
812+
813+ # Docker installation settings
814+ pabawi::install::docker::install_dir : ' /opt/pabawi'
815+ pabawi::install::docker::image : ' example42/pabawi:latest'
816+ pabawi::install::docker::container_name : ' pabawi'
817+ pabawi::install::docker::backend_port : 3000
818+ pabawi::install::docker::user : ' pabawi'
819+ pabawi::install::docker::group : ' pabawi'
820+ pabawi::install::docker::auth_enabled : true
821+ pabawi::install::docker::jwt_secret : ' change-this-to-a-secure-random-string'
822+ pabawi::install::docker::log_level : ' info'
823+ pabawi::install::docker::concurrent_execution_limit : 10
824+ pabawi::install::docker::volumes :
825+ - ' /opt/pabawi-bolt-project:/app/bolt-project:ro'
826+ - ' /opt/pabawi-control-repo:/app/control-repo:ro'
827+ - ' /etc/pabawi/ssl:/app/ssl:ro'
828+ - ' /opt/pabawi/data:/app/data'
829+
830+ # Proxy configuration
831+ pabawi::proxy_manage : true
832+ pabawi::proxy_class : ' pabawi::proxy::nginx'
833+
834+ # Nginx proxy settings
835+ pabawi::proxy::nginx::server_name : ' pabawi.example.com'
836+ pabawi::proxy::nginx::listen_port : 443
837+ pabawi::proxy::nginx::backend_port : 3000
838+ pabawi::proxy::nginx::ssl_enable : true
839+ pabawi::proxy::nginx::ssl_self_signed : false
840+ pabawi::proxy::nginx::ssl_cert : ' /etc/ssl/certs/pabawi.example.com.crt'
841+ pabawi::proxy::nginx::ssl_key : ' /etc/ssl/private/pabawi.example.com.key'
842+
843+ # Enable integrations
844+ pabawi::integrations :
845+ - bolt
846+ - hiera
847+ - puppetdb
848+ - puppetserver
849+
850+ # Bolt Integration
851+ pabawi::integrations::bolt::enabled : true
852+ pabawi::integrations::bolt::manage_package : true
853+ pabawi::integrations::bolt::settings :
854+ project_path : ' /app/bolt-project' # Path inside container
855+ execution_timeout : 300000
856+ pabawi::integrations::bolt::project_path_source : ' https://github.com/example/bolt-project.git'
857+
858+ # Hiera Integration
859+ pabawi::integrations::hiera::enabled : true
860+ pabawi::integrations::hiera::manage_package : false
861+ pabawi::integrations::hiera::settings :
862+ control_repo_path : ' /app/control-repo' # Path inside container
863+ config_path : ' hiera.yaml'
864+ environments :
865+ - ' production'
866+ - ' development'
867+ - ' staging'
868+ fact_source_prefer_puppetdb : true
869+ pabawi::integrations::hiera::control_repo_source : ' https://github.com/example/control-repo.git'
870+
871+ # PuppetDB Integration
872+ pabawi::integrations::puppetdb::enabled : true
873+ pabawi::integrations::puppetdb::settings :
874+ server_url : ' https://puppetdb.example.com'
875+ port : 8081
876+ ssl_enabled : true
877+ ssl_ca : ' /app/ssl/puppetdb/ca.pem' # Path inside container
878+ ssl_cert : ' /app/ssl/puppetdb/cert.pem'
879+ ssl_key : ' /app/ssl/puppetdb/key.pem'
880+ ssl_reject_unauthorized : true
881+ pabawi::integrations::puppetdb::ssl_ca_source : ' file:///etc/puppetlabs/puppet/ssl/certs/ca.pem'
882+ pabawi::integrations::puppetdb::ssl_cert_source : ' file:///etc/puppetlabs/puppet/ssl/certs/%{facts.fqdn}.pem'
883+ pabawi::integrations::puppetdb::ssl_key_source : ' file:///etc/puppetlabs/puppet/ssl/private_keys/%{facts.fqdn}.pem'
884+
885+ # Puppet Server Integration
886+ pabawi::integrations::puppetserver::enabled : true
887+ pabawi::integrations::puppetserver::settings :
888+ server_url : ' https://puppet.example.com'
889+ port : 8140
890+ ssl_enabled : true
891+ ssl_ca : ' /app/ssl/puppetserver/ca.pem' # Path inside container
892+ ssl_cert : ' /app/ssl/puppetserver/cert.pem'
893+ ssl_key : ' /app/ssl/puppetserver/key.pem'
894+ ssl_reject_unauthorized : true
895+ inactivity_threshold : 3600
896+ cache_ttl : 300000
897+ circuit_breaker_threshold : 5
898+ circuit_breaker_timeout : 60000
899+ circuit_breaker_reset_timeout : 30000
900+ pabawi::integrations::puppetserver::ssl_ca_source : ' file:///etc/puppetlabs/puppet/ssl/certs/ca.pem'
901+ pabawi::integrations::puppetserver::ssl_cert_source : ' file:///etc/puppetlabs/puppet/ssl/certs/%{facts.fqdn}.pem'
902+ pabawi::integrations::puppetserver::ssl_key_source : ' file:///etc/puppetlabs/puppet/ssl/private_keys/%{facts.fqdn}.pem'
903+ ` ` `
904+
905+ #### Key Differences Between NPM and Docker Configurations
906+
907+ **NPM Installation:**
908+ - ` .env` file location: `/opt/pabawi/backend/.env`
909+ - Paths reference host filesystem directly
910+ - Bolt project path : ` /opt/pabawi-bolt-project`
911+ - Control repo path : ` /opt/pabawi-control-repo`
912+ - SSL certificates : ` /etc/pabawi/ssl/<integration>/`
913+
914+ **Docker Installation:**
915+ - `.env` file location : ` /opt/pabawi/.env` (mounted into container)
916+ - Paths reference container filesystem (mounted volumes)
917+ - Bolt project path : ` /app/bolt-project` (mounted from `/opt/pabawi-bolt-project`)
918+ - Control repo path : ` /app/control-repo` (mounted from `/opt/pabawi-control-repo`)
919+ - SSL certificates : ` /app/ssl/<integration>/` (mounted from `/etc/pabawi/ssl`)
920+ - Requires volume mounts in `pabawi::install::docker::volumes`
921+
922+ **Important Notes:**
923+ 1. Replace `example.com` with your actual domain
924+ 2. Change JWT secret to a secure random string
925+ 3. Update git repository URLs to your actual repositories
926+ 4. Adjust SSL certificate paths if using different locations
927+ 5. For Docker, ensure volume mounts align with paths in settings
928+ 6. Use Puppet facts (e.g., `%{facts.fqdn}`) for dynamic certificate paths
929+
697930# # Reference
698931
699932See [REFERENCE.md](REFERENCE.md) for detailed parameter documentation generated from Puppet Strings.
700933
701934# # Limitations
702935
703- - Currently tested on RedHat/CentOS 7+ and Ubuntu 18.04+
704936- Docker installation method requires Docker to be available
705937- SSL certificate management requires proper file permissions
706938- Git repository cloning requires git to be installed
0 commit comments