summaryrefslogtreecommitdiffstats
path: root/modules/ttrss/manifests/init.pp
blob: e7c9d2f123ee1984d997d82d1fab58ec487ef510 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
class ttrss($dbpath) {
  include systemd

  package {
    [
      "tt-rss",
      "postgresql",
      "php-pgsql",
      "php-fpm",
    ]:
      ensure => installed;
  }

  file {
    $dbpath:
      ensure => directory,
      owner => 'postgres',
      group => 'postgres',
      require => Package["postgresql"];
    "$dbpath/data":
      ensure => directory,
      owner => 'postgres',
      group => 'postgres',
      require => [
        Package["postgresql"],
        File[$dbpath],
      ];
    "/etc/systemd/system/postgresql.service.d":
      ensure => directory;
    "/etc/systemd/system/postgresql.service.d/override.conf":
      content => template('ttrss/postgres-service'),
      notify => Exec["/usr/bin/systemctl daemon-reload"],
      require => File["/etc/systemd/system/postgresql.service.d"];
    "/etc/webapps/tt-rss/config.php":
      source => "puppet:///modules/ttrss/config.php",
      require => Package["tt-rss"];
    "/etc/pacman.d/hooks":
      ensure => directory;
    "/etc/pacman.d/hooks/tt-rss.hook":
      source => "puppet:///modules/ttrss/pacman-hook",
      require => [
        File["/etc/pacman.d/hooks"],
        Package["tt-rss"],
      ]
  }

  exec { "initialize db path":
    command => "/usr/bin/initdb -D $dbpath/data",
    user => 'postgres',
    creates => "$dbpath/data/PG_VERSION",
    require => [
      File["$dbpath/data"],
      Package["postgresql"],
    ];
  }

  service { "postgresql":
    ensure => running,
    enable => true,
    require => [
      Package["postgresql"],
      Exec["initialize db path"],
    ];
  }

  exec { "create db user":
    provider => shell,
    command => "createuser -d ttrss",
    user => 'postgres',
    unless => "psql -Atc 'select usename from pg_catalog.pg_user' | grep -F ttrss",
    require => [
      Package["postgresql"],
      Service["postgresql"],
    ];
  }

  exec { "create db":
    provider => shell,
    command => "createdb -U ttrss ttrss",
    user => 'postgres',
    unless => "psql -Atc 'select datname from pg_catalog.pg_database' | grep -F ttrss",
    require => [
      Exec["create db user"],
      Package["postgresql"],
      Service["postgresql"],
    ];
  }

  exec { "fixup php.ini":
    provider => shell,
    command => "sed -i 's/^;\\(extension=.*pgsql\\)$/\\1/' /etc/php/php.ini",
    unless => "grep -q '^extension=pgsql$' /etc/php/php.ini && grep -q '^extension=pdo_pgsql$' /etc/php/php.ini",
    require => Package["php-pgsql"];
  }

  exec { "initialize tt-rss db":
    provider => shell,
    command => "psql ttrss -U ttrss -f /usr/share/webapps/tt-rss/schema/ttrss_schema_pgsql.sql",
    user => 'postgres',
    unless => "psql -d ttrss -Atc 'select relname from pg_catalog.pg_class;' | grep -q '^ttrss'",
    require => [
      Package["postgresql"],
      Service["postgresql"],
      Exec["create db"],
      Package["tt-rss"],
      File["/etc/webapps/tt-rss/config.php"],
    ]
  }

  service { "tt-rss":
    ensure => running,
    enable => true,
    require => [
      Package["tt-rss"],
      Exec["fixup php.ini"],
      File["/etc/webapps/tt-rss/config.php"],
      Exec["create db"],
    ]
  }

  service { "php-fpm":
    ensure => running,
    enable => true,
    require => Package["php-fpm"];
  }
}