- ensure_packages(["go", "npm", "nodejs", "yarn"])
-
- file { [
- "${cf_home}/go/",
- "${cf_home}/go/src",
- "${cf_home}/go/src/immae.eu",
- "${cf_home}/go/src/immae.eu/Immae",
- "${cf_home}/go/src/immae.eu/Immae/Projets",
- "${cf_home}/go/src/immae.eu/Immae/Projets/Cryptomonnaies",
- "${cf_home}/go/src/immae.eu/Immae/Projets/Cryptomonnaies/Cryptoportfolio",
- $cf_front_app]:
- ensure => "directory",
- mode => "0700",
- owner => $cf_user,
- group => $cf_group,
- require => User[$cf_user],
- }
-
- archive { "${cf_home}/${front_version}.tar.gz":
- path => "${cf_home}/${front_version}.tar.gz",
- source => "https://git.immae.eu/releases/cryptoportfolio/front/front_${front_version}.tar.gz",
- checksum_type => "sha256",
- checksum => $front_sha256,
- cleanup => false,
- extract => true,
- user => "cryptoportfolio",
- username => $facts["ec2_metadata"]["hostname"],
- password => generate_password(24, $password_seed, "ldap"),
- extract_path => $cf_front_app,
- require => [User[$cf_user], File[$cf_front_app]],
- }
-
- file { "${cf_home}/front":
- ensure => "link",
- target => $cf_front_app,
- before => File[$cf_front_app],
- } ~>
- exec { "remove old ${cf_front_app} directory":
- refreshonly => true,
- user => $cf_user,
- command => "/usr/bin/rm -rf ${cf_front_app}",
- before => File[$cf_front_app],
- }
-
- exec { "go-get-dep":
- user => $cf_user,
- environment => ["HOME=${cf_home}"],
- creates => "${cf_home}/go/bin/dep",
- command => "/usr/bin/go get -u github.com/golang/dep/cmd/dep",
- require => User[$cf_user],
- }
-
- exec { "go-cryptoportfolio-dependencies":
- cwd => $cf_front_app,
- user => $cf_user,
- environment => ["HOME=${cf_home}"],
- creates => "${cf_front_app}/vendor",
- command => "${cf_home}/go/bin/dep ensure",
- require => [Exec["go-get-dep"], Archive["${cf_home}/${front_version}.tar.gz"]],
- }
-
- exec { "go-cryptoportfolio-app":
- cwd => $cf_front_app_api_workdir,
- user => $cf_user,
- environment => ["HOME=${cf_home}"],
- creates => $cf_front_app_api_bin,
- command => "/usr/bin/make build",
- require => Exec["go-cryptoportfolio-dependencies"],
- }
-
- file { "/etc/systemd/system/cryptoportfolio-app.service":
- mode => "0644",
- owner => "root",
- group => "root",
- content => template("role/cryptoportfolio/cryptoportfolio-app.service.erb"),
- notify => Exec["systemctl daemon-reload"],
- }
-
- service { 'cryptoportfolio-app':
- enable => true,
- ensure => "running",
- subscribe => [Exec["go-cryptoportfolio-app"], Exec["web-cryptoportfolio-build"]],
- require => [
- File["/etc/systemd/system/cryptoportfolio-app.service"],
- Postgresql::Server::Db[$cf_pg_db]
- ],
- } ~>
- exec { "dump $cf_pg_db structure":
- refreshonly => true,
- user => $::profile::postgresql::pg_user,
- group => $::profile::postgresql::pg_user,
- command => "/usr/bin/pg_dump --schema-only --clean --no-publications $cf_pg_db > /var/lib/postgres/${cf_pg_db}.schema",
- }
-
- file { $cf_front_app_api_conf:
- owner => $cf_user,
- group => $cf_group,
- mode => "0600",
- content => template("role/cryptoportfolio/api_conf.toml.erb"),
- }
-
- file { $cf_front_app_static_conf:
- owner => $cf_user,
- group => $cf_group,
- mode => "0600",
- content => template("role/cryptoportfolio/static_conf.env.erb"),
- notify => Exec["remove build ${cf_front_app}/cmd/web/build/"],
- }
-
- exec { "web-cryptoportfolio-dependencies":
- cwd => "${cf_front_app}/cmd/web",
- environment => ["HOME=${cf_home}"],
- command => "/usr/bin/make install",
- creates => "${cf_front_app}/cmd/web/node_modules",
- notify => Exec["remove build ${cf_front_app}/cmd/web/build/"],
- require => [Package["npm"], Package["nodejs"], Package["yarn"]]
- }
-
- exec { "remove build ${cf_front_app}/cmd/web/build/":
- command => "/usr/bin/rm -rf '${cf_front_app}/cmd/web/build/'",
- refreshonly => true,
- before => Exec["web-cryptoportfolio-build"]
- }
-
- exec { "web-cryptoportfolio-build":
- cwd => "${cf_front_app}/cmd/web",
- environment => ["HOME=${cf_home}"],
- path => ["${cf_front_app}/cmd/web/node_modules/.bin/", "/usr/bin"],
- command => "/usr/bin/make static ENV=${cf_env}",
- creates => "${cf_front_app}/cmd/web/build/static",
- require => [File[$cf_front_app_static_conf], Exec["web-cryptoportfolio-dependencies"]]
- }