Skip to content

Commit ef42340

Browse files
authored
Merge pull request #8 from example42/020
docs(puppet-pabawi): update integration configuration examples to use…
2 parents 52fbff9 + ee79a4e commit ef42340

File tree

1 file changed

+246
-14
lines changed

1 file changed

+246
-14
lines changed

README.md

Lines changed: 246 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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
153155
pabawi::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
179181
pabawi::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
197200
pabawi::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

204206
This 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
252254
pabawi::integrations:
253255
- bolt
254256
255-
pabawi::integrations::bolt::project_path: '/opt/bolt-project'
257+
pabawi::integrations::bolt::settings:
258+
project_path: '/opt/bolt-project'
256259
pabawi::integrations::bolt::project_path_source: 'https://github.com/example/bolt-project.git'
257260
```
258261

@@ -288,7 +291,8 @@ pabawi::integrations:
288291
- bolt
289292
290293
pabawi::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

699932
See [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

Comments
 (0)