Initial Chef repository

This commit is contained in:
Greg Karékinian
2015-07-21 19:45:23 +02:00
parent 7e5401fc71
commit ee4079fa85
1151 changed files with 185163 additions and 0 deletions

20
cookbooks/mediawiki/.gitignore vendored Normal file
View File

@@ -0,0 +1,20 @@
*~
*#
.#*
\#*#
.*.sw[a-z]
*.un~
pkg/
# Berkshelf
.vagrant
/cookbooks
Berksfile.lock
# Bundler
Gemfile.lock
bin/*
.bundle/*
.kitchen/
.kitchen.local.yml

View File

@@ -0,0 +1,22 @@
---
driver:
name: vagrant
provisioner:
name: chef_solo
platforms:
- name: centos-6.5
driver:
box: centos-6.5
box_url: https://vagrantcloud.com/baremettle/centos-6.5/version/1/provider/libvirt.box
# - name: debian-7.5
# driver:
# box: debian-7.5
# box_url: https://vagrantcloud.com/baremettle/debian-7.5/version/1/provider/libvirt.box
suites:
- name: default
run_list:
- "recipe[mediawiki::default]"
attributes:

View File

@@ -0,0 +1,4 @@
source "https://supermarket.getchef.com"
metadata

View File

@@ -0,0 +1,9 @@
# 0.1.0
Initial release of mediawiki
* Enhancements
* an enhancement
* Bug Fixes
* a bug fix

View File

@@ -0,0 +1,18 @@
source 'https://rubygems.org'
gem 'berkshelf'
# Uncomment these lines if you want to live on the Edge:
#
# group :development do
# gem "berkshelf", github: "berkshelf/berkshelf"
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.5.2"
# end
#
# group :plugins do
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
# end
gem 'test-kitchen'
gem 'kitchen-vagrant'

View File

@@ -0,0 +1,3 @@
Copyright (C) 2014 YOUR_NAME
All rights reserved - Do Not Redistribute

View File

@@ -0,0 +1,88 @@
Mediawiki Cookbook
==================
Installs/Configures mediawiki
Requirements
------------
### Platform:
* Centos
* Debian
### Cookbooks:
* apache2
* php
* mysql
* database
Attributes
----------
<table>
<tr>
<td>Attribute</td>
<td>Description</td>
<td>Default</td>
</tr>
<tr>
<td><code>node['mediawiki']['version']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['database']['name']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['database']['user']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['database']['password']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['server_name']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['sciptpath']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['admin_user']</code></td>
<td></td>
<td><code></code></td>
</tr>
<tr>
<td><code>node['mediawiki']['admin_password']</code></td>
<td></td>
<td><code></code></td>
</tr>
</table>
Recipes
-------
### mediawiki::default
Installs/Configures mediawiki
License and Author
------------------
Author:: pulsation
Copyright:: 2014, pulsation
License:: BSD

View File

@@ -0,0 +1,12 @@
# encoding: utf-8
require 'bundler'
require 'bundler/setup'
require 'berkshelf/thor'
begin
require 'kitchen/thor_tasks'
Kitchen::ThorTasks.new
rescue LoadError
puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
end

88
cookbooks/mediawiki/Vagrantfile vendored Normal file
View File

@@ -0,0 +1,88 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.require_version ">= 1.5.0"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.
config.vm.hostname = "mediawiki-berkshelf"
# Set the version of chef to install using the vagrant-omnibus plugin
config.omnibus.chef_version = :latest
# Every Vagrant virtual environment requires a box to build off of.
# If this value is a shorthand to a box in Vagrant Cloud then
# config.vm.box_url doesn't need to be specified.
config.vm.box = "chef/ubuntu-14.04"
# The url from where the 'config.vm.box' box will be fetched if it
# is not a Vagrant Cloud box and if it doesn't already exist on the
# user's system.
# config.vm.box_url = "https://vagrantcloud.com/chef/ubuntu-14.04/version/1/provider/virtualbox.box"
# Assign this VM to a host-only network IP, allowing you to access it
# via the IP. Host-only networks can talk to the host machine as well as
# any other machines on the same network, but cannot be accessed (through this
# network interface) by any external networks.
config.vm.network :private_network, type: "dhcp"
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.
# The path to the Berksfile to use with Vagrant Berkshelf
# config.berkshelf.berksfile_path = "./Berksfile"
# Enabling the Berkshelf plugin. To enable this globally, add this configuration
# option to your ~/.vagrant.d/Vagrantfile file
config.berkshelf.enabled = true
# An array of symbols representing groups of cookbook described in the Vagrantfile
# to exclusively install and copy to Vagrant's shelf.
# config.berkshelf.only = []
# An array of symbols representing groups of cookbook described in the Vagrantfile
# to skip installing and copying to Vagrant's shelf.
# config.berkshelf.except = []
config.vm.provision :chef_solo do |chef|
chef.json = {
mysql: {
server_root_password: 'rootpass',
server_debian_password: 'debpass',
server_repl_password: 'replpass'
}
}
chef.run_list = [
"recipe[mediawiki::default]"
]
end
end

View File

@@ -0,0 +1,16 @@
default["mediawiki"]["version"] = "1.23.1"
default["mediawiki"]["webdir"] = node['apache']['docroot_dir'] + "/mediawiki-" + default["mediawiki"]["version"]
default["mediawiki"]["tarball"]["name"] = "mediawiki-" + default["mediawiki"]["version"] + ".tar.gz"
default["mediawiki"]["tarball"]["url"] = "https://releases.wikimedia.org/mediawiki/1.23/" + default["mediawiki"]["tarball"]["name"]
default["mediawiki"]["database"]["name"] = "mediawiki"
default["mediawiki"]["database"]["user"] = "mediawiki"
default["mediawiki"]["database"]["password"] = "Ub3rPa55w0rd"
default["mediawiki"]["server_name"] = "wiki.localhost"
default["mediawiki"]["scriptpath"] = ""
default['mysql']['server_root_password'] = 'Fak3Pa55w0rd'
default["mediawiki"]["server"] = "http://" + default["mediawiki"]["server_name"]
default["mediawiki"]["site_name"] = "my Wiki"
default["mediawiki"]["language_code"] = "fr"
default["mediawiki"]["admin_user"] = "administrator"
default["mediawiki"]["admin_password"] = "admin"

View File

@@ -0,0 +1,94 @@
# Put files/directories that should be ignored in this file when uploading
# or sharing to the community site.
# Lines that start with '# ' are comments.
# OS generated files #
######################
.DS_Store
Icon?
nohup.out
ehthumbs.db
Thumbs.db
# SASS #
########
.sass-cache
# EDITORS #
###########
\#*
.#*
*~
*.sw[a-z]
*.bak
REVISION
TAGS*
tmtags
*_flymake.*
*_flymake
*.tmproj
.project
.settings
mkmf.log
## COMPILED ##
##############
a.out
*.o
*.pyc
*.so
*.com
*.class
*.dll
*.exe
*/rdoc/
# Testing #
###########
.watchr
.rspec
spec/*
spec/fixtures/*
test/*
features/*
Guardfile
Procfile
# SCM #
#######
.git
*/.git
.gitignore
.gitmodules
.gitconfig
.gitattributes
.svn
*/.bzr/*
*/.hg/*
*/.svn/*
# Berkshelf #
#############
cookbooks/*
tmp
# Cookbooks #
#############
CONTRIBUTING
CHANGELOG*
# Strainer #
############
Colanderfile
Strainerfile
.colander
.strainer
# Vagrant #
###########
.vagrant
Vagrantfile
# Travis #
##########
.travis.yml

View File

@@ -0,0 +1,56 @@
name 'mediawiki'
maintainer 'pulsation'
license 'BSD'
description 'Installs/Configures mediawiki'
long_description 'Installs/Configures mediawiki'
version '0.1.0'
depends 'apache2'
depends 'php'
depends 'mysql'
depends 'database'
attribute 'mediawiki/version',
:display_name => "Mediawiki version",
:type => "string",
:required => "recommended"
attribute 'mediawiki/database/name',
:display_name => "Database name",
:type => "string",
:required => "optional"
attribute 'mediawiki/database/user',
:display_name => "Database user",
:type => "string",
:required => "optional"
attribute 'mediawiki/database/password',
:display_name => "Database password",
:type => "string",
:required => "optional"
attribute 'mediawiki/server_name',
:display_name => "Server name",
:type => "string",
:required => "recommended"
attribute 'mediawiki/sciptpath',
:display_name => "Script path",
:type => "string",
:required => "optional"
attribute 'mediawiki/admin_user',
:display_name => "Admin user",
:type => "string",
:required => "recommended"
attribute 'mediawiki/admin_password',
:display_name => "Admin password",
:type => "string",
:required => "recommended"
recipe "mediawiki::default", "Installs/Configures mediawiki"
supports "centos"
supports "debian"

View File

@@ -0,0 +1,100 @@
#
# Cookbook Name:: mediawiki
# Recipe:: default
#
# Copyright (C) 2014 YOUR_NAME
#
# All rights reserved - Do Not Redistribute
#
include_recipe "apt"
include_recipe "apache2"
include_recipe "apache2::mod_php5"
include_recipe "apache2::mod_rewrite"
include_recipe "mysql::server"
include_recipe "database::mysql"
include_recipe "php::default"
include_recipe "php::module_apc"
include_recipe "php::module_mysql"
# Download mediawiki tarball
remote_file "#{Chef::Config[:file_cache_path]}/" + node['mediawiki']['tarball']['name'] do
source node['mediawiki']['tarball']['url']
end
# Extract mediawiki tarball
bash "extract_mediawkiki" do
user "root"
cwd node['apache']['docroot_dir']
code "tar -zxf #{Chef::Config[:file_cache_path]}/" + node['mediawiki']['tarball']['name']
action :run
end
# Database connection information
mysql_connection_info = {
:host => 'localhost',
:username => 'root',
:password => node['mysql']['server_root_password']
}
# Create new database
mysql_database node['mediawiki']['database']['name'] do
connection mysql_connection_info
action :create
end
# Create new user
mysql_database_user node['mediawiki']['database']['user'] do
connection mysql_connection_info
password node['mediawiki']['database']['password']
action :create
end
# Grant privilages to user
mysql_database_user node['mediawiki']['database']['user'] do
connection mysql_connection_info
database_name node["mediawiki"]["database"]["name"]
privileges [:all]
action :grant
end
# Add virtualhost
web_app "mediawiki" do
server_name node["mediawiki"]["server_name"]
docroot node["mediawiki"]["webdir"]
end
# Additional packages
case node["platform_family"]
when "rhel"
package "php-xml"
package "libicu-devel"
service "apache2" do
action :restart
end
when "debian"
package "libicu-dev"
end
php_pear "intl" do
action :install
end
# Configure mediawiki database
bash "configure_mediawkiki_database" do
user "root"
cwd node["mediawiki"]["webdir"]
code "php maintenance/install.php" +
" --pass '" + node["mediawiki"]["admin_password"] +
"' --dbname '" + node["mediawiki"]["database"]["name"] +
"' --dbpass '" + node["mediawiki"]["database"]["password"] +
"' --dbuser '" + node["mediawiki"]["database"]["name"] +
"' --server '" + node["mediawiki"]["server"] +
"' --scriptpath '" + node["mediawiki"]["scriptpath"] +
"' --lang '" + node["mediawiki"]["language_code"] +
"' '" + node["mediawiki"]["site_name"] + "' '" + node["mediawiki"]["admin_user"] + "'"
action :run
end

View File

@@ -0,0 +1,49 @@
<VirtualHost *:<%= @params[:server_port] || node['apache']['listen_ports'].first %>>
ServerName <%= @params[:server_name] %>
<% if @params[:server_aliases] -%>
ServerAlias <%= @params[:server_aliases].join " " %>
<% end -%>
DocumentRoot <%= @params[:docroot] %>
<Directory <%= @params[:docroot] %>>
Options <%= [@params[:directory_options] || "FollowSymLinks" ].flatten.join " " %>
AllowOverride <%= [@params[:allow_override] || "None" ].flatten.join " " %>
Order allow,deny
Allow from all
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
LogLevel info
ErrorLog <%= node['apache']['log_dir'] %>/<%= @params[:name] %>-error.log
CustomLog <%= node['apache']['log_dir'] %>/<%= @params[:name] %>-access.log combined
<% if @params[:directory_index] -%>
DirectoryIndex <%= [@params[:directory_index]].flatten.join " " %>
<% end -%>
RewriteEngine On
RewriteLog <%= node['apache']['log_dir'] %>/<%= @application_name %>-rewrite.log
RewriteLogLevel 0
# Canonical host, <%= @params[:server_name] %>
RewriteCond %{HTTP_HOST} !^<%= @params[:server_name] %> [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*)$ http://<%= @params[:server_name] %>/$1 [L,R=301]
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
</VirtualHost>