Retire repo
Depends-On: https://review.opendev.org/720892 Change-Id: Ie299fa63ab86bb04652424167f81840494473299
This commit is contained in:
parent
b6ad571557
commit
bc8279c3fa
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +0,0 @@
|
|||||||
Gemfile.lock
|
|
||||||
.bundled_gems/
|
|
||||||
.vagrant
|
|
15
Gemfile
15
Gemfile
@ -1,15 +0,0 @@
|
|||||||
source 'https://rubygems.org'
|
|
||||||
|
|
||||||
if File.exists?('/home/zuul/src/git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper')
|
|
||||||
gem_checkout_method = {:path => '/home/zuul/src/git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper'}
|
|
||||||
else
|
|
||||||
gem_checkout_method = {:git => 'https://git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper'}
|
|
||||||
end
|
|
||||||
gem_checkout_method[:require] = false
|
|
||||||
|
|
||||||
group :development, :test, :system_tests do
|
|
||||||
gem 'puppet-openstack_infra_spec_helper',
|
|
||||||
gem_checkout_method
|
|
||||||
end
|
|
||||||
|
|
||||||
# vim:ft=ruby
|
|
51
README.rst
51
README.rst
@ -1,46 +1,9 @@
|
|||||||
puppet-phabricator
|
This project is no longer maintained.
|
||||||
=================
|
|
||||||
|
|
||||||
A puppet module for installing and managing a phabricator instance. This is
|
The contents of this repository are still available in the Git
|
||||||
derived greatly from http://github.com/bloomberg/phabricator-tools
|
source code management system. To see the contents of this
|
||||||
|
repository before it reached its end of life, please check out the
|
||||||
|
previous commit with "git checkout HEAD^1".
|
||||||
|
|
||||||
some notes for now:
|
For any further questions, please email
|
||||||
|
service-discuss@lists.opendev.org or join #opendev on Freenode.
|
||||||
This module should not manage a MySQL or a mail server itself - it should
|
|
||||||
assume that those have been set up by other modules.
|
|
||||||
|
|
||||||
We want to put all config customizations into local.json and not into the
|
|
||||||
database.
|
|
||||||
|
|
||||||
The initial.db file is from bloomberg, I'm not sure it's all that useful
|
|
||||||
to folks.
|
|
||||||
|
|
||||||
We still need to do this in my.cnf ::
|
|
||||||
|
|
||||||
sql_mode=STRICT_ALL_TABLES
|
|
||||||
ft_stopword_file=/phabricator/instances/dev/phabricator/resources/sql/stopwords.txt
|
|
||||||
ft_min_word_len=3
|
|
||||||
ft_boolean_syntax=' |-><()~*:""&^'
|
|
||||||
innodb_buffer_pool_size=600M
|
|
||||||
|
|
||||||
then do::
|
|
||||||
|
|
||||||
REPAIR TABLE phabricator_search.search_documentfield;
|
|
||||||
|
|
||||||
I did not do: https://secure.phabricator.com/book/phabricator/article/configuring_file_domain/ yet, or really think about it.
|
|
||||||
|
|
||||||
I also have not made puppet do anything with::
|
|
||||||
|
|
||||||
sudo /phabricator/instances/dev/phabricator/bin/phd start
|
|
||||||
|
|
||||||
Which are the background daemons.
|
|
||||||
|
|
||||||
storyboard migration
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
The data migration script assumes a storyboard schema in the same mysql server
|
|
||||||
as the phabricator schemas. It sets up users for everyone in storyboard
|
|
||||||
with a password of admin. We'll be doing openid/oauth eventually, so I didn't
|
|
||||||
spend a ton of time on that.
|
|
||||||
|
|
||||||
The apps that are disabled are disabled on purpose.
|
|
||||||
|
8
Rakefile
8
Rakefile
@ -1,8 +0,0 @@
|
|||||||
require 'rubygems'
|
|
||||||
require 'puppetlabs_spec_helper/rake_tasks'
|
|
||||||
require 'puppet-lint/tasks/puppet-lint'
|
|
||||||
PuppetLint.configuration.fail_on_warnings = true
|
|
||||||
PuppetLint.configuration.send('disable_80chars')
|
|
||||||
PuppetLint.configuration.send('disable_autoloader_layout')
|
|
||||||
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
|
||||||
PuppetLint.configuration.send('disable_class_parameter_defaults')
|
|
@ -1,140 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator::certificates
|
|
||||||
#
|
|
||||||
# Sets up SSL certificates for the module.
|
|
||||||
#
|
|
||||||
class phabricator::certificates (
|
|
||||||
# SSL Certificates.
|
|
||||||
$ssl_cert_file = $phabricator::vars::ssl_cert_file,
|
|
||||||
$ssl_cert_file_contents = $phabricator::vars::ssl_cert_file_contents,
|
|
||||||
$ssl_chain_file = $phabricator::vars::ssl_chain_file,
|
|
||||||
$ssl_chain_file_contents = $phabricator::vars::ssl_chain_file_contents,
|
|
||||||
$ssl_key_file = $phabricator::vars::ssl_key_file,
|
|
||||||
$ssl_key_file_contents = $phabricator::vars::ssl_key_file_contents,
|
|
||||||
) {
|
|
||||||
|
|
||||||
# To use the standard ssl-certs package snakeoil certificate, leave both
|
|
||||||
# $ssl_cert_file and $ssl_cert_file_contents empty. To use an existing
|
|
||||||
# certificate, specify its path for $ssl_cert_file and leave
|
|
||||||
# $ssl_cert_file_contents empty. To manage the certificate with puppet,
|
|
||||||
# provide $ssl_cert_file_contents and optionally specify the path to use for
|
|
||||||
# it in $ssl_cert_file.
|
|
||||||
if ($ssl_cert_file == undef) and ($ssl_cert_file_contents == undef) {
|
|
||||||
$cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
|
|
||||||
if ! defined(Package['ssl-cert']) {
|
|
||||||
package { 'ssl-cert':
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if $ssl_cert_file == undef {
|
|
||||||
$cert_file = "/etc/ssl/certs/${::fqdn}.pem"
|
|
||||||
if ! defined(File['/etc/ssl/certs']) {
|
|
||||||
file { '/etc/ssl/certs':
|
|
||||||
ensure => directory,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0755',
|
|
||||||
before => File[$cert_file],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$cert_file = $ssl_cert_file
|
|
||||||
}
|
|
||||||
if $ssl_cert_file_contents != undef {
|
|
||||||
file { $cert_file:
|
|
||||||
ensure => present,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0644',
|
|
||||||
content => $ssl_cert_file_contents,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# To avoid using an intermediate certificate chain, leave both
|
|
||||||
# $ssl_chain_file and $ssl_chain_file_contents empty. To use an existing
|
|
||||||
# chain, specify its path for $ssl_chain_file and leave
|
|
||||||
# $ssl_chain_file_contents empty. To manage the chain with puppet, provide
|
|
||||||
# $ssl_chain_file_contents and optionally specify the path to use for it in
|
|
||||||
# $ssl_chain_file.
|
|
||||||
if ($ssl_chain_file == undef) and ($ssl_chain_file_contents == undef) {
|
|
||||||
$chain_file = undef
|
|
||||||
} else {
|
|
||||||
if $ssl_chain_file == undef {
|
|
||||||
$chain_file = "/etc/ssl/certs/${::fqdn}_intermediate.pem"
|
|
||||||
if ! defined(File['/etc/ssl/certs']) {
|
|
||||||
file { '/etc/ssl/certs':
|
|
||||||
ensure => directory,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0755',
|
|
||||||
before => File[$chain_file],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$chain_file = $ssl_chain_file
|
|
||||||
}
|
|
||||||
if $ssl_chain_file_contents != undef {
|
|
||||||
file { $chain_file:
|
|
||||||
ensure => present,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0644',
|
|
||||||
content => $ssl_chain_file_contents,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# To use the standard ssl-certs package snakeoil key, leave both
|
|
||||||
# $ssl_key_file and $ssl_key_file_contents empty. To use an existing key,
|
|
||||||
# specify its path for $ssl_key_file and leave $ssl_key_file_contents empty.
|
|
||||||
# To manage the key with puppet, provide $ssl_key_file_contents and
|
|
||||||
# optionally specify the path to use for it in $ssl_key_file.
|
|
||||||
if ($ssl_key_file == undef) and ($ssl_key_file_contents == undef) {
|
|
||||||
$key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
|
|
||||||
if ! defined(Package['ssl-cert']) {
|
|
||||||
package { 'ssl-cert':
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if $ssl_key_file == undef {
|
|
||||||
$key_file = "/etc/ssl/private/${::fqdn}.key"
|
|
||||||
if ! defined(File['/etc/ssl/private']) {
|
|
||||||
file { '/etc/ssl/private':
|
|
||||||
ensure => directory,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0700',
|
|
||||||
before => File[$key_file],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$key_file = $ssl_key_file
|
|
||||||
}
|
|
||||||
if $ssl_key_file_contents != undef {
|
|
||||||
file { $key_file:
|
|
||||||
ensure => present,
|
|
||||||
owner => 'root',
|
|
||||||
group => 'root',
|
|
||||||
mode => '0600',
|
|
||||||
content => $ssl_key_file_contents,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator::httpd
|
|
||||||
#
|
|
||||||
# Set up the virtual host for phabricator.
|
|
||||||
#
|
|
||||||
class phabricator::httpd (
|
|
||||||
$httpd_vhost = $phabricator::vars::httpd_vhost,
|
|
||||||
$httpd_docroot = $phabricator::vars::httpd_docroot,
|
|
||||||
) {
|
|
||||||
include ::httpd
|
|
||||||
include ::httpd::ssl
|
|
||||||
include ::httpd::php
|
|
||||||
|
|
||||||
httpd::mod { 'rewrite':
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
|
|
||||||
httpd::mod { 'auth_openid':
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set up Phabricator as TLS.
|
|
||||||
if defined(Class['phabricator::certificates']) {
|
|
||||||
::httpd::vhost { $httpd_vhost:
|
|
||||||
port => 443, # Is required despite not being used.
|
|
||||||
docroot => $httpd_docroot,
|
|
||||||
priority => '50',
|
|
||||||
template => 'phabricator/vhost.erb',
|
|
||||||
ssl => true,
|
|
||||||
vhost_name => $httpd_vhost,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator
|
|
||||||
#
|
|
||||||
# Set up a full, standalone instance of phabricator.
|
|
||||||
#
|
|
||||||
class phabricator (
|
|
||||||
# Database Configurations.
|
|
||||||
$mysql_user_password,
|
|
||||||
$mysql_root_password,
|
|
||||||
$mysql_database = 'phabricator',
|
|
||||||
$mysql_host = 'localhost',
|
|
||||||
$mysql_port = 3306,
|
|
||||||
$mysql_user = 'phabricator',
|
|
||||||
|
|
||||||
# Phabricator working directory
|
|
||||||
$phabricator_dir = '/opt/phabricator',
|
|
||||||
|
|
||||||
# OpenID configuration
|
|
||||||
$auth_location = '/auth/login/RemoteUser:self/',
|
|
||||||
$authopenidsingleidp = 'https://openstackid.org/',
|
|
||||||
|
|
||||||
# SSL Certificates.
|
|
||||||
$ssl_cert_file = undef,
|
|
||||||
$ssl_cert_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
$ssl_chain_file = undef,
|
|
||||||
$ssl_chain_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
$ssl_key_file = undef,
|
|
||||||
$ssl_key_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
|
|
||||||
# Httpd config.
|
|
||||||
$httpd_vhost = $::fqdn,
|
|
||||||
$httpd_admin_email = "webmaster@${::fqdn}",
|
|
||||||
) {
|
|
||||||
|
|
||||||
# Set up the shared configuration.
|
|
||||||
class { '::phabricator::vars':
|
|
||||||
mysql_database => $mysql_database,
|
|
||||||
mysql_host => $mysql_host,
|
|
||||||
mysql_port => $mysql_port,
|
|
||||||
mysql_user => $mysql_user,
|
|
||||||
mysql_user_password => $mysql_user_password,
|
|
||||||
mysql_root_password => $mysql_root_password,
|
|
||||||
phabricator_dir => $phabricator_dir,
|
|
||||||
ssl_cert_file => $ssl_cert_file,
|
|
||||||
ssl_cert_file_contents => $ssl_cert_file_contents,
|
|
||||||
ssl_chain_file => $ssl_chain_file,
|
|
||||||
ssl_chain_file_contents => $ssl_chain_file_contents,
|
|
||||||
ssl_key_file => $ssl_key_file,
|
|
||||||
ssl_key_file_contents => $ssl_key_file_contents,
|
|
||||||
httpd_vhost => $httpd_vhost,
|
|
||||||
httpd_admin_email => $httpd_admin_email,
|
|
||||||
|
|
||||||
before => [
|
|
||||||
Class['Phabricator::Certificates'],
|
|
||||||
Class['Phabricator::Httpd'],
|
|
||||||
Class['Phabricator::Mysql'],
|
|
||||||
Class['Phabricator::Install'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
include ::phabricator::certificates
|
|
||||||
include ::phabricator::mysql
|
|
||||||
|
|
||||||
class { '::phabricator::httpd':
|
|
||||||
require => [
|
|
||||||
Class['phabricator::install'],
|
|
||||||
Class['phabricator::mysql'],
|
|
||||||
Class['phabricator::certificates']
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
class { '::phabricator::install':
|
|
||||||
require => [
|
|
||||||
Class['phabricator::mysql'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,195 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator::install
|
|
||||||
#
|
|
||||||
# Installation of phabricator itself.
|
|
||||||
#
|
|
||||||
class phabricator::install (
|
|
||||||
$phabricator_dir = $phabricator::vars::phabricator_dir,
|
|
||||||
$mysql_database = $phabricator::vars::mysql_database,
|
|
||||||
$mysql_host = $phabricator::vars::mysql_host,
|
|
||||||
$mysql_port = $phabricator::vars::mysql_port,
|
|
||||||
$mysql_user = $phabricator::vars::mysql_user,
|
|
||||||
$mysql_user_password = $phabricator::vars::mysql_user_password,
|
|
||||||
$httpd_vhost = $phabricator::vars::httpd_vhost,
|
|
||||||
) {
|
|
||||||
|
|
||||||
# Dependencies
|
|
||||||
package { [
|
|
||||||
'php5',
|
|
||||||
'php5-mysql',
|
|
||||||
'php5-gd',
|
|
||||||
'php5-dev',
|
|
||||||
'php5-curl',
|
|
||||||
'php-apc',
|
|
||||||
'php5-cli',
|
|
||||||
'php5-json',
|
|
||||||
'sendmail',
|
|
||||||
'python-pygments']:
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
if !defined(Package['git']) {
|
|
||||||
package { 'git':
|
|
||||||
ensure => present
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !defined(Package['libapache2-mod-auth-openid']) {
|
|
||||||
package { 'libapache2-mod-auth-openid':
|
|
||||||
ensure => present
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set "post_max_size" in your PHP configuration to at least 32MB to support
|
|
||||||
# large file uploads.
|
|
||||||
ini_setting { 'Increase post_max_size in php.ini':
|
|
||||||
ensure => present,
|
|
||||||
path => '/etc/php5/apache2/php.ini',
|
|
||||||
section => 'PHP',
|
|
||||||
setting => 'post_max_size',
|
|
||||||
value => '32M',
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
# In production, OPcache should be configured to never revalidate code. This
|
|
||||||
# will slightly improve performance. To do this, disable
|
|
||||||
# "opcache.validate_timestamps" in your PHP configuration.
|
|
||||||
ini_setting { 'Set opcache.validate_timestamps in php.ini':
|
|
||||||
ensure => present,
|
|
||||||
path => '/etc/php5/apache2/php.ini',
|
|
||||||
section => 'opcache',
|
|
||||||
setting => 'opcache.validate_timestamps',
|
|
||||||
value => '0',
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
# PHP setting "always_populate_raw_post_data" should be set to "-1" to avoid
|
|
||||||
# deprecation warnings.
|
|
||||||
ini_setting { 'Disable PHP always_populate_raw_post_data on php.ini':
|
|
||||||
ensure => present,
|
|
||||||
path => '/etc/php5/apache2/php.ini',
|
|
||||||
section => 'PHP',
|
|
||||||
setting => 'always_populate_raw_post_data',
|
|
||||||
value => '-1',
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
file { [$phabricator_dir, "${phabricator_dir}/repo"]:
|
|
||||||
ensure => directory,
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "${phabricator_dir}/phabricator":
|
|
||||||
ensure => latest,
|
|
||||||
provider => git,
|
|
||||||
source => 'https://github.com/phacility/phabricator.git',
|
|
||||||
revision => 'stable',
|
|
||||||
require => [
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Package['git'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "${phabricator_dir}/arcanist":
|
|
||||||
ensure => latest,
|
|
||||||
provider => git,
|
|
||||||
source => 'https://github.com/phacility/arcanist.git',
|
|
||||||
revision => 'stable',
|
|
||||||
require => [
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Package['git'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "${phabricator_dir}/libphutil":
|
|
||||||
ensure => latest,
|
|
||||||
provider => git,
|
|
||||||
source => 'https://github.com/phacility/libphutil.git',
|
|
||||||
revision => 'stable',
|
|
||||||
require => [
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Package['git'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "${phabricator_dir}/libphremoteuser":
|
|
||||||
ensure => latest,
|
|
||||||
provider => git,
|
|
||||||
source => 'https://github.com/psigen/libphremoteuser.git',
|
|
||||||
revision => 'master',
|
|
||||||
require => [
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Package['git', 'libapache2-mod-auth-openid'],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { 'Letting Phabricator know about libphremoteuser...':
|
|
||||||
command => "${phabricator_dir}/phabricator/bin/config set load-libraries '[\"libphremoteuser/src\"]'",
|
|
||||||
subscribe => Vcsrepo["${phabricator_dir}/libphremoteuser"],
|
|
||||||
require => [
|
|
||||||
Vcsrepo["${phabricator_dir}/arcanist"],
|
|
||||||
Vcsrepo["${phabricator_dir}/libphremoteuser"],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {'set-auth_providerconfig':
|
|
||||||
command => "/usr/bin/mysql -u ${mysql_user} -p${mysql_user_password} < ${phabricator_dir}/set-auth_providerconfig.sql",
|
|
||||||
subscribe => File['set-auth_providerconfig.sql'],
|
|
||||||
require => [
|
|
||||||
Vcsrepo["${phabricator_dir}/phabricator"],
|
|
||||||
File['set-auth_providerconfig.sql'],
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Service['Phabricator-daemons']
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
file {'set-auth_providerconfig.sql':
|
|
||||||
ensure => present,
|
|
||||||
path => "${phabricator_dir}/set-auth_providerconfig.sql",
|
|
||||||
content => template('phabricator/set-auth_providerconfig.sql.erb'),
|
|
||||||
}
|
|
||||||
|
|
||||||
file { 'local.json':
|
|
||||||
ensure => present,
|
|
||||||
path => "${phabricator_dir}/phabricator/conf/local/local.json",
|
|
||||||
content => template('phabricator/local.json.erb'),
|
|
||||||
require => Vcsrepo["${phabricator_dir}/phabricator"],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { 'load-initial-db':
|
|
||||||
command => "${phabricator_dir}/phabricator/bin/storage upgrade --force",
|
|
||||||
onlyif => "${phabricator_dir}/phabricator/bin/storage status | grep -q 'Not Applied'",
|
|
||||||
require => [
|
|
||||||
Vcsrepo["${phabricator_dir}/phabricator"],
|
|
||||||
Vcsrepo["${phabricator_dir}/libphutil"],
|
|
||||||
Vcsrepo["${phabricator_dir}/arcanist"],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
service { 'Phabricator-daemons':
|
|
||||||
ensure => running,
|
|
||||||
provider => base,
|
|
||||||
start => "${phabricator_dir}/phabricator/bin/phd start",
|
|
||||||
stop => "${phabricator_dir}/phabricator/bin/phd stop",
|
|
||||||
restart => "${phabricator_dir}/phabricator/bin/phd restart",
|
|
||||||
status => "${phabricator_dir}/phabricator/bin/phd status",
|
|
||||||
subscribe => Vcsrepo["${phabricator_dir}/libphutil"],
|
|
||||||
require => [
|
|
||||||
File[$phabricator_dir],
|
|
||||||
Vcsrepo["${phabricator_dir}/phabricator"],
|
|
||||||
Vcsrepo["${phabricator_dir}/libphutil"],
|
|
||||||
Vcsrepo["${phabricator_dir}/arcanist"],
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator::mysql
|
|
||||||
#
|
|
||||||
# Set up a mysql host for phabricator.
|
|
||||||
#
|
|
||||||
class phabricator::mysql(
|
|
||||||
$mysql_host = $phabricator::vars::mysql_host,
|
|
||||||
$mysql_port = $phabricator::vars::mysql_port,
|
|
||||||
$mysql_user = $phabricator::vars::mysql_user,
|
|
||||||
$mysql_user_password = $phabricator::vars::mysql_user_password,
|
|
||||||
$mysql_root_password = $phabricator::vars::mysql_root_password,
|
|
||||||
) {
|
|
||||||
|
|
||||||
class { '::mysql::server':
|
|
||||||
root_password => $mysql_root_password,
|
|
||||||
remove_default_accounts => true,
|
|
||||||
override_options => {
|
|
||||||
mysqld => {
|
|
||||||
max_allowed_packet => '32M',
|
|
||||||
sql_mode => 'STRICT_ALL_TABLES',
|
|
||||||
ft_stopword_file => '/opt/phabricator/phabricator/resources/sql/stopwords.txt',
|
|
||||||
ft_min_word_len => 3,
|
|
||||||
ft_boolean_syntax => '\' |-><()~*:""&^\'',
|
|
||||||
innodb_buffer_pool_size => '1600M',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
mysql_user { "${mysql_user}@${mysql_host}":
|
|
||||||
provider => 'mysql',
|
|
||||||
password_hash => mysql_password($mysql_user_password),
|
|
||||||
}
|
|
||||||
|
|
||||||
# Phabricator creates a mess of tables. This ensures that we don't have
|
|
||||||
# to create ACL's for all of them.
|
|
||||||
mysql_grant { "${mysql_user}@${mysql_host}/phabricator%.*":
|
|
||||||
privileges => ['ALL'],
|
|
||||||
table => 'phabricator%.*',
|
|
||||||
user => "${mysql_user}@${mysql_host}",
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
#
|
|
||||||
# == Class: phabricator::vars
|
|
||||||
#
|
|
||||||
# Variables, and their defaults, shared between all the submodules. This
|
|
||||||
# module is used as the source of all the shared default values.
|
|
||||||
#
|
|
||||||
class phabricator::vars (
|
|
||||||
# Database Configurations.
|
|
||||||
$mysql_user_password,
|
|
||||||
$mysql_root_password,
|
|
||||||
$mysql_database = 'phabricator',
|
|
||||||
$mysql_host = 'localhost',
|
|
||||||
$mysql_port = 3306,
|
|
||||||
$mysql_user = 'phabricator',
|
|
||||||
|
|
||||||
# Phabricator working directory
|
|
||||||
$phabricator_dir = '/opt/phabricator',
|
|
||||||
|
|
||||||
# SSL Certificates.
|
|
||||||
$ssl_cert_file = undef,
|
|
||||||
$ssl_cert_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
$ssl_chain_file = undef,
|
|
||||||
$ssl_chain_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
$ssl_key_file = undef,
|
|
||||||
$ssl_key_file_contents = undef, # If left empty puppet will not create file.
|
|
||||||
|
|
||||||
# Virtual host config.
|
|
||||||
$httpd_vhost = $::fqdn,
|
|
||||||
$httpd_admin_email = "webmaster@${::fqdn}",
|
|
||||||
) {
|
|
||||||
|
|
||||||
# Non-configurable-options (derived)
|
|
||||||
$httpd_docroot = "${phabricator_dir}/phabricator/webroot"
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
HOSTS:
|
|
||||||
ubuntu-server-1404-x64:
|
|
||||||
roles:
|
|
||||||
- master
|
|
||||||
platform: ubuntu-14.04-amd64
|
|
||||||
box: puppetlabs/ubuntu-14.04-64-nocm
|
|
||||||
box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
|
|
||||||
hypervisor: vagrant
|
|
||||||
CONFIG:
|
|
||||||
log_level: debug
|
|
||||||
type: git
|
|
@ -1,10 +0,0 @@
|
|||||||
HOSTS:
|
|
||||||
centos-70-x64:
|
|
||||||
roles:
|
|
||||||
- master
|
|
||||||
platform: el-7-x86_64
|
|
||||||
hypervisor: none
|
|
||||||
ip: 127.0.0.1
|
|
||||||
CONFIG:
|
|
||||||
type: foss
|
|
||||||
set_env: false
|
|
@ -1,10 +0,0 @@
|
|||||||
HOSTS:
|
|
||||||
ubuntu-14.04-amd64:
|
|
||||||
roles:
|
|
||||||
- master
|
|
||||||
platform: ubuntu-14.04-amd64
|
|
||||||
hypervisor: none
|
|
||||||
ip: 127.0.0.1
|
|
||||||
CONFIG:
|
|
||||||
type: foss
|
|
||||||
set_env: false
|
|
@ -1,10 +0,0 @@
|
|||||||
HOSTS:
|
|
||||||
ubuntu-16.04-amd64:
|
|
||||||
roles:
|
|
||||||
- master
|
|
||||||
platform: ubuntu-16.04-amd64
|
|
||||||
hypervisor: none
|
|
||||||
ip: 127.0.0.1
|
|
||||||
CONFIG:
|
|
||||||
type: foss
|
|
||||||
set_env: false
|
|
@ -1,57 +0,0 @@
|
|||||||
{
|
|
||||||
"mysql.pass": "<%= @mysql_user_password %>",
|
|
||||||
"mysql.user": "<%= @mysql_user %>",
|
|
||||||
"mysql.host": "<%= @mysql_host %>",
|
|
||||||
"mysql.port": "<%= @mysql_port %>",
|
|
||||||
"config.ignore-issues": {
|
|
||||||
"security.security.alternate-file-domain": true
|
|
||||||
},
|
|
||||||
"pygments.enabled": true,
|
|
||||||
"repository.default-local-path": "/opt/phabricator/repo",
|
|
||||||
"phabricator.serious-business": true,
|
|
||||||
"phabricator.base-uri": "https://<%= @httpd_vhost %>/",
|
|
||||||
"phabricator.uninstalled-applications": {
|
|
||||||
"PhabricatorDifferentialApplication": true,
|
|
||||||
"PhabricatorPhrictionApplication": true,
|
|
||||||
"PhabricatorDiffusionApplication": true,
|
|
||||||
"PhabricatorConpherenceApplication": true,
|
|
||||||
"PhabricatorAuditApplication": true,
|
|
||||||
"PhabricatorTokensApplication": true,
|
|
||||||
"PhabricatorLegalpadApplication": true
|
|
||||||
},
|
|
||||||
"maniphest.statuses": {
|
|
||||||
"open": {
|
|
||||||
"name": "Open",
|
|
||||||
"special": "default"
|
|
||||||
},
|
|
||||||
"inprogress": {
|
|
||||||
"name": "In Progress"
|
|
||||||
},
|
|
||||||
"review": {
|
|
||||||
"name": "In Review"
|
|
||||||
},
|
|
||||||
"merged": {
|
|
||||||
"name": "Merged",
|
|
||||||
"name.full": "Closed, Merged",
|
|
||||||
"closed": true,
|
|
||||||
"special": "closed"
|
|
||||||
},
|
|
||||||
"invalid": {
|
|
||||||
"name": "Invalid",
|
|
||||||
"name.full": "Closed, Invalid",
|
|
||||||
"closed": true
|
|
||||||
},
|
|
||||||
"duplicate": {
|
|
||||||
"name": "Duplicate",
|
|
||||||
"name.full": "Closed, Duplicate",
|
|
||||||
"transaction.icon": "fa-times",
|
|
||||||
"special": "duplicate",
|
|
||||||
"closed": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"phabricator.timezone": "UTC",
|
|
||||||
"auth.require-email-verification": false,
|
|
||||||
"auth.require-approval": false,
|
|
||||||
"policy.allow-public": true,
|
|
||||||
"security.require-https": true
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
DELETE FROM phabricator_auth.auth_providerconfig;
|
|
||||||
|
|
||||||
INSERT INTO phabricator_auth.auth_providerconfig
|
|
||||||
SELECT
|
|
||||||
1 as id,
|
|
||||||
"PHID-AUTH-7nztvra7ehvmx2xnmjgc" as phid,
|
|
||||||
"PhabricatorAuthProviderRemoteUser" as providerClass,
|
|
||||||
"RemoteUser" as providerType,
|
|
||||||
"self" as providerDomain,
|
|
||||||
1 as isEnabled,
|
|
||||||
1 as shouldAllowLogin,
|
|
||||||
1 as shouldAllowRegistration,
|
|
||||||
1 as shouldAllowLink,
|
|
||||||
1 as shouldAllowUnlink,
|
|
||||||
1 as shouldTrustEmails,
|
|
||||||
"[]" as properties,
|
|
||||||
1469712430 as dateCreated,
|
|
||||||
1469712430 as dateModified,
|
|
||||||
0 as shouldAutoLogin;
|
|
@ -1,70 +0,0 @@
|
|||||||
# ************************************
|
|
||||||
# Managed by Puppet
|
|
||||||
# ************************************
|
|
||||||
|
|
||||||
# Unconditionally redirect all HTTP traffic for this vhost to HTTPS
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerName <%= @vhost_name %>
|
|
||||||
ServerAdmin <%= scope['phabricator::vars::httpd_admin_email'] %>
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteRule ^/(.*) https://<%= @vhost_name %>/$1 [last,redirect=permanent]
|
|
||||||
LogLevel warn
|
|
||||||
ErrorLog /var/log/apache2/<%= @vhost_name %>_error.log
|
|
||||||
CustomLog /var/log/apache2/<%= @vhost_name %>_access.log combined
|
|
||||||
ServerSignature Off
|
|
||||||
</VirtualHost>
|
|
||||||
|
|
||||||
<VirtualHost *:443>
|
|
||||||
|
|
||||||
ServerName <%= @vhost_name %>
|
|
||||||
ServerAdmin <%= scope['phabricator::vars::httpd_admin_email'] %>
|
|
||||||
|
|
||||||
SSLEngine on
|
|
||||||
SSLProtocol All -SSLv2 -SSLv3
|
|
||||||
# Once the machine is using something to terminate TLS that supports ECDHE
|
|
||||||
# then this should be edited to remove the RSA+AESGCM:RSA+AES so that PFS
|
|
||||||
# only is guaranteed.
|
|
||||||
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!AES256:!aNULL:!eNULL:!MD5:!DSS:!PSK:!SRP
|
|
||||||
SSLHonorCipherOrder on
|
|
||||||
SSLCertificateFile <%= scope['phabricator::certificates::cert_file'] %>
|
|
||||||
SSLCertificateKeyFile <%= scope['phabricator::certificates::key_file'] %>
|
|
||||||
<% unless [nil, :undef].include?(scope['phabricator::certificates::chain_file']) %>
|
|
||||||
SSLCertificateChainFile <%= scope['phabricator::certificates::chain_file'] %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
DocumentRoot <%= @docroot %>
|
|
||||||
<Directory />
|
|
||||||
Options FollowSymLinks
|
|
||||||
AllowOverride None
|
|
||||||
</Directory>
|
|
||||||
<Directory <%= @docroot %>>
|
|
||||||
Options Indexes FollowSymLinks MultiViews
|
|
||||||
AllowOverride None
|
|
||||||
Order allow,deny
|
|
||||||
Allow from all
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
<Location <%= scope['phabricator::auth_location'] %> >
|
|
||||||
AuthType OpenID
|
|
||||||
require valid-user
|
|
||||||
AuthOpenIDSingleIdP <%= scope['phabricator::authopenidsingleidp'] %>
|
|
||||||
</Location>
|
|
||||||
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteRule ^/rsrc/(.*) - [last,qsappend]
|
|
||||||
RewriteRule ^/favicon.ico - [last,qsappend]
|
|
||||||
RewriteRule ^(.*) /index.php?__path__=$1 [B,last,qsappend]
|
|
||||||
|
|
||||||
SetEnv PHABRICATOR_ENV production
|
|
||||||
|
|
||||||
# Possible values include: debug, info, notice, warn, error, crit,
|
|
||||||
# alert, emerg.
|
|
||||||
LogLevel warn
|
|
||||||
|
|
||||||
ErrorLog /var/log/apache2/<%= @vhost_name %>_error.log
|
|
||||||
CustomLog /var/log/apache2/<%= @vhost_name %>_access.log combined
|
|
||||||
|
|
||||||
ServerSignature Off
|
|
||||||
|
|
||||||
</VirtualHost>
|
|
Loading…
Reference in New Issue
Block a user