Puppet Class: phabricator::install

Defined in:
manifests/install.pp

Summary

Installs Arcanist, libphutil and Phabricator.

Overview

Installs Phabricator.



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
# File 'manifests/install.pp', line 6

class phabricator::install {
  assert_private()

  # The `php::packages` class requires `Class['apt::update']` unconditionally,
  # but the `apt::update` class may not have been defined. See
  # https://github.com/voxpupuli/puppet-php/pull/323.
  include apt
  include git
  include php

  if $php::fpm {
    $notify = Class['php::fpm::service']
  } else {
    $notify = []
  }

  php::extension {
    'apcu':
      package_prefix => 'php-';

    ['curl', 'gd', 'mbstring']: ;

    'mysql':
      so_name => 'mysqli';
  }

  # Ensure that the CLI is installed before any extensions are installed. 
  Class['php::cli'] -> Php::Extension <| |>

  vcsrepo {
    default:
      ensure   => 'latest',
      provider => 'git',
      notify   => $notify;

    'arcanist':
      path     => "${phabricator::install_dir}/arcanist",
      source   => 'https://github.com/phacility/arcanist.git',
      revision => $phabricator::arcanist_revision;

    'libphutil':
      path     => "${phabricator::install_dir}/libphutil",
      source   => 'https://github.com/phacility/libphutil.git',
      revision => $phabricator::libphutil_revision;

    'phabricator':
      path     => "${phabricator::install_dir}/phabricator",
      source   => 'https://github.com/phacility/phabricator.git',
      revision => $phabricator::phabricator_revision;
  }

  # These packages are required in order to compile XHPAST.
  ensure_packages(['g++', 'make'])

  exec { 'build_xhpast.php':
    command     => "${phabricator::install_dir}/libphutil/scripts/build_xhpast.php",
    refreshonly => true,
    require     => [
      Class['php::cli'],
      Package['g++'],
      Package['make'],
    ],
    subscribe   => Vcsrepo['libphutil'],
  }

  if $phabricator::install_fonts {
    debconf { 'msttcorefonts/accepted-mscorefonts-eula':
      ensure  => 'present',
      package => 'ttf-mscorefonts-installer',
      type    => 'select',
      value   => bool2str(true),
      before  => Package['ttf-mscorefonts-installer'],
    }

    package { 'ttf-mscorefonts-installer':
      ensure  => 'latest',
    }

    $font_file_ensure = 'link'
  } else {
    $font_file_ensure = 'absent'
  }

  file { "${phabricator::install_dir}/phabricator/resources/font/impact.ttf":
    ensure  => $font_file_ensure,
    target  => '/usr/share/fonts/truetype/msttcorefonts/Impact.ttf',
    require => Vcsrepo['phabricator'],
  }
}