daddy 0.5.14 → 0.5.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a5cca7d6764d60692724975965fec3f20c9b445
4
- data.tar.gz: 1a275d8a6663a7f97c3509f428d413a4b93c90c1
3
+ metadata.gz: fa92f5f719307e60e8adb76b87708c25cb6435fb
4
+ data.tar.gz: 39601454cf8dc69ec9e4d519b7825d0b832f2325
5
5
  SHA512:
6
- metadata.gz: d44db4037303591c32446ab4854841e2703637afa90c768755e1ecce8f39ced9f1bcf50c72d78a546dc4c521fedbe49373a3d5eeabd69e8469987361f9401f46
7
- data.tar.gz: b69f97324591275f7fbdbd6555806b7b50153df5f6cd8b8717ea08f5a56065861c457043bca89dabff9f880c3ac209b5a96403be96cdb0081ae3a94fe7ba88e9
6
+ metadata.gz: 6158483a49f6905ee88e2f2d976006efeb263319521a80428a18999e2231c5c55ea5e83ffc287d5fa7a96db1adb7fc1157ab62436754232a1454b5873fd3e3af
7
+ data.tar.gz: b87e96de03475a5f0d3b88100ba43a9f0c522d55e0d317d0f39b3307c0fbf74a0ecb60ed0f44527f00f19dad05b1036e335997d28f9ddd3ebb19fdcd2a576e76
@@ -0,0 +1,25 @@
1
+ require 'daddy/itamae'
2
+
3
+ %w{ git }.each do |name|
4
+ package name do
5
+ user 'root'
6
+ end
7
+ end
8
+
9
+ directory '/opt/letsencrypt' do
10
+ user 'root'
11
+ owner ENV['USER']
12
+ group ENV['USER']
13
+ mode '755'
14
+ end
15
+
16
+ directory '/opt/letsencrypt/certbot' do
17
+ user 'root'
18
+ owner ENV['USER']
19
+ group ENV['USER']
20
+ mode '755'
21
+ end
22
+
23
+ git '/opt/letsencrypt/certbot' do
24
+ repository 'https://github.com/certbot/certbot'
25
+ end
@@ -0,0 +1,20 @@
1
+ require 'daddy/itamae'
2
+
3
+ directory '/etc/nginx/conf.d/servers' do
4
+ user 'root'
5
+ owner 'root'
6
+ group 'root'
7
+ mode '755'
8
+ end
9
+
10
+ template "/etc/nginx/conf.d/servers/#{ENV['APP_NAME']}.conf" do
11
+ source 'templates/app.conf.erb'
12
+ user 'root'
13
+ owner 'root'
14
+ group 'root'
15
+ mode '644'
16
+ variables :app_name => ENV['APP_NAME'],
17
+ :server_name => ENV['SERVER_NAME'],
18
+ :rails_env => ENV['RAILS_ENV'],
19
+ :rails_root => ENV['RAILS_ROOT']
20
+ end
@@ -11,9 +11,11 @@ package 'nginx' do
11
11
  user 'root'
12
12
  end
13
13
 
14
- execute 'mv -f /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org' do
14
+ template '/etc/nginx/nginx.conf' do
15
15
  user 'root'
16
- not_if 'test -e /etc/nginx/conf.d/default.conf.org'
16
+ owner 'root'
17
+ group 'root'
18
+ mode '644'
17
19
  end
18
20
 
19
21
  template '/etc/nginx/conf.d/default.conf' do
@@ -0,0 +1,53 @@
1
+ <%-
2
+ @ssl = system("sudo test -e /etc/letsencrypt/live/#{@server_name}/fullchain.pem") &&
3
+ system("sudo test -e /etc/letsencrypt/live/#{@server_name}/privkey.pem")
4
+ -%>
5
+ upstream <%= @app_name %> {
6
+ server unix:<%= @rails_root %>/tmp/sockets/unicorn.sock fail_timeout=0;
7
+ }
8
+
9
+ server {
10
+ listen 80;
11
+ <%- if @ssl -%>
12
+ listen 443 ssl;
13
+ <%- end -%>
14
+ server_name <%= @server_name %>;
15
+ access_log /var/log/nginx/<%= @app_name %>_access.log ltsv;
16
+
17
+ <%- if @ssl -%>
18
+ ssl_certificate /etc/letsencrypt/live/<%= @server_name %>/fullchain.pem;
19
+ ssl_certificate_key /etc/letsencrypt/live/<%= @server_name %>/privkey.pem;
20
+ <%- end -%>
21
+
22
+ root <%= @rails_root %>/public;
23
+ try_files $uri/index.html $uri @app;
24
+
25
+ gzip on;
26
+ gzip_http_version 1.0;
27
+ gzip_proxied any;
28
+ gzip_min_length 500;
29
+ gzip_disable "MSIE [1-6]\.";
30
+ gzip_types text/plain text/xml text/css
31
+ text/comma-separated-values
32
+ text/javascript application/x-javascript
33
+ application/atom+xml;
34
+
35
+ location @app {
36
+ proxy_pass http://<%= @app_name %>;
37
+ proxy_set_header Host $http_host;
38
+ proxy_set_header X-Real-IP $remote_addr;
39
+ proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
40
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
41
+ }
42
+
43
+ <%- if @rails_env == 'production' -%>
44
+ location ~ ^/(assets)/ {
45
+ gzip_vary on;
46
+ gzip_static always;
47
+ gunzip on;
48
+ expires 1y;
49
+ add_header Cache-Control public;
50
+ add_header ETag "";
51
+ }
52
+ <%- end -%>
53
+ }
@@ -0,0 +1,45 @@
1
+ require 'daddy/itamae'
2
+
3
+ template 'config/unicorn.rb' do
4
+ variables :rails_root => ENV['RAILS_ROOT'],
5
+ :worker_processes => ENV['RAILS_ROOT'] == 'production' ? 2 : 1,
6
+ :timeout => 300
7
+ end
8
+
9
+ case os_version
10
+ when /rhel-6\.(.*?)/
11
+ template "/etc/init.d/#{ENV['APP_NAME']}" do
12
+ source File.join(File.dirname(__FILE__), 'templates/init.d/app.erb')
13
+ user 'root'
14
+ owner 'root'
15
+ group 'root'
16
+ mode '755'
17
+ variables :app_name => ENV['APP_NAME'],
18
+ :rails_env => ENV['RAILS_ENV'],
19
+ :rails_root => ENV['RAILS_ROOT']
20
+ end
21
+ when /rhel-7\.(.*?)/
22
+ template "/etc/systemd/system/#{ENV['APP_NAME']}.service" do
23
+ source File.join(File.dirname(__FILE__), 'templates/systemd/app.service.erb')
24
+ user 'root'
25
+ owner 'root'
26
+ group 'root'
27
+ mode '644'
28
+ variables :app_name => ENV['APP_NAME'],
29
+ :rails_env => ENV['RAILS_ENV'],
30
+ :rails_root => ENV['RAILS_ROOT'],
31
+ :user => ENV['USER'],
32
+ :timeout => 305
33
+ end
34
+
35
+ execute 'systemctl daemon-reload' do
36
+ user 'root'
37
+ subscribes :run, "template[/etc/systemd/system/#{ENV['APP_NAME']}.service]"
38
+ action :nothing
39
+ end
40
+ end
41
+
42
+ service "#{ENV['APP_NAME']}" do
43
+ user 'root'
44
+ action :enable
45
+ end
@@ -1,13 +1,13 @@
1
1
  #!/bin/sh
2
2
  #
3
3
  # chkconfig: - 85 15
4
- # description: <%= app_name %>
4
+ # description: <%= @app_name %>
5
5
 
6
6
  . /etc/rc.d/init.d/functions
7
7
 
8
8
  RAILS_USER=<%= ENV['USER'] %>
9
- RAILS_ENV=<%= rails_env %>
10
- RAILS_ROOT=<%= rails_root %>
9
+ RAILS_ENV=<%= @rails_env %>
10
+ RAILS_ROOT=<%= @rails_root %>
11
11
 
12
12
  PID=${RAILS_ROOT}/tmp/pids/unicorn.pid
13
13
  CONFIG=${RAILS_ROOT}/config/unicorn.rb
@@ -15,13 +15,13 @@ CONFIG=${RAILS_ROOT}/config/unicorn.rb
15
15
  export PATH="${PATH}":/usr/local/bin
16
16
 
17
17
  start() {
18
- echo -n 'Starting <%= app_name %>: '
18
+ echo -n 'Starting <%= @app_name %>: '
19
19
  daemon --user=${RAILS_USER} --pidfile=$PID bundle exec unicorn_rails -c ${CONFIG} -E ${RAILS_ENV} -D
20
20
  echo
21
21
  }
22
22
 
23
23
  stop() {
24
- echo -n 'Stopping <%= app_name %>: '
24
+ echo -n 'Stopping <%= @app_name %>: '
25
25
  killproc -p ${PID} -QUIT
26
26
  echo
27
27
  }
@@ -0,0 +1,15 @@
1
+ [Unit]
2
+ Description = unicorn server for <%= @app_name %>
3
+ Wants = mariadb.service
4
+ After = mariadb.service
5
+
6
+ [Service]
7
+ User = <%= @user %>
8
+ WorkingDirectory = <%= @rails_root %>
9
+ SyslogIdentifier = <%= @app_name %>
10
+ PIDFile = <%= @rails_root %>/tmp/pids/unicorn.pid
11
+ ExecStart = /usr/local/bin/bundle exec unicorn_rails -c <%= @rails_root %>/config/unicorn.rb -E <%= @rails_env %> -D
12
+ ExecStop = <%= `which kill`.strip %> -s QUIT $MAINPID
13
+
14
+ [Install]
15
+ WantedBy = multi-user.target
@@ -0,0 +1,29 @@
1
+ rails_root = "#{File.expand_path(File.dirname(File.dirname(__FILE__)))}"
2
+
3
+ worker_processes <%= @worker_processes %>
4
+ working_directory rails_root
5
+
6
+ listen "#{rails_root}/tmp/sockets/unicorn.sock"
7
+ timeout <%= @timeout %>
8
+
9
+ stdout_path 'log/unicorn.log'
10
+ stderr_path 'log/unicorn.log'
11
+
12
+ preload_app true
13
+
14
+ before_fork do |server, worker|
15
+ defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
16
+
17
+ old_pid = "#{server.config[:pid]}.oldbin"
18
+ if old_pid != server.pid
19
+ begin
20
+ sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
21
+ Process.kill(sig, File.read(old_pid).to_i)
22
+ rescue Errno::ENOENT, Errno::ESRCH
23
+ end
24
+ end
25
+ end
26
+
27
+ after_fork do |server, worker|
28
+ defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
29
+ end
@@ -0,0 +1,25 @@
1
+ require 'daddy/itamae'
2
+
3
+ %w{ mod_ssl vsftpd }.each do |name|
4
+ package name do
5
+ user 'root'
6
+ end
7
+ end
8
+
9
+ template '/etc/vsftpd/vsftpd.conf' do
10
+ user 'root'
11
+ owner 'root'
12
+ group 'root'
13
+ mode '600'
14
+ end
15
+
16
+ service 'vsftpd' do
17
+ user 'root'
18
+ action [:enable, :start]
19
+ end
20
+
21
+ service 'vsftpd' do
22
+ user 'root'
23
+ subscribes :restart, "template[/etc/vsftpd/vsftpd.conf]"
24
+ action :nothing
25
+ end
@@ -0,0 +1,49 @@
1
+ user nginx;
2
+ worker_processes 1;
3
+
4
+ error_log /var/log/nginx/error.log warn;
5
+ pid /var/run/nginx.pid;
6
+
7
+
8
+ events {
9
+ worker_connections 1024;
10
+ }
11
+
12
+
13
+ http {
14
+ include /etc/nginx/mime.types;
15
+ default_type application/octet-stream;
16
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
17
+
18
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
19
+ '$status $body_bytes_sent "$http_referer" '
20
+ '"$http_user_agent" "$http_x_forwarded_for"';
21
+
22
+ log_format ltsv 'time:$time_local\t'
23
+ 'msec:$msec\t'
24
+ 'host:$remote_addr\t'
25
+ 'forwardedfor:$http_x_forwarded_for\t'
26
+ 'req:$request\t'
27
+ 'method:$request_method\t'
28
+ 'uri:$request_uri\t'
29
+ 'status:$status\t'
30
+ 'size:$body_bytes_sent\t'
31
+ 'referer:$http_referer\t'
32
+ 'ua:$http_user_agent\t'
33
+ 'reqtime:$request_time\t'
34
+ 'upsttime:$upstream_response_time\t'
35
+ 'cache:$upstream_http_x_cache\t'
36
+ 'runtime:$upstream_http_x_runtime\t'
37
+ 'vhost:$host';
38
+
39
+ access_log /var/log/nginx/access.log main;
40
+
41
+ sendfile on;
42
+ #tcp_nopush on;
43
+
44
+ keepalive_timeout 65;
45
+
46
+ #gzip on;
47
+
48
+ include /etc/nginx/conf.d/*.conf;
49
+ }
@@ -0,0 +1,146 @@
1
+ # Example config file /etc/vsftpd/vsftpd.conf
2
+ #
3
+ # The default compiled in settings are fairly paranoid. This sample file
4
+ # loosens things up a bit, to make the ftp daemon more usable.
5
+ # Please see vsftpd.conf.5 for all compiled in defaults.
6
+ #
7
+ # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
8
+ # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
9
+ # capabilities.
10
+ #
11
+ # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
12
+ anonymous_enable=NO
13
+ #
14
+ # Uncomment this to allow local users to log in.
15
+ # When SELinux is enforcing check for SE bool ftp_home_dir
16
+ local_enable=YES
17
+ #
18
+ # Uncomment this to enable any form of FTP write command.
19
+ write_enable=YES
20
+ #
21
+ # Default umask for local users is 077. You may wish to change this to 022,
22
+ # if your users expect that (022 is used by most other ftpd's)
23
+ local_umask=022
24
+ #
25
+ # Uncomment this to allow the anonymous FTP user to upload files. This only
26
+ # has an effect if the above global write enable is activated. Also, you will
27
+ # obviously need to create a directory writable by the FTP user.
28
+ # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
29
+ #anon_upload_enable=YES
30
+ #
31
+ # Uncomment this if you want the anonymous FTP user to be able to create
32
+ # new directories.
33
+ #anon_mkdir_write_enable=YES
34
+ #
35
+ # Activate directory messages - messages given to remote users when they
36
+ # go into a certain directory.
37
+ dirmessage_enable=YES
38
+ #
39
+ # Activate logging of uploads/downloads.
40
+ xferlog_enable=YES
41
+ #
42
+ # Make sure PORT transfer connections originate from port 20 (ftp-data).
43
+ connect_from_port_20=YES
44
+ #
45
+ # If you want, you can arrange for uploaded anonymous files to be owned by
46
+ # a different user. Note! Using "root" for uploaded files is not
47
+ # recommended!
48
+ #chown_uploads=YES
49
+ #chown_username=whoever
50
+ #
51
+ # You may override where the log file goes if you like. The default is shown
52
+ # below.
53
+ #xferlog_file=/var/log/xferlog
54
+ #
55
+ # If you want, you can have your log file in standard ftpd xferlog format.
56
+ # Note that the default log file location is /var/log/xferlog in this case.
57
+ xferlog_std_format=YES
58
+ #
59
+ # You may change the default value for timing out an idle session.
60
+ #idle_session_timeout=600
61
+ #
62
+ # You may change the default value for timing out a data connection.
63
+ #data_connection_timeout=120
64
+ #
65
+ # It is recommended that you define on your system a unique user which the
66
+ # ftp server can use as a totally isolated and unprivileged user.
67
+ #nopriv_user=ftpsecure
68
+ #
69
+ # Enable this and the server will recognise asynchronous ABOR requests. Not
70
+ # recommended for security (the code is non-trivial). Not enabling it,
71
+ # however, may confuse older FTP clients.
72
+ #async_abor_enable=YES
73
+ #
74
+ # By default the server will pretend to allow ASCII mode but in fact ignore
75
+ # the request. Turn on the below options to have the server actually do ASCII
76
+ # mangling on files when in ASCII mode.
77
+ # Beware that on some FTP servers, ASCII support allows a denial of service
78
+ # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
79
+ # predicted this attack and has always been safe, reporting the size of the
80
+ # raw file.
81
+ # ASCII mangling is a horrible feature of the protocol.
82
+ #ascii_upload_enable=YES
83
+ #ascii_download_enable=YES
84
+ #
85
+ # You may fully customise the login banner string:
86
+ #ftpd_banner=Welcome to blah FTP service.
87
+ #
88
+ # You may specify a file of disallowed anonymous e-mail addresses. Apparently
89
+ # useful for combatting certain DoS attacks.
90
+ #deny_email_enable=YES
91
+ # (default follows)
92
+ #banned_email_file=/etc/vsftpd/banned_emails
93
+ #
94
+ # You may specify an explicit list of local users to chroot() to their home
95
+ # directory. If chroot_local_user is YES, then this list becomes a list of
96
+ # users to NOT chroot().
97
+ # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
98
+ # the user does not have write access to the top level directory within the
99
+ # chroot)
100
+ #chroot_local_user=YES
101
+ #chroot_list_enable=YES
102
+ # (default follows)
103
+ #chroot_list_file=/etc/vsftpd/chroot_list
104
+ #
105
+ # You may activate the "-R" option to the builtin ls. This is disabled by
106
+ # default to avoid remote users being able to cause excessive I/O on large
107
+ # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
108
+ # the presence of the "-R" option, so there is a strong case for enabling it.
109
+ #ls_recurse_enable=YES
110
+ #
111
+ # When "listen" directive is enabled, vsftpd runs in standalone mode and
112
+ # listens on IPv4 sockets. This directive cannot be used in conjunction
113
+ # with the listen_ipv6 directive.
114
+ listen=NO
115
+ #
116
+ # This directive enables listening on IPv6 sockets. By default, listening
117
+ # on the IPv6 "any" address (::) will accept connections from both IPv6
118
+ # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
119
+ # sockets. If you want that (perhaps because you want to listen on specific
120
+ # addresses) then you must run two copies of vsftpd with two configuration
121
+ # files.
122
+ # Make sure, that one of the listen options is commented !!
123
+ listen_ipv6=YES
124
+
125
+ pam_service_name=vsftpd
126
+ userlist_enable=YES
127
+ tcp_wrappers=NO
128
+
129
+ ssl_enable=YES
130
+ listen_port=990
131
+ rsa_cert_file=/etc/pki/tls/certs/localhost.crt
132
+ rsa_private_key_file=/etc/pki/tls/private/localhost.key
133
+ ssl_tlsv1=YES
134
+ ssl_sslv2=NO
135
+ ssl_sslv3=NO
136
+ ssl_ciphers=HIGH
137
+ allow_anon_ssl=NO
138
+ force_local_data_ssl=YES
139
+ force_local_logins_ssl=YES
140
+ require_ssl_reuse=NO
141
+
142
+ pasv_enable=YES
143
+ pasv_promiscuous=YES
144
+ implicit_ssl=YES
145
+ pasv_min_port=50990
146
+ pasv_max_port=50999
@@ -1,4 +1,5 @@
1
1
  def dad_env
2
- ENV['DAD_ENV'] ||= ENV['RAILS_ENV']
3
- ENV['DAD_ENV'] ||= 'development'
2
+ ret = ENV['DAD_ENV']
3
+ ret ||= ENV['RAILS_ENV']
4
+ ret ||= 'development'
4
5
  end
@@ -1,3 +1,3 @@
1
1
  def os_version
2
- ENV['DAD_OS_VERSION'] ||= "#{node[:platform_family]}-#{node[:platform_version]}"
2
+ "#{node.platform_family}-#{node.platform_version}"
3
3
  end
data/lib/daddy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Daddy
2
- VERSION = '0.5.14'
2
+ VERSION = '0.5.15'
3
3
  end
@@ -13,7 +13,7 @@ namespace :dad do
13
13
  end
14
14
  end
15
15
 
16
- desc 'install Docker'
16
+ desc I18n.t('docker.install')
17
17
  task :install do
18
18
  run_itamae 'docker/install'
19
19
  end
@@ -0,0 +1,12 @@
1
+ require_relative 'task_helper'
2
+
3
+ namespace :dad do
4
+ namespace :letsencrypt do
5
+
6
+ desc I18n.t('letsencrypt.install')
7
+ task :install do
8
+ run_itamae 'letsencrypt/install'
9
+ end
10
+
11
+ end
12
+ end
@@ -1,9 +1,17 @@
1
1
  en:
2
+ docker:
3
+ install: install Docker
2
4
  god:
3
5
  install: install God
4
6
  jenkins:
5
7
  install: install Jenkins
6
8
  plugins:
7
9
  install: install Jenkins plugins
10
+ letsencrypt:
11
+ install: install Let's Eencrypt certbot
8
12
  nginx:
9
13
  install: install Nginx
14
+ unicorn:
15
+ install: install application as unicorn service
16
+ vsftpd:
17
+ install: install vsftpd
@@ -1,9 +1,17 @@
1
1
  ja:
2
+ docker:
3
+ install: Docker をインストールします
2
4
  god:
3
5
  install: God をインストールします
4
6
  jenkins:
5
7
  install: Jenkinsをインストールします
6
8
  plugins:
7
9
  install: Jenkinsプラグインをインストールします
10
+ letsencrypt:
11
+ install: Let's Eencrypt の certbot をインストールします
8
12
  nginx:
9
- install: Nginxをインストールします。
13
+ install: Nginxをインストールします
14
+ unicorn:
15
+ install: アプリをUnicornサービスとしてインストールします
16
+ vsftpd:
17
+ install: vsftpd をインストールします
data/lib/tasks/nginx.rake CHANGED
@@ -10,15 +10,11 @@ namespace :dad do
10
10
 
11
11
  desc 'Nginxにアプリの設定ファイルをインストールします。'
12
12
  task :config do
13
- @server_name = ENV['SERVER_NAME'] || ask('SERVER_NAME', :default => 'localhost', :required => true)
14
- @rails_env = rails_env(:default => 'production')
15
- app_conf = render File.join(File.dirname(__FILE__), 'nginx', 'app.conf.erb'),
16
- :to => "tmp/daddy/nginx/#{app_name}.conf"
17
-
18
- unless dry_run?
19
- run "sudo mkdir -p /etc/nginx/conf.d/servers",
20
- "sudo cp -f #{app_conf.path} /etc/nginx/conf.d/servers/"
21
- end
13
+ ENV['APP_NAME'] ||= app_name
14
+ ENV['SERVER_NAME'] ||= ask('SERVER_NAME', :default => 'localhost', :required => true)
15
+ ENV['RAILS_ENV'] ||= rails_env(:default => 'development')
16
+ ENV['RAILS_ROOT'] ||= rails_root
17
+ run_itamae 'nginx/config'
22
18
  end
23
19
 
24
20
  end
@@ -12,7 +12,7 @@ def self.daddy_version
12
12
  end
13
13
 
14
14
  def self.rails_root
15
- ENV['RAILS_ROOT'] || @_rails_root ||= ask('RAILS_ROOT', :default => Rails.root)
15
+ ENV['RAILS_ROOT'] || @_rails_root ||= ask('RAILS_ROOT', :default => Dir.pwd)
16
16
  end
17
17
 
18
18
  def self.rails_env(options = {})
@@ -20,7 +20,7 @@ def self.rails_env(options = {})
20
20
  end
21
21
 
22
22
  def self.app_name
23
- YAML.load_file("#{rails_root}/config/database.yml")[rails_env]['database']
23
+ ENV['APP_NAME'] || @_app_name ||= ask('APP_NAME', :default => File.basename(Dir.pwd))
24
24
  end
25
25
 
26
26
  def self.template_dir
@@ -72,18 +72,18 @@ def self.ask(prompt, options = {})
72
72
  end
73
73
 
74
74
  answer = STDIN.gets.strip
75
- answer = options[:default] if answer.blank?
75
+ answer = options[:default] if answer.empty?
76
76
 
77
77
  if options[:password]
78
78
  system("stty echo")
79
79
  puts
80
80
  end
81
81
 
82
- if options[:required] and answer.blank?
82
+ if options[:required] and answer.empty?
83
83
  raise "必須です。処理を中止します。"
84
84
  end
85
85
 
86
- answer.blank? ? nil : answer
86
+ answer.empty? ? nil : answer
87
87
  end
88
88
 
89
89
  def self.quiet?
@@ -3,32 +3,13 @@ require_relative 'task_helper'
3
3
  namespace :dad do
4
4
  namespace :unicorn do
5
5
 
6
- desc 'Unicornの設定を行います。'
7
- task :config do
8
- config = render File.join(File.dirname(__FILE__), 'unicorn', 'unicorn.rb.erb'),
9
- :to => File.join('tmp', 'unicorn', 'unicorn.rb')
10
-
11
- init_script = render File.join(File.dirname(__FILE__), 'unicorn', 'unicorn.erb'),
12
- :to => File.join('tmp', 'unicorn', "unicorn_#{app_name}")
13
-
14
- if dry_run?
15
- puts "----------------------------------------"
16
- puts config
17
- puts "----------------------------------------"
18
- puts File.read(config)
19
- puts "----------------------------------------"
20
- puts init_script
21
- puts "----------------------------------------"
22
- puts File.read(init_script)
23
- puts "----------------------------------------"
24
- else
25
- run "cp -f #{config.path} config/",
26
- "sudo cp -f #{init_script.path} /etc/init.d/",
27
- "sudo chown root:root /etc/init.d/#{File.basename(init_script.path)}",
28
- "sudo chmod 755 /etc/init.d/#{File.basename(init_script.path)}",
29
- "sudo /sbin/chkconfig #{File.basename(init_script.path)} on"
30
- end
31
- end
6
+ desc I18n.t('unicorn.install')
7
+ task :install do
8
+ ENV['APP_NAME'] ||= app_name
9
+ ENV['RAILS_ENV'] ||= rails_env(:default => 'development')
10
+ ENV['RAILS_ROOT'] ||= rails_root
11
+ run_itamae 'unicorn/install'
12
+ end
32
13
 
33
14
  end
34
15
  end
@@ -0,0 +1,12 @@
1
+ require_relative 'task_helper'
2
+
3
+ namespace :dad do
4
+ namespace :vsftpd do
5
+
6
+ desc I18n.t('vsftpd.install')
7
+ task :install do
8
+ run_itamae 'vsftpd/install'
9
+ end
10
+
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daddy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.14
4
+ version: 0.5.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - ichy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-28 00:00:00.000000000 Z
11
+ date: 2016-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -253,12 +253,20 @@ files:
253
253
  - itamae/cookbooks/god/install.rb
254
254
  - itamae/cookbooks/jenkins/install.rb
255
255
  - itamae/cookbooks/jenkins/plugins/install.rb
256
+ - itamae/cookbooks/letsencrypt/install.rb
256
257
  - itamae/cookbooks/mysql/install.rb
257
258
  - itamae/cookbooks/mysql/mysql_secure_installation.sh
258
259
  - itamae/cookbooks/netdata/install.rb
259
260
  - itamae/cookbooks/netdata/netdata-installer.sh
261
+ - itamae/cookbooks/nginx/config.rb
260
262
  - itamae/cookbooks/nginx/install.rb
263
+ - itamae/cookbooks/nginx/templates/app.conf.erb
261
264
  - itamae/cookbooks/phantomjs/install.rb
265
+ - itamae/cookbooks/unicorn/install.rb
266
+ - itamae/cookbooks/unicorn/templates/init.d/app.erb
267
+ - itamae/cookbooks/unicorn/templates/systemd/app.service.erb
268
+ - itamae/cookbooks/unicorn/templates/unicorn.rb.erb
269
+ - itamae/cookbooks/vsftpd/install.rb
262
270
  - itamae/locale/en.yml
263
271
  - itamae/locale/ja.yml
264
272
  - itamae/templates/etc/god/master.conf.erb
@@ -267,7 +275,9 @@ files:
267
275
  - itamae/templates/etc/my.cnf.d/daddy.cnf.erb
268
276
  - itamae/templates/etc/my.cnf.erb
269
277
  - itamae/templates/etc/nginx/conf.d/default.conf.erb
278
+ - itamae/templates/etc/nginx/nginx.conf.erb
270
279
  - itamae/templates/etc/sysconfig/jenkins.erb
280
+ - itamae/templates/etc/vsftpd/vsftpd.conf.erb
271
281
  - itamae/templates/etc/yum.repos.d/docker.repo.erb
272
282
  - itamae/templates/etc/yum.repos.d/nginx.repo.erb
273
283
  - lib/active_support/cache/null_store.rb
@@ -343,12 +353,12 @@ files:
343
353
  - lib/tasks/kibana/configure.sh
344
354
  - lib/tasks/kibana/install.sh
345
355
  - lib/tasks/kibana/nginx.conf.erb
356
+ - lib/tasks/letsencrypt.rake
346
357
  - lib/tasks/locale/en.yml
347
358
  - lib/tasks/locale/ja.yml
348
359
  - lib/tasks/mysql.rake
349
360
  - lib/tasks/netdata.rake
350
361
  - lib/tasks/nginx.rake
351
- - lib/tasks/nginx/app.conf.erb
352
362
  - lib/tasks/phantomjs.rake
353
363
  - lib/tasks/publish.rake
354
364
  - lib/tasks/redis.rake
@@ -359,8 +369,7 @@ files:
359
369
  - lib/tasks/tesseract.rake
360
370
  - lib/tasks/test.rake
361
371
  - lib/tasks/unicorn.rake
362
- - lib/tasks/unicorn/unicorn.erb
363
- - lib/tasks/unicorn/unicorn.rb.erb
372
+ - lib/tasks/vsftpd.rake
364
373
  - ssl/cert.pem
365
374
  - templates/Gemfile.erb
366
375
  - templates/app/controllers/controller.rb.erb
@@ -384,7 +393,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
384
393
  requirements:
385
394
  - - "~>"
386
395
  - !ruby/object:Gem::Version
387
- version: '2.0'
396
+ version: '2.1'
388
397
  required_rubygems_version: !ruby/object:Gem::Requirement
389
398
  requirements:
390
399
  - - ">="
@@ -1,28 +0,0 @@
1
- upstream <%= app_name %> {
2
- server unix:/tmp/<%= app_name %>.sock;
3
- }
4
-
5
- server {
6
- listen 80;
7
- server_name <%= @server_name %>;
8
-
9
- root <%= rails_root %>/public;
10
- try_files $uri/index.html $uri @app;
11
-
12
- location @app {
13
- proxy_pass http://<%= app_name %>;
14
- proxy_set_header Host $http_host;
15
- proxy_set_header X-Real-IP $remote_addr;
16
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
17
- }
18
-
19
- <% if @rails_env == 'production' -%>
20
- location ~ ^/(assets)/ {
21
- gzip_vary on;
22
- gzip_static on;
23
- expires 1y;
24
- add_header Cache-Control public;
25
- add_header ETag "";
26
- }
27
- <% end -%>
28
- }
@@ -1,32 +0,0 @@
1
- require 'yaml'
2
-
3
- rails_root = "#{File.dirname(File.expand_path(__FILE__))}/.."
4
- rails_env = ENV['RAILS_ENV'] || 'development'
5
-
6
- worker_processes 2
7
- working_directory rails_root
8
-
9
- app_name = YAML.load_file("#{File.dirname(__FILE__)}/database.yml")[rails_env]['database']
10
- listen "/tmp/#{app_name}.sock"
11
- timeout 300
12
-
13
- stdout_path rails_root + '/log/unicorn.log'
14
- stderr_path rails_root + '/log/unicorn.log'
15
-
16
- preload_app true
17
-
18
- before_fork do |server, worker|
19
- ActiveRecord::Base.connection.disconnect!
20
- old_pid = "#{server.config[:pid]}.oldbin"
21
- if old_pid != server.pid
22
- begin
23
- sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
24
- Process.kill(sig, File.read(old_pid).to_i)
25
- rescue Errno::ENOENT, Errno::ESRCH
26
- end
27
- end
28
- end
29
-
30
- after_fork do |server, worker|
31
- ActiveRecord::Base.establish_connection
32
- end