class role::cryptoportfolio { include "base_installation" include "profile::postgresql" $password_seed = lookup("base_installation::puppet_pass_seed") |$key| { {} } postgresql::server::db { 'cryptoportfolio': user => 'cryptoportfolio', password => postgresql_password('cryptoportfolio', generate_password(24, $password_seed, "postgres_cryptoportfolio")), } postgresql::server::pg_hba_rule { 'allow localhost TCP access to cryptoportfolio user': type => 'host', database => 'cryptoportfolio', user => 'cryptoportfolio', address => '127.0.0.1/32', auth_method => 'md5', order => "b0", } postgresql::server::pg_hba_rule { 'allow localhost ip6 TCP access to cryptoportfolio user': type => 'host', database => 'cryptoportfolio', user => 'cryptoportfolio', address => '::1/128', auth_method => 'md5', order => "b0", } class { 'nginx': } nginx::resource::server { 'cryptoportfolio.immae.eu': listen_port => 80, proxy => 'http://localhost:8000', } ensure_packages(["go", "npm", "nodejs", "yarn"]) user { "cryptoportfolio": name => "cryptoportfolio", ensure => "present", managehome => true, home => "/opt/cryptoportfolio", system => true, password => '!!', } $front_version = lookup("cryptoportfolio::front_version") |$key| { {} } $front_sha256 = lookup("cryptoportfolio::front_sha256") |$key| { {} } unless empty($front_version) { file { "/opt/cryptoportfolio/front": ensure => directory, mode => "0700", owner => "cryptoportfolio", group => "cryptoportfolio", } file { "/opt/cryptoportfolio/front/${front_version}": ensure => directory, mode => "0700", owner => "cryptoportfolio", group => "cryptoportfolio", require => File["/opt/cryptoportfolio/front"], } archive { "/opt/cryptoportfolio/front/${front_version}.tar.gz": path => "/opt/cryptoportfolio/front/${front_version}.tar.gz", source => "https://git.immae.eu/releases/cryptoportfolio/front/front_${front_version}.tar.gz", creates => "/opt/cryptoportfolio/front/${front_version}/README.md", checksum_type => "sha256", checksum => $front_sha256, cleanup => false, extract => true, extract_path => "/opt/cryptoportfolio/front/${front_version}", require => File["/opt/cryptoportfolio/front/${front_version}"], } file { "/opt/cryptoportfolio/front/current": ensure => "link", target => "/opt/cryptoportfolio/front/${front_version}", require => Archive["/opt/cryptoportfolio/front/${front_version}.tar.gz"] } } }