Initial Chef repository
This commit is contained in:
20
cookbooks/mediawiki/.gitignore
vendored
Normal file
20
cookbooks/mediawiki/.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
*~
|
||||
*#
|
||||
.#*
|
||||
\#*#
|
||||
.*.sw[a-z]
|
||||
*.un~
|
||||
pkg/
|
||||
|
||||
# Berkshelf
|
||||
.vagrant
|
||||
/cookbooks
|
||||
Berksfile.lock
|
||||
|
||||
# Bundler
|
||||
Gemfile.lock
|
||||
bin/*
|
||||
.bundle/*
|
||||
|
||||
.kitchen/
|
||||
.kitchen.local.yml
|
||||
22
cookbooks/mediawiki/.kitchen.yml
Normal file
22
cookbooks/mediawiki/.kitchen.yml
Normal 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:
|
||||
4
cookbooks/mediawiki/Berksfile
Normal file
4
cookbooks/mediawiki/Berksfile
Normal file
@@ -0,0 +1,4 @@
|
||||
source "https://supermarket.getchef.com"
|
||||
|
||||
metadata
|
||||
|
||||
9
cookbooks/mediawiki/CHANGELOG.md
Normal file
9
cookbooks/mediawiki/CHANGELOG.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# 0.1.0
|
||||
|
||||
Initial release of mediawiki
|
||||
|
||||
* Enhancements
|
||||
* an enhancement
|
||||
|
||||
* Bug Fixes
|
||||
* a bug fix
|
||||
18
cookbooks/mediawiki/Gemfile
Normal file
18
cookbooks/mediawiki/Gemfile
Normal 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'
|
||||
3
cookbooks/mediawiki/LICENSE
Normal file
3
cookbooks/mediawiki/LICENSE
Normal file
@@ -0,0 +1,3 @@
|
||||
Copyright (C) 2014 YOUR_NAME
|
||||
|
||||
All rights reserved - Do Not Redistribute
|
||||
88
cookbooks/mediawiki/README.md
Normal file
88
cookbooks/mediawiki/README.md
Normal 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
|
||||
|
||||
12
cookbooks/mediawiki/Thorfile
Normal file
12
cookbooks/mediawiki/Thorfile
Normal 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
88
cookbooks/mediawiki/Vagrantfile
vendored
Normal 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
|
||||
16
cookbooks/mediawiki/attributes/default.rb
Normal file
16
cookbooks/mediawiki/attributes/default.rb
Normal 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"
|
||||
94
cookbooks/mediawiki/chefignore
Normal file
94
cookbooks/mediawiki/chefignore
Normal 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
|
||||
56
cookbooks/mediawiki/metadata.rb
Normal file
56
cookbooks/mediawiki/metadata.rb
Normal 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"
|
||||
100
cookbooks/mediawiki/recipes/default.rb
Normal file
100
cookbooks/mediawiki/recipes/default.rb
Normal 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
|
||||
|
||||
49
cookbooks/mediawiki/templates/default/web_app.conf.erb
Normal file
49
cookbooks/mediawiki/templates/default/web_app.conf.erb
Normal 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>
|
||||
|
||||
Reference in New Issue
Block a user