diff --git a/profile/manifests/docker.pp b/profile/manifests/docker.pp index c2709ada4b8a35e3a8c2e00fb6d5a89f5ed1d188..1f8938ca3151096e59522eb7320b34287cf361dd 100644 --- a/profile/manifests/docker.pp +++ b/profile/manifests/docker.pp @@ -1,4 +1,5 @@ # Install Docker class profile::docker { include docker + include docker::compose } diff --git a/profile/manifests/onlyoffice.pp b/profile/manifests/onlyoffice.pp new file mode 100644 index 0000000000000000000000000000000000000000..1c0f1b584bee55abb869815790ed85959ed9e8a4 --- /dev/null +++ b/profile/manifests/onlyoffice.pp @@ -0,0 +1,81 @@ +# An ONLYOFFICE installation based on Docker +class profile::onlyoffice ( + String $image_tag = 'latest', + String $jwt_secret = '', + Boolean $skip_fonts_generation = false, +) { + + $network = 'onlyoffice' + + docker_network { $network: + ensure => present, + subnet => '172.19.0.0/24', + gateway => '172.19.0.1', + ip_range => '172.19.0.0/29', + } + + docker::run { 'onlyoffice-documentserver': + image => "infrarednetwork/onlyoffice-documentserver:${image_tag}", + net => $network, + env => [ + 'RABBITMQ_SERVER_URL=amqp://guest:guest@onlyoffice-rabbitmq', + 'REDIS_SERVER_HOST=onlyoffice-redis', + 'REDIS_SERVER_PORT=6379', + 'POSTGRESQL_SERVER_HOST=onlyoffice-postgresql', + 'POSTGRESQL_SERVER_PORT=5432', + 'POSTGRESQL_SERVER_DB_NAME=onlyoffice', + 'POSTGRESQL_SERVER_USER=onlyoffice', + 'POSTGRESQL_SERVER_PASS=onlyoffice', + "JWT_SECRET=${jwt_secret}", + "SKIP_FONTS_GENERATION=${skip_fonts_generation}", + ], + ports => [ + '8000:8000', + '8080:8080', + ], + depends => [ + 'onlyoffice-postgresql', + 'onlyoffice-redis', + 'onlyoffice-rabbitmq', + ], + volumes => [ + 'onlyoffice-log:/var/log/onlyoffice', + 'onlyoffice-www-data:/var/www/onlyoffice/Data', + 'onlyoffice-lib:/var/lib/onlyoffice', + 'system-custom-fonts:/usr/share/fonts/truetype/custom', + ], + require => [ + Docker::Run['onlyoffice-redis'], + Docker::Run['onlyoffice-rabbitmq'], + Docker::Run['onlyoffice-postgresql'], + ], + } + + docker::run { 'onlyoffice-redis': + image => 'redis:alpine', + net => $network, + command => 'redis-server --appendonly yes', + expose => '6379', + volumes => [ 'redis-data:/data' ], + } + + docker::run { 'onlyoffice-rabbitmq': + image => 'rabbitmq:alpine', + net => $network, + expose => '5672', + volumes => [ 'rabbitmq-home:/var/lib/rabbitmq' ], + } + + docker::run { 'onlyoffice-postgresql': + image => 'postgres', + net => $network, + env => [ + 'POSTGRES_DB=onlyoffice', + 'POSTGRES_USER=onlyoffice', + 'POSTGRES_PASSWORD=onlyoffice', + ], + expose => '5432', + volumes => [ 'postgresql-data:/var/lib/postgresql/data' ], + } + +} diff --git a/role/manifests/onlyoffice.pp b/role/manifests/onlyoffice.pp index 31c632918d5494f09771f75328bc0b75ee12b6c5..81c1b799bbf827f3567e6ad02152ee5f90b64609 100644 --- a/role/manifests/onlyoffice.pp +++ b/role/manifests/onlyoffice.pp @@ -1,4 +1,5 @@ # Install OnlyOffice class role::onlyoffice { include profile::docker + include profile::onlyoffice }