elzar 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. data/.chef/knife.rb +3 -0
  2. data/.gitignore +1 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +96 -0
  6. data/README.md +42 -0
  7. data/Rakefile +1 -0
  8. data/Vagrantfile +16 -0
  9. data/cookbooks/.gitkeep +0 -0
  10. data/cookbooks/apt/README.md +122 -0
  11. data/cookbooks/apt/files/default/apt-cacher +9 -0
  12. data/cookbooks/apt/files/default/apt-cacher.conf +144 -0
  13. data/cookbooks/apt/files/default/apt-proxy-v2.conf +50 -0
  14. data/cookbooks/apt/metadata.rb +13 -0
  15. data/cookbooks/apt/providers/repository.rb +73 -0
  16. data/cookbooks/apt/recipes/cacher-client.rb +44 -0
  17. data/cookbooks/apt/recipes/cacher.rb +45 -0
  18. data/cookbooks/apt/recipes/default.rb +50 -0
  19. data/cookbooks/apt/resources/repository.rb +30 -0
  20. data/cookbooks/build-essential/README.md +24 -0
  21. data/cookbooks/build-essential/metadata.rb +10 -0
  22. data/cookbooks/build-essential/recipes/default.rb +45 -0
  23. data/cookbooks/database/README.md +403 -0
  24. data/cookbooks/database/libraries/provider_database_mysql.rb +97 -0
  25. data/cookbooks/database/libraries/provider_database_mysql_user.rb +76 -0
  26. data/cookbooks/database/libraries/provider_database_postgresql.rb +126 -0
  27. data/cookbooks/database/libraries/provider_database_postgresql_user.rb +78 -0
  28. data/cookbooks/database/libraries/provider_database_sql_server.rb +109 -0
  29. data/cookbooks/database/libraries/provider_database_sql_server_user.rb +106 -0
  30. data/cookbooks/database/libraries/resource_database.rb +111 -0
  31. data/cookbooks/database/libraries/resource_database_user.rb +90 -0
  32. data/cookbooks/database/libraries/resource_mysql_database.rb +34 -0
  33. data/cookbooks/database/libraries/resource_mysql_database_user.rb +34 -0
  34. data/cookbooks/database/libraries/resource_postgresql_database.rb +35 -0
  35. data/cookbooks/database/libraries/resource_postgresql_database_user.rb +35 -0
  36. data/cookbooks/database/libraries/resource_sql_server_database.rb +34 -0
  37. data/cookbooks/database/libraries/resource_sql_server_database_user.rb +34 -0
  38. data/cookbooks/database/metadata.rb +21 -0
  39. data/cookbooks/database/recipes/default.rb +20 -0
  40. data/cookbooks/database/recipes/ebs_backup.rb +89 -0
  41. data/cookbooks/database/recipes/ebs_volume.rb +196 -0
  42. data/cookbooks/database/recipes/master.rb +78 -0
  43. data/cookbooks/database/recipes/snapshot.rb +62 -0
  44. data/cookbooks/database/templates/default/app_grants.sql.erb +8 -0
  45. data/cookbooks/database/templates/default/aws_config.erb +3 -0
  46. data/cookbooks/database/templates/default/chef-solo-database-snapshot.cron.erb +10 -0
  47. data/cookbooks/database/templates/default/chef-solo-database-snapshot.json.erb +1 -0
  48. data/cookbooks/database/templates/default/chef-solo-database-snapshot.rb.erb +6 -0
  49. data/cookbooks/database/templates/default/ebs-backup-cron.erb +2 -0
  50. data/cookbooks/database/templates/default/ebs-db-backup.sh.erb +8 -0
  51. data/cookbooks/database/templates/default/ebs-db-restore.sh.erb +10 -0
  52. data/cookbooks/database/templates/default/s3cfg.erb +27 -0
  53. data/cookbooks/mysql/README.md +148 -0
  54. data/cookbooks/mysql/attributes/server.rb +68 -0
  55. data/cookbooks/mysql/libraries/database.rb +19 -0
  56. data/cookbooks/mysql/libraries/helpers.rb +33 -0
  57. data/cookbooks/mysql/metadata.rb +90 -0
  58. data/cookbooks/mysql/recipes/client.rb +51 -0
  59. data/cookbooks/mysql/recipes/default.rb +20 -0
  60. data/cookbooks/mysql/recipes/server.rb +133 -0
  61. data/cookbooks/mysql/recipes/server_ec2.rb +49 -0
  62. data/cookbooks/mysql/templates/default/debian.cnf.erb +12 -0
  63. data/cookbooks/mysql/templates/default/grants.sql.erb +15 -0
  64. data/cookbooks/mysql/templates/default/my.cnf.erb +176 -0
  65. data/cookbooks/mysql/templates/default/mysql-server.seed.erb +10 -0
  66. data/cookbooks/mysql/templates/default/port_mysql.erb +3 -0
  67. data/cookbooks/openssl/README.md +37 -0
  68. data/cookbooks/openssl/libraries/secure_password.rb +37 -0
  69. data/cookbooks/openssl/metadata.rb +8 -0
  70. data/cookbooks/openssl/recipes/default.rb +19 -0
  71. data/cookbooks/passenger_enterprise/README.rdoc +8 -0
  72. data/cookbooks/passenger_enterprise/attributes/default.rb +28 -0
  73. data/cookbooks/passenger_enterprise/cc.gemspec +36 -0
  74. data/cookbooks/passenger_enterprise/metadata.json +44 -0
  75. data/cookbooks/passenger_enterprise/metadata.rb +16 -0
  76. data/cookbooks/passenger_enterprise/recipes/apache2.rb +54 -0
  77. data/cookbooks/passenger_enterprise/recipes/default.rb +30 -0
  78. data/cookbooks/passenger_enterprise/recipes/nginx.rb +50 -0
  79. data/cookbooks/passenger_enterprise/templates/default/passenger.conf.erb +2 -0
  80. data/cookbooks/passenger_enterprise/templates/default/passenger.load.erb +1 -0
  81. data/cookbooks/passenger_enterprise/templates/default/passenger_nginx.conf.erb +2 -0
  82. data/cookbooks/ruby_enterprise/README.rdoc +55 -0
  83. data/cookbooks/ruby_enterprise/attributes/default.rb +33 -0
  84. data/cookbooks/ruby_enterprise/cc.gemspec +36 -0
  85. data/cookbooks/ruby_enterprise/definitions/ree_gem.rb +28 -0
  86. data/cookbooks/ruby_enterprise/metadata.json +45 -0
  87. data/cookbooks/ruby_enterprise/metadata.rb +13 -0
  88. data/cookbooks/ruby_enterprise/recipes/default.rb +67 -0
  89. data/data_bags/deploy/authorized_keys.json +9 -0
  90. data/dna.json +25 -0
  91. data/elzar.gemspec +22 -0
  92. data/lib/elzar.rb +21 -0
  93. data/lib/elzar/assistant.rb +77 -0
  94. data/lib/elzar/chef_dna.rb +48 -0
  95. data/lib/elzar/template.rb +24 -0
  96. data/lib/elzar/templates/Gemfile +11 -0
  97. data/lib/elzar/templates/Vagrantfile.erb +16 -0
  98. data/lib/elzar/templates/dna.json +25 -0
  99. data/lib/elzar/templates/solo.rb.erb +6 -0
  100. data/lib/elzar/version.rb +3 -0
  101. data/roles/enterprise_appstack.rb +4 -0
  102. data/roles/plumbing.rb +11 -0
  103. data/roles/postgres_database.rb +4 -0
  104. data/roles/ruby_appstack.rb +4 -0
  105. data/script/install_cookbook +6 -0
  106. data/script/new_cookbook +5 -0
  107. data/site-cookbooks/.gitkeep +0 -0
  108. data/site-cookbooks/curl/README.md +17 -0
  109. data/site-cookbooks/curl/metadata.rb +6 -0
  110. data/site-cookbooks/curl/recipes/default.rb +11 -0
  111. data/site-cookbooks/nginx/CHANGELOG.md +11 -0
  112. data/site-cookbooks/nginx/CONTRIBUTING +29 -0
  113. data/site-cookbooks/nginx/LICENSE +201 -0
  114. data/site-cookbooks/nginx/README.md +76 -0
  115. data/site-cookbooks/nginx/attributes/default.rb +65 -0
  116. data/site-cookbooks/nginx/definitions/nginx_site.rb +35 -0
  117. data/site-cookbooks/nginx/files/default/mime.types +73 -0
  118. data/site-cookbooks/nginx/metadata.rb +89 -0
  119. data/site-cookbooks/nginx/recipes/default.rb +57 -0
  120. data/site-cookbooks/nginx/recipes/source.rb +126 -0
  121. data/site-cookbooks/nginx/templates/default/default-site.erb +11 -0
  122. data/site-cookbooks/nginx/templates/default/nginx.conf.erb +42 -0
  123. data/site-cookbooks/nginx/templates/default/nginx.init.erb +91 -0
  124. data/site-cookbooks/nginx/templates/default/nxdissite.erb +29 -0
  125. data/site-cookbooks/nginx/templates/default/nxensite.erb +38 -0
  126. data/site-cookbooks/passenger/README.md +12 -0
  127. data/site-cookbooks/passenger/attributes/default.rb +3 -0
  128. data/site-cookbooks/passenger/metadata.rb +6 -0
  129. data/site-cookbooks/passenger/recipes/default.rb +39 -0
  130. data/site-cookbooks/passenger/templates/default/passenger_nginx.conf.erb +2 -0
  131. data/site-cookbooks/postgresql/README.md +150 -0
  132. data/site-cookbooks/postgresql/attributes/default.rb +72 -0
  133. data/site-cookbooks/postgresql/metadata.rb +21 -0
  134. data/site-cookbooks/postgresql/recipes/client.rb +40 -0
  135. data/site-cookbooks/postgresql/recipes/default.rb +20 -0
  136. data/site-cookbooks/postgresql/recipes/server.rb +74 -0
  137. data/site-cookbooks/postgresql/recipes/server_debian.rb +62 -0
  138. data/site-cookbooks/postgresql/recipes/server_redhat.rb +82 -0
  139. data/site-cookbooks/postgresql/templates/default/debian.postgresql.conf.erb +499 -0
  140. data/site-cookbooks/postgresql/templates/default/pg_hba.conf.erb +83 -0
  141. data/site-cookbooks/postgresql/templates/default/redhat.postgresql.conf.erb +501 -0
  142. data/site-cookbooks/rails_app/README.md +15 -0
  143. data/site-cookbooks/rails_app/attributes/default.rb +2 -0
  144. data/site-cookbooks/rails_app/files/default/sudoers +26 -0
  145. data/site-cookbooks/rails_app/metadata.rb +6 -0
  146. data/site-cookbooks/rails_app/recipes/default.rb +143 -0
  147. data/site-cookbooks/rails_app/recipes/system_libraries.rb +12 -0
  148. data/site-cookbooks/rails_app/templates/default/pg_hba.conf.erb +84 -0
  149. data/site-cookbooks/rails_app/templates/default/rails_app_nginx.erb +10 -0
  150. data/site-cookbooks/ruby/README.md +12 -0
  151. data/site-cookbooks/ruby/attributes/default.rb +6 -0
  152. data/site-cookbooks/ruby/metadata.rb +6 -0
  153. data/site-cookbooks/ruby/recipes/default.rb +54 -0
  154. data/solo.rb +7 -0
  155. data/upgrade-chef.sh +8 -0
  156. metadata +272 -0
@@ -0,0 +1,11 @@
1
+ server {
2
+ listen 80;
3
+ server_name <%= node[:hostname] %>;
4
+
5
+ access_log <%= node[:nginx][:log_dir] %>/localhost.access.log;
6
+
7
+ location / {
8
+ root /var/www/nginx-default;
9
+ index index.html index.htm;
10
+ }
11
+ }
@@ -0,0 +1,42 @@
1
+ user <%= node[:nginx][:user] %>;
2
+ worker_processes <%= node[:nginx][:worker_processes] %>;
3
+ <% if node[:nginx][:daemon_disable] -%>
4
+ daemon off;
5
+ <% end -%>
6
+
7
+ error_log <%= node[:nginx][:log_dir] %>/error.log;
8
+ pid <%= node[:nginx][:pid] %>;
9
+
10
+ events {
11
+ worker_connections <%= node[:nginx][:worker_connections] %>;
12
+ }
13
+
14
+ http {
15
+ include <%= node[:nginx][:dir] %>/mime.types;
16
+ default_type application/octet-stream;
17
+
18
+ <% unless node[:nginx][:disable_access_log] -%>
19
+ access_log <%= node[:nginx][:log_dir] %>/access.log;
20
+ <% end %>
21
+
22
+ sendfile on;
23
+ tcp_nopush on;
24
+ tcp_nodelay on;
25
+
26
+ <% if node[:nginx][:keepalive] == "on" %>
27
+ keepalive_timeout <%= node[:nginx][:keepalive_timeout] %>;
28
+ <% end %>
29
+
30
+ gzip <%= node[:nginx][:gzip] %>;
31
+ <% if node[:nginx][:gzip] == "on" %>
32
+ gzip_http_version <%= node[:nginx][:gzip_http_version] %>;
33
+ gzip_comp_level <%= node[:nginx][:gzip_comp_level] %>;
34
+ gzip_proxied <%= node[:nginx][:gzip_proxied] %>;
35
+ gzip_types <%= node[:nginx][:gzip_types].join(' ') %>;
36
+ <% end %>
37
+
38
+ server_names_hash_bucket_size <%= node[:nginx][:server_names_hash_bucket_size] %>;
39
+
40
+ include <%= node[:nginx][:dir] %>/conf.d/*.conf;
41
+ include <%= node[:nginx][:dir] %>/sites-enabled/*;
42
+ }
@@ -0,0 +1,91 @@
1
+ #! /bin/sh
2
+
3
+ ### BEGIN INIT INFO
4
+ # Provides: nginx
5
+ # Required-Start: $local_fs $remote_fs $network $syslog
6
+ # Required-Stop: $local_fs $remote_fs $network $syslog
7
+ # Default-Start: 2 3 4 5
8
+ # Default-Stop: 0 1 6
9
+ # Short-Description: starts the nginx web server
10
+ # Description: starts nginx using start-stop-daemon
11
+ ### END INIT INFO
12
+
13
+ PATH=<%= node[:nginx][:install_path] %>/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
14
+ DAEMON=<%= node[:nginx][:src_binary] %>
15
+ NAME=nginx
16
+ DESC=nginx
17
+ PID=/var/run/$NAME.pid
18
+
19
+ test -x $DAEMON || exit 0
20
+
21
+ # Include nginx defaults if available
22
+ if [ -f /etc/default/nginx ] ; then
23
+ . /etc/default/nginx
24
+ fi
25
+
26
+ set -e
27
+
28
+ . /lib/lsb/init-functions
29
+
30
+ test_nginx_config() {
31
+ echo -n "Testing $DESC configuration: "
32
+ if nginx -t $DAEMON_OPTS
33
+ then
34
+ echo "$NAME."
35
+ else
36
+ exit $?
37
+ fi
38
+ }
39
+
40
+ start() {
41
+ test_nginx_config
42
+ if [ ! -s $PID ]
43
+ then
44
+ echo -n "Starting $DESC: "
45
+ $DAEMON
46
+ else
47
+ echo -n "$DESC already started"
48
+ fi
49
+ }
50
+
51
+ stop() {
52
+ echo -n "Stopping $DESC: "
53
+ $DAEMON -s stop
54
+ echo "$NAME."
55
+ }
56
+
57
+ reload() {
58
+ echo -n "Reloading $DESC configuration: "
59
+ test_nginx_config
60
+ $DAEMON -s reload
61
+ echo "$NAME."
62
+ }
63
+
64
+ case "$1" in
65
+ start)
66
+ start
67
+ ;;
68
+ stop)
69
+ stop
70
+ ;;
71
+ restart|force-reload)
72
+ stop
73
+ sleep 1
74
+ start
75
+ ;;
76
+ reload)
77
+ reload
78
+ ;;
79
+ configtest)
80
+ test_nginx_config
81
+ ;;
82
+ status)
83
+ status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
84
+ ;;
85
+ *)
86
+ echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
87
+ exit 1
88
+ ;;
89
+ esac
90
+
91
+ exit 0
@@ -0,0 +1,29 @@
1
+ #!/bin/sh -e
2
+
3
+ SYSCONFDIR='<%= node[:nginx][:dir] %>'
4
+
5
+ if [ -z $1 ]; then
6
+ echo "Which site would you like to disable?"
7
+ echo -n "Your choices are: "
8
+ ls $SYSCONFDIR/sites-enabled/* | \
9
+ sed -e "s,$SYSCONFDIR/sites-enabled/,,g" | xargs echo
10
+ echo -n "Site name? "
11
+ read SITENAME
12
+ else
13
+ SITENAME=$1
14
+ fi
15
+
16
+ if [ $SITENAME = "default" ]; then
17
+ PRIORITY="000"
18
+ fi
19
+
20
+ if ! [ -e $SYSCONFDIR/sites-enabled/$SITENAME -o \
21
+ -e $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME" ]; then
22
+ echo "This site is already disabled, or does not exist!"
23
+ exit 1
24
+ fi
25
+
26
+ if ! rm $SYSCONFDIR/sites-enabled/$SITENAME 2>/dev/null; then
27
+ rm -f $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME"
28
+ fi
29
+ echo "Site $SITENAME disabled; reload nginx to disable."
@@ -0,0 +1,38 @@
1
+ #!/bin/sh -e
2
+
3
+ SYSCONFDIR='<%= node[:nginx][:dir] %>'
4
+
5
+ if [ -z $1 ]; then
6
+ echo "Which site would you like to enable?"
7
+ echo -n "Your choices are: "
8
+ ls $SYSCONFDIR/sites-available/* | \
9
+ sed -e "s,$SYSCONFDIR/sites-available/,,g" | xargs echo
10
+ echo -n "Site name? "
11
+ read SITENAME
12
+ else
13
+ SITENAME=$1
14
+ fi
15
+
16
+ if [ $SITENAME = "default" ]; then
17
+ PRIORITY="000"
18
+ fi
19
+
20
+ if [ -e $SYSCONFDIR/sites-enabled/$SITENAME -o \
21
+ -e $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME" ]; then
22
+ echo "This site is already enabled!"
23
+ exit 0
24
+ fi
25
+
26
+ if ! [ -e $SYSCONFDIR/sites-available/$SITENAME ]; then
27
+ echo "This site does not exist!"
28
+ exit 1
29
+ fi
30
+
31
+ if [ $SITENAME = "default" ]; then
32
+ ln -sf $SYSCONFDIR/sites-available/$SITENAME \
33
+ $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME"
34
+ else
35
+ ln -sf $SYSCONFDIR/sites-available/$SITENAME $SYSCONFDIR/sites-enabled/$SITENAME
36
+ fi
37
+
38
+ echo "Site $SITENAME installed; reload nginx to enable."
@@ -0,0 +1,12 @@
1
+ Description
2
+ ===========
3
+
4
+ Requirements
5
+ ============
6
+
7
+ Attributes
8
+ ==========
9
+
10
+ Usage
11
+ =====
12
+
@@ -0,0 +1,3 @@
1
+ default[:passenger][:version] = '3.0.11'
2
+ default[:passenger][:root_path] = "/opt/relevance-ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.11"
3
+ default[:passenger][:module_path] = "/opt/relevance-ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so"
@@ -0,0 +1,6 @@
1
+ maintainer "Relevance"
2
+ maintainer_email "opfor@thinkrelevance.com"
3
+ license "All rights reserved"
4
+ description "Installs/Configures passenger"
5
+ long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
6
+ version "0.0.1"
@@ -0,0 +1,39 @@
1
+ #
2
+ # Cookbook Name:: passenger
3
+ # Recipe:: default
4
+ #
5
+ # Copyright 2012, Relevance
6
+ #
7
+ # All rights reserved - Do Not Redistribute
8
+ #
9
+ include_recipe "ruby"
10
+ include_recipe "nginx::source"
11
+
12
+ configure_flags = node[:nginx][:configure_flags].join(" ")
13
+ nginx_install = node[:nginx][:install_path]
14
+ nginx_version = node[:nginx][:version]
15
+ nginx_dir = node[:nginx][:dir]
16
+
17
+ execute "install passenger" do
18
+ command "#{node[:ruby][:install_path]}/bin/gem install passenger --no-ri --no-rdoc -v #{node[:passenger][:version]}"
19
+ not_if "#{node[:ruby][:install_path]}/bin/gem list -l passenger$ | grep -q #{node[:passenger][:version]}"
20
+ end
21
+
22
+ execute "passenger_nginx_module" do
23
+ command %Q{
24
+ #{node[:ruby][:install_path]}/bin/passenger-install-nginx-module \
25
+ --auto --prefix=#{nginx_install} \
26
+ --nginx-source-dir=#{Chef::Config[:file_cache_path]}/nginx-#{nginx_version} \
27
+ --extra-configure-flags='#{configure_flags}'
28
+ }
29
+ not_if "#{nginx_install}/sbin/nginx -V 2>&1 | grep '#{node[:ruby][:gems_dir]}/passenger-#{node[:passenger][:version]}/ext/nginx'"
30
+ notifies :restart, resources(:service => "nginx")
31
+ end
32
+
33
+ template "#{nginx_dir}/conf.d/passenger.conf" do
34
+ source "passenger_nginx.conf.erb"
35
+ owner "root"
36
+ group "root"
37
+ mode "0644"
38
+ notifies :restart, resources(:service => "nginx")
39
+ end
@@ -0,0 +1,2 @@
1
+ passenger_root <%= node[:passenger][:root_path] %>;
2
+ passenger_ruby <%= node[:ruby][:bin] %>;
@@ -0,0 +1,150 @@
1
+ Description
2
+ ===========
3
+
4
+ Installs and configures PostgreSQL as a client or a server.
5
+
6
+ Requirements
7
+ ============
8
+
9
+ ## Platforms
10
+
11
+ * Debian, Ubuntu
12
+ * Red Hat/CentOS/Scientific (6.0+ required) - "EL6-family"
13
+ * Fedora
14
+ * SUSE
15
+
16
+ Tested on:
17
+
18
+ * Ubuntu 10.04, 11.10
19
+ * Red Hat 6.1, Scientific 6.1
20
+
21
+ ## Cookboooks
22
+
23
+ Requires Opscode's `openssl` cookbook for secure password generation.
24
+
25
+ Requires a C compiler and development headers in order to build the
26
+ `pg` RubyGem to provide Ruby bindings so they're available in other
27
+ cookbooks.
28
+
29
+ Opscode's `build-essential` cookbook provides this functionality on
30
+ Debian, Ubuntu, and EL6-family.
31
+
32
+ While not required, Opscode's `database` cookbook contains resources
33
+ and providers that can interact with a PostgreSQL database. This
34
+ cookbook is a dependency of that one.
35
+
36
+ Attributes
37
+ ==========
38
+
39
+ The following attributes are set based on the platform, see the
40
+ `attributes/default.rb` file for default values.
41
+
42
+ * `node['postgresql']['version']` - version of postgresql to manage
43
+ * `node['postgresql']['dir']` - home directory of where postgresql
44
+ data and configuration lives.
45
+
46
+ The following attributes are generated in
47
+ `recipe[postgresql::server]`.
48
+
49
+ * `node['postgresql']['password']['postgres']` - randomly generated
50
+ password by the `openssl` cookbook's library.
51
+ * `node['postgresql']['ssl']` - whether to enable SSL (off for version
52
+ 8.3, true for 8.4).
53
+
54
+ Recipes
55
+ =======
56
+
57
+ default
58
+ -------
59
+
60
+ Includes the client recipe.
61
+
62
+ client
63
+ ------
64
+
65
+ Installs postgresql client packages and development headers during the
66
+ compile phase. Also installs the `pg` Ruby gem during the compile
67
+ phase so it can be made available for the `database` cookbook's
68
+ resources, providers and libraries.
69
+
70
+ server
71
+ ------
72
+
73
+ Includes the `server_debian` or `server_redhat` recipe to get the
74
+ appropriate server packages installed and service managed. Also
75
+ manages the configuration for the server:
76
+
77
+ * generates a strong default password (via `openssl`) for `postgres`
78
+ * sets the password for postgres
79
+ * manages the `pg_hba.conf` file.
80
+
81
+ server\_debian
82
+ --------------
83
+
84
+ Installs the postgresql server packages, manages the postgresql
85
+ service and the postgresql.conf file.
86
+
87
+ server\_redhat
88
+ --------------
89
+
90
+ Manages the postgres user and group (with UID/GID 26, per RHEL package
91
+ conventions), installs the postgresql server packages, initializes the
92
+ database and manages the postgresql service, and manages the
93
+ postgresql.conf file.
94
+
95
+ Resources/Providers
96
+ ===================
97
+
98
+ See the [database](http://community.opscode.com/cookbooks/database)
99
+ for resources and providers that can be used for managing PostgreSQL
100
+ users and databases.
101
+
102
+ Usage
103
+ =====
104
+
105
+ On systems that need to connect to a PostgreSQL database, add to a run
106
+ list `recipe[postgresql]` or `recipe[postgresql::client]`.
107
+
108
+ This does install the `pg` RubyGem, which has native C extensions, so
109
+ that the resources and providers can be used in the `database`
110
+ cookbook, or elsewhere in the same Chef run. Use Opscode's
111
+ `build-essential` cookbook to make sure the proper build tools are
112
+ installed so the C extensions can be compiled.
113
+
114
+ On systems that should be PostgreSQL servers, use
115
+ `recipe[postgresql::server]` on a run list. This recipe does set a
116
+ password and expect to use it. It performs a node.save when Chef is
117
+ not running in `solo` mode. If you're using `chef-solo`, you'll need
118
+ to set the attribute `node['postgresql']['password']['postgres']` in
119
+ your node's `json_attribs` file or in a role.
120
+
121
+ Changes/Roadmap
122
+ ==============
123
+
124
+ ## v0.99.2:
125
+
126
+ * [COOK-916] - use < (with float) for version comparison.
127
+
128
+ ## v0.99.0:
129
+
130
+ * Better support for Red Hat-family platforms
131
+ * Integration with database cookbook
132
+ * Make sure the postgres role is updated with a (secure) password
133
+
134
+ License and Author
135
+ ==================
136
+
137
+ Author:: Joshua Timberman (<joshua@opscode.com>)
138
+ Author:: Lamont Granquist (<lamont@opscode.com>)
139
+
140
+ Licensed under the Apache License, Version 2.0 (the "License");
141
+ you may not use this file except in compliance with the License.
142
+ You may obtain a copy of the License at
143
+
144
+ http://www.apache.org/licenses/LICENSE-2.0
145
+
146
+ Unless required by applicable law or agreed to in writing, software
147
+ distributed under the License is distributed on an "AS IS" BASIS,
148
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149
+ See the License for the specific language governing permissions and
150
+ limitations under the License.
@@ -0,0 +1,72 @@
1
+ #
2
+ # Cookbook Name:: postgresql
3
+ # Attributes:: postgresql
4
+ #
5
+ # Copyright 2008-2009, Opscode, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ case platform
21
+ when "debian"
22
+
23
+ if platform_version.to_f == 5.0
24
+ default[:postgresql][:version] = "8.3"
25
+ elsif platform_version =~ /squeeze/
26
+ default[:postgresql][:version] = "8.4"
27
+ end
28
+
29
+ set[:postgresql][:dir] = "/etc/postgresql/#{node[:postgresql][:version]}/main"
30
+
31
+ when "ubuntu"
32
+
33
+ case
34
+ when platform_version.to_f <= 9.04
35
+ default[:postgresql][:version] = "8.3"
36
+ when platform_version.to_f <= 11.04
37
+ default[:postgresql][:version] = "8.4"
38
+ else
39
+ default[:postgresql][:version] = "9.1"
40
+ end
41
+
42
+ set[:postgresql][:dir] = "/etc/postgresql/#{node[:postgresql][:version]}/main"
43
+
44
+ when "fedora"
45
+
46
+ if platform_version.to_f <= 12
47
+ default[:postgresql][:version] = "8.3"
48
+ else
49
+ default[:postgresql][:version] = "8.4"
50
+ end
51
+
52
+ set[:postgresql][:dir] = "/var/lib/pgsql/data"
53
+
54
+ when "redhat","centos","scientific","amazon"
55
+
56
+ default[:postgresql][:version] = "8.4"
57
+ set[:postgresql][:dir] = "/var/lib/pgsql/data"
58
+
59
+ when "suse"
60
+
61
+ if platform_version.to_f <= 11.1
62
+ default[:postgresql][:version] = "8.3"
63
+ else
64
+ default[:postgresql][:version] = "8.4"
65
+ end
66
+
67
+ set[:postgresql][:dir] = "/var/lib/pgsql/data"
68
+
69
+ else
70
+ default[:postgresql][:version] = "8.4"
71
+ set[:postgresql][:dir] = "/etc/postgresql/#{node[:postgresql][:version]}/main"
72
+ end