taperole 1.5.5 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hound.yml +3 -0
- data/.travis.yml +10 -0
- data/CHANGELOG.md +9 -0
- data/README.md +22 -5
- data/bin/tape +6 -0
- data/lib/tape/ansible_runner.rb +1 -0
- data/lib/tape/overwriter.rb +14 -0
- data/requirements.yml +1 -2
- data/roles/backend_install_essentials/meta/main.yml +1 -1
- data/roles/backend_install_essentials/tasks/main.yml +5 -0
- data/roles/backend_install_essentials/templates/gemrc.j2 +1 -0
- data/roles/postgres/meta/main.yml +2 -0
- data/roles/ruby/defaults/main.yml +11 -0
- data/roles/ruby/files/gemrc +5 -0
- data/{vendor/zzet.rbenv → roles/ruby}/tasks/apt_build_depends.yml +2 -3
- data/roles/ruby/tasks/main.yml +120 -0
- data/taperole.gemspec +1 -1
- data/templates/base/tape_vars.example.yml +17 -0
- data/test/base_docker_box/Dockerfile +38 -0
- data/test/rails/Dockerfile +34 -0
- data/test/rails/start_rails.sh +6 -0
- data/test/rails/tape_vars.yml +12 -0
- data/vars/defaults.yml +26 -0
- data/vendor/Stouts.backup/.bumpversion.cfg +6 -0
- data/vendor/Stouts.backup/.gitignore +1 -0
- data/vendor/Stouts.backup/.travis.yml +34 -0
- data/vendor/Stouts.backup/CONTRIBUTORS +7 -0
- data/vendor/Stouts.backup/LICENSE +21 -0
- data/vendor/Stouts.backup/Makefile +20 -0
- data/vendor/Stouts.backup/README.md +169 -0
- data/vendor/Stouts.backup/defaults/main.yml +93 -0
- data/vendor/Stouts.backup/meta/.galaxy_install_info +1 -0
- data/vendor/Stouts.backup/meta/main.yml +16 -0
- data/vendor/Stouts.backup/tasks/backup.yml +10 -0
- data/vendor/Stouts.backup/tasks/configure.yml +53 -0
- data/vendor/Stouts.backup/tasks/install.deb.yml +19 -0
- data/vendor/Stouts.backup/tasks/main.yml +5 -0
- data/vendor/Stouts.backup/tasks/remove.yml +12 -0
- data/vendor/Stouts.backup/templates/conf.j2 +78 -0
- data/vendor/Stouts.backup/templates/cron.j2 +10 -0
- data/vendor/Stouts.backup/templates/duply.sh.j2 +2240 -0
- data/vendor/Stouts.backup/templates/exclude.j2 +3 -0
- data/vendor/Stouts.backup/templates/logrotate.j2 +14 -0
- data/vendor/Stouts.backup/templates/post.j2 +14 -0
- data/vendor/Stouts.backup/templates/pre.j2 +26 -0
- data/vendor/Stouts.backup/templates/restore.j2 +29 -0
- data/vendor/Stouts.backup/test.yml +6 -0
- metadata +42 -26
- data/id_rsa_sb_basebox +0 -27
- data/vendor/zzet.rbenv/.kitchen.yml +0 -40
- data/vendor/zzet.rbenv/.travis.yml +0 -15
- data/vendor/zzet.rbenv/README.md +0 -100
- data/vendor/zzet.rbenv/defaults/main.yml +0 -20
- data/vendor/zzet.rbenv/files/default-gems +0 -1
- data/vendor/zzet.rbenv/files/gemrc +0 -4
- data/vendor/zzet.rbenv/meta/.galaxy_install_info +0 -1
- data/vendor/zzet.rbenv/meta/main.yml +0 -27
- data/vendor/zzet.rbenv/role.yml +0 -10
- data/vendor/zzet.rbenv/tasks/homebrew_build_depends.yml +0 -12
- data/vendor/zzet.rbenv/tasks/main.yml +0 -226
- data/vendor/zzet.rbenv/tasks/pacman_build_depends.yml +0 -2
- data/vendor/zzet.rbenv/tasks/yum_build_depends.yml +0 -15
- data/vendor/zzet.rbenv/test/integration/default/serverspec/rbenv_spec.rb +0 -26
- data/vendor/zzet.rbenv/test/integration/helpers/serverspec/spec_helper.rb +0 -10
- data/vendor/zzet.rbenv/test/integration/site.yml +0 -8
- data/vendor/zzet.rbenv/vars/user.yml +0 -2
- /data/{vendor/zzet.rbenv → roles/ruby}/files/vars +0 -0
- /data/{vendor/zzet.rbenv → roles/ruby}/handlers/main.yml +0 -0
- /data/{vendor/zzet.rbenv → roles/ruby}/templates/rbenv.sh.j2 +0 -0
- /data/{vendor/zzet.rbenv → roles/ruby}/vars/main.yml +0 -0
- /data/{vendor/zzet.rbenv → roles/ruby}/vars/system.yml +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd21b5c1b7d9532c3a6225c43fc6225726196307
|
4
|
+
data.tar.gz: 1b30b5918731df5a64930e0fc7705ea9e05a53ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: accd791072ff897618d73a8a0d7b412feacdc3ab40740ddc5dd9939092ba1f7695d3f3cf5629fc6f61fca0848c061453d1499cec2262e0792799c1a92f937bf6
|
7
|
+
data.tar.gz: 8109633af31ad2bbc309aff92848c9c94f870048a1039eb2f9f33ce8ff481648d858b9c0e8886e114b75ce6d28a3fa6217ac19c7e88041bd1a6b6eca72a0b003
|
data/.hound.yml
CHANGED
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
### 1.6.0
|
2
|
+
* Added Hound
|
3
|
+
* Documentation Updates
|
4
|
+
* Added option to ask for ansible vault password so that we can use ansible vaults
|
5
|
+
* Added postgresql backup functionality
|
6
|
+
* Move ruby installation out of zzet ansible galaxy role
|
7
|
+
* Added travis automated testing with Docker
|
8
|
+
* Added an overwrite command so that users can overwrite a role
|
9
|
+
|
1
10
|
### 1.5.0
|
2
11
|
* Self-signed SSL is now on by default
|
3
12
|
* Port 80 redirects to 443
|
data/README.md
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/smashingboxes/taperole.svg?branch=master)](https://travis-ci.org/smashingboxes/taperole)
|
1
2
|
[![Stories in Ready](https://badge.waffle.io/smashingboxes/taperole.png?label=ready&title=Ready)](https://waffle.io/smashingboxes/tape)
|
2
3
|
# Infrastructure Management
|
3
4
|
|
4
|
-
[![Slack Status](https://taperole-slack.herokuapp.com/badge.svg)](https://taperole-slack.herokuapp.com/)
|
5
|
-
|
6
5
|
## Deploying & provisioning with tape
|
7
|
-
**Use Unbuntu
|
6
|
+
**Use Unbuntu trusty64 (14.04 x64)**
|
8
7
|
|
9
8
|
**Enable ssh access via root user**
|
10
9
|
|
10
|
+
For a tutorial on getting started: [Taperole: the Smashing Boxes Way to Deploy Your Rails App](http://smashingboxes.com/blog/taperole-the-smashing-boxes-way-to-deploy-your-rails-app)
|
11
|
+
|
11
12
|
### Basics
|
12
13
|
|
13
14
|
**Install**
|
@@ -40,8 +41,13 @@ tape installer install
|
|
40
41
|
|
41
42
|
All default configurations found in `vars/defaults.yml` can be overridden in your local `taperole/tape_vars.yml` file
|
42
43
|
|
43
|
-
**Default Node Version**: 4.2.x
|
44
|
-
**Default Ruby Version** 2.3.0
|
44
|
+
**Default Node Version**: 4.2.x
|
45
|
+
**Default Ruby Version** 2.3.0
|
46
|
+
|
47
|
+
### Backups
|
48
|
+
Backups are handled via [duply](http://duply.net/) and occur every night at 4am under the root user. You can configure your backup schedule and target where you want your backups stored at within your `taperole/tape_vars.yml` file.
|
49
|
+
|
50
|
+
By default, all servers in your [production] group will have backups enabled
|
45
51
|
|
46
52
|
### Custom roles
|
47
53
|
You can add app specific ansible roles to `<app_root>/roles`.
|
@@ -75,6 +81,7 @@ tape ansible deploy -l staging
|
|
75
81
|
### With vagrant
|
76
82
|
|
77
83
|
|
84
|
+
1. `echo 'y' | tape installer install`
|
78
85
|
1. `vagrant up`
|
79
86
|
2. Put the following into your [hosts inventory file](http://docs.ansible.com/intro_inventory.html):
|
80
87
|
|
@@ -89,6 +96,16 @@ You can specify a port using the `ansible_ssh_port` in your hosts inventory file
|
|
89
96
|
3. Update `tape_vars.yml` with information to a [rails app you want to deploy](https://github.com/BrandonMathis/vanilla-rails-app)
|
90
97
|
4. `tape ansible everything -l vagrant`
|
91
98
|
|
99
|
+
### With Docker
|
100
|
+
1. Setup your machine to work with Docker. We recommend [Docker Machine](https://docs.docker.com/machine/)
|
101
|
+
|
102
|
+
**Test Rails**
|
103
|
+
|
104
|
+
2. `docker build -f test/rails/Dockerfile -t tapetest .`
|
105
|
+
3. `docker run -i -t $(docker images -q imagetest) /start_rails.sh | grep "Hello"`
|
106
|
+
|
107
|
+
If the last command resulted in a `<h1>Hello</h1>` then your Rails application deployed successfully!
|
108
|
+
|
92
109
|
## Development
|
93
110
|
|
94
111
|
```sh
|
data/bin/tape
CHANGED
@@ -11,6 +11,7 @@ opt_parser = OptionParser.new do |opts|
|
|
11
11
|
opts.banner = "Usage: tape <module> <action> [options]"
|
12
12
|
|
13
13
|
opts.on("-v", "--[no-]verbose", "Be loud") {|v| options.verbose = v}
|
14
|
+
opts.on("--ask-vault-pass", "Ask for Ansible vault password") { options.vault = true }
|
14
15
|
|
15
16
|
opts.on("-i", "--inventory [INVENTORY_FILE]",
|
16
17
|
String, "Do actions with the given inventory file") do |i|
|
@@ -47,6 +48,11 @@ opt_parser = OptionParser.new do |opts|
|
|
47
48
|
options.tags = t
|
48
49
|
end
|
49
50
|
|
51
|
+
opts.on("-r", "--role=ROLE_NAME",
|
52
|
+
String, "name of the role to operate on") do |r|
|
53
|
+
options.role = r
|
54
|
+
end
|
55
|
+
|
50
56
|
opts.separator ''
|
51
57
|
opts.separator "MODULES"
|
52
58
|
TapeBoxer.registered_modules.values.each do |exec_module|
|
data/lib/tape/ansible_runner.rb
CHANGED
@@ -93,6 +93,7 @@ class AnsibleRunner < ExecutionModule
|
|
93
93
|
def exec_ansible(playbook, args)
|
94
94
|
enforce_roles_path!
|
95
95
|
cmd = "ANSIBLE_CONFIG=#{local_dir}/.tape/ansible.cfg ansible-playbook -i #{inventory_file} #{playbook} #{args} #{hosts_flag} -e tape_dir=#{tape_dir}"
|
96
|
+
cmd += ' --ask-vault-pass' if opts.vault
|
96
97
|
cmd += ' -vvvv' if opts.verbose
|
97
98
|
cmd += " -t #{opts.tags}" if opts.tags
|
98
99
|
STDERR.puts "Executing: #{cmd}" if opts.verbose
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
module TapeBoxer
|
3
|
+
class Overwriter < ExecutionModule
|
4
|
+
TapeBoxer.register_module :overwrite, self
|
5
|
+
|
6
|
+
action :role,
|
7
|
+
proc { overwrite_role },
|
8
|
+
"Overwrite a taperole ansible role"
|
9
|
+
|
10
|
+
def overwrite_role
|
11
|
+
FileUtils.cp_r("#{tape_dir}/roles/#{opts.role}", "taperole/roles/")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/requirements.yml
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
gem: --no-rdoc --no-ri
|
@@ -13,3 +13,5 @@ dependencies:
|
|
13
13
|
db: "{{ app_name }}_{{ be_app_env }}"
|
14
14
|
role_attr_flags: CREATEDB,LOGIN,REPLICATION,SUPERUSER
|
15
15
|
postgresql_ext_install_dev_headers: yes
|
16
|
+
- role: Stouts.backup
|
17
|
+
when: group_names[0] in backup_hosts # Allows user to pick which hosts have backups enabled (defaults to production)
|
@@ -0,0 +1,120 @@
|
|
1
|
+
---
|
2
|
+
- name: include env vars
|
3
|
+
include_vars: "{{ rbenv.env }}.yml"
|
4
|
+
|
5
|
+
- include: apt_build_depends.yml
|
6
|
+
when: ansible_pkg_mgr == 'apt'
|
7
|
+
|
8
|
+
- name: set rbenv_owner
|
9
|
+
set_fact: 'rbenv_owner={{ rbenv_owner | default("root", true) }}'
|
10
|
+
|
11
|
+
- name: checkout rbenv_repo for system
|
12
|
+
become: yes
|
13
|
+
become_user: '{{ rbenv_owner }}'
|
14
|
+
git: >
|
15
|
+
repo={{ rbenv_repo }}
|
16
|
+
dest={{ rbenv_root }}
|
17
|
+
version={{ rbenv.version }}
|
18
|
+
accept_hostkey=yes
|
19
|
+
force=yes
|
20
|
+
when: rbenv.env == "system"
|
21
|
+
tags:
|
22
|
+
- rbenv
|
23
|
+
|
24
|
+
- name: create plugins directory for system
|
25
|
+
become: yes
|
26
|
+
become_user: '{{ rbenv_owner }}'
|
27
|
+
file: state=directory path={{ rbenv_root }}/plugins
|
28
|
+
when: rbenv.env == "system"
|
29
|
+
tags:
|
30
|
+
- rbenv
|
31
|
+
|
32
|
+
- name: install plugins for system
|
33
|
+
become: yes
|
34
|
+
become_user: '{{ rbenv_owner }}'
|
35
|
+
git: >
|
36
|
+
repo=https://github.com/rbenv/ruby-build.git
|
37
|
+
dest={{ rbenv_root }}/plugins/ruby-build
|
38
|
+
accept_hostkey=yes
|
39
|
+
force=yes
|
40
|
+
tags:
|
41
|
+
- rbenv
|
42
|
+
|
43
|
+
- name: Set group ownership of content under rbenv_root
|
44
|
+
shell:
|
45
|
+
find '{{ rbenv_root }}'
|
46
|
+
\( -iname ".git" -prune \) -o
|
47
|
+
! -group '{{ item }}'
|
48
|
+
-exec chgrp -v '{{ item }}' {} + | head -n 1
|
49
|
+
become: yes
|
50
|
+
with_items: '{{ rbenv_group }}'
|
51
|
+
when:
|
52
|
+
- rbenv.env == "system"
|
53
|
+
- rbenv_group is defined
|
54
|
+
- rbenv_group != None
|
55
|
+
register: rbenv_chgrp
|
56
|
+
changed_when: '"changed group" in rbenv_chgrp.stdout'
|
57
|
+
tags:
|
58
|
+
- rbenv
|
59
|
+
|
60
|
+
- name: Set group permissions of content under rbenv_root
|
61
|
+
shell:
|
62
|
+
find '{{ rbenv_root }}'
|
63
|
+
\( -iname ".git" -prune \) -o
|
64
|
+
-type d ! -perm -g+s
|
65
|
+
-exec chmod -v g+rwxs {} + | head -n 1
|
66
|
+
become: yes
|
67
|
+
when:
|
68
|
+
- rbenv.env == "system"
|
69
|
+
- rbenv_group is defined
|
70
|
+
- rbenv_group != None
|
71
|
+
register: rbenv_chmod
|
72
|
+
changed_when: '"changed from" in rbenv_chmod.stdout'
|
73
|
+
tags:
|
74
|
+
- rbenv
|
75
|
+
|
76
|
+
- name: add rbenv initialization to profile system-wide
|
77
|
+
template: src=rbenv.sh.j2 dest=/etc/profile.d/rbenv.sh owner=root group=root mode=0755
|
78
|
+
become: yes
|
79
|
+
when:
|
80
|
+
- ansible_os_family != 'OpenBSD'
|
81
|
+
tags:
|
82
|
+
- rbenv
|
83
|
+
|
84
|
+
- name: check ruby {{ rbenv.ruby_version }} installed for system
|
85
|
+
shell: $SHELL -lc "rbenv versions | grep {{ rbenv.ruby_version }}"
|
86
|
+
register: ruby_installed
|
87
|
+
changed_when: false
|
88
|
+
ignore_errors: yes
|
89
|
+
always_run: yes
|
90
|
+
when: rbenv.env == "system"
|
91
|
+
tags:
|
92
|
+
- rbenv
|
93
|
+
|
94
|
+
- name: install ruby {{ rbenv.ruby_version }} for system
|
95
|
+
shell: bash -lc "rbenv install {{ rbenv.ruby_version }}"
|
96
|
+
become: yes
|
97
|
+
when:
|
98
|
+
- rbenv.env == "system"
|
99
|
+
- ruby_installed.rc != 0
|
100
|
+
tags:
|
101
|
+
- rbenv
|
102
|
+
|
103
|
+
- name: check if current system ruby version is {{ rbenv.ruby_version }}
|
104
|
+
shell: $SHELL -lc "rbenv version | cut -d ' ' -f 1 | grep -Fx '{{ rbenv.ruby_version }}'"
|
105
|
+
register: ruby_selected
|
106
|
+
changed_when: false
|
107
|
+
ignore_errors: yes
|
108
|
+
always_run: yes
|
109
|
+
when: rbenv.env == "system"
|
110
|
+
tags:
|
111
|
+
- rbenv
|
112
|
+
|
113
|
+
- name: set ruby {{ rbenv.ruby_version }} for system
|
114
|
+
become: yes
|
115
|
+
shell: bash -lc "rbenv global {{ rbenv.ruby_version }} && rbenv rehash"
|
116
|
+
when:
|
117
|
+
- rbenv.env == "system"
|
118
|
+
- ruby_selected.rc != 0
|
119
|
+
tags:
|
120
|
+
- rbenv
|
data/taperole.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "taperole"
|
3
|
-
spec.version = '1.
|
3
|
+
spec.version = '1.6.0'
|
4
4
|
spec.authors = ['Jack Forrest', 'Smashing Boxes', 'Brandon Mathis']
|
5
5
|
spec.description = "General purpose server provisioning and application deployment toolkit"
|
6
6
|
spec.email = ['jack@smashingboxes.com', 'brandon@sbox.es']
|
@@ -10,3 +10,20 @@ be_app_repo:
|
|
10
10
|
# fe_build_command: gulp build
|
11
11
|
|
12
12
|
slack_webhook_url:
|
13
|
+
|
14
|
+
# Configure Postgresql Backups
|
15
|
+
#
|
16
|
+
# Store Backups on S3
|
17
|
+
# backup_dir: s3+http://[aws_access_key:aws_secret_access_key]@bucket_name[/folder]
|
18
|
+
#
|
19
|
+
# Store Backups on Seperate server via rsync
|
20
|
+
# backup_dir: s3+http://[aws_access_key:aws_secret_access_key]@bucket_name[/folder]
|
21
|
+
#
|
22
|
+
# Adjust Cron Job Schedule (default is every night at 4am)
|
23
|
+
# backup_schedule: "* */4 * * *"
|
24
|
+
#
|
25
|
+
# Change Which Servers are backed up
|
26
|
+
# backup_hosts:
|
27
|
+
# - production
|
28
|
+
# - staging
|
29
|
+
# - qa
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Start with the ubuntu image
|
2
|
+
FROM ubuntu
|
3
|
+
|
4
|
+
CMD ["bash"]
|
5
|
+
|
6
|
+
# Update apt cache
|
7
|
+
RUN apt-get -y update
|
8
|
+
|
9
|
+
# Install ansible dependencies
|
10
|
+
RUN apt-get install -y python-dev git aptitude sudo wget make zlib1g-dev libssl-dev build-essential libreadline-dev libyaml-dev libxml2-dev libcurl4-openssl-dev python-software-properties libffi-dev curl
|
11
|
+
|
12
|
+
# Install Ruby
|
13
|
+
WORKDIR /tmp
|
14
|
+
RUN wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
|
15
|
+
RUN tar -xvzf ruby-2.3.0.tar.gz
|
16
|
+
WORKDIR /tmp/ruby-2.3.0
|
17
|
+
RUN ./configure --prefix=/usr/local
|
18
|
+
RUN make
|
19
|
+
RUN make install
|
20
|
+
|
21
|
+
# Add an authorized_keys file to the container since tape expects this
|
22
|
+
RUN mkdir -p /root/.ssh
|
23
|
+
RUN touch /root/.ssh/authorized_keys
|
24
|
+
RUN chown root:root /root/.ssh/authorized_keys
|
25
|
+
RUN chmod 600 /root/.ssh/authorized_keys
|
26
|
+
|
27
|
+
# Clone ansible repo (could also add the ansible PPA and do an apt-get install instead)
|
28
|
+
RUN apt-get install wget
|
29
|
+
RUN wget https://bootstrap.pypa.io/get-pip.py
|
30
|
+
RUN python get-pip.py
|
31
|
+
RUN pip install ansible
|
32
|
+
|
33
|
+
# Set variables for ansible
|
34
|
+
WORKDIR /tmp/ansible
|
35
|
+
ENV PATH /tmp/ansible/bin:/usr/sbin:/sbin:/usr/bin:/bin:$PATH
|
36
|
+
ENV ANSIBLE_LIBRARY /tmp/ansible/library
|
37
|
+
ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH
|
38
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
FROM brandonmathis/taperole:latest
|
2
|
+
|
3
|
+
# add playbooks to the image. This might be a git repo instead
|
4
|
+
ADD . /taperole
|
5
|
+
|
6
|
+
# We dont have swap access on travis. Chill this role out
|
7
|
+
RUN truncate -s 0 /taperole/roles/general/tasks/swapfile.yml
|
8
|
+
|
9
|
+
# Install Tape
|
10
|
+
WORKDIR /taperole
|
11
|
+
RUN gem build taperole.gemspec
|
12
|
+
RUN gem install slack-notifier
|
13
|
+
RUN gem install --local taperole
|
14
|
+
|
15
|
+
# Configure tape
|
16
|
+
RUN git clone https://github.com/BrandonMathis/vanilla-rails-app.git
|
17
|
+
WORKDIR /taperole/vanilla-rails-app
|
18
|
+
RUN echo 'n' | tape installer install
|
19
|
+
ADD ./test/rails/tape_vars.yml taperole/tape_vars.yml
|
20
|
+
|
21
|
+
# FIXME
|
22
|
+
# Disable ufw bc docker gets mad about iptables
|
23
|
+
RUN sed -i '/ufw/d' taperole/omnibox.yml
|
24
|
+
|
25
|
+
# Run Tape
|
26
|
+
RUN echo '[omnibox]' > taperole/hosts
|
27
|
+
RUN echo 'localhost ansible_connection=local be_app_env=production be_app_branch=master' >> taperole/hosts
|
28
|
+
RUN tape ansible everything
|
29
|
+
RUN chown deployer:users /home/deployer -R
|
30
|
+
ADD test/rails/start_rails.sh /
|
31
|
+
|
32
|
+
# Set command that runs the rails app
|
33
|
+
WORKDIR /
|
34
|
+
CMD ["/start_rails.sh"]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
app_name: vanilla
|
2
|
+
|
3
|
+
# Rails App Configs
|
4
|
+
be_app_repo: https://github.com/BrandonMathis/vanilla-rails-app.git
|
5
|
+
|
6
|
+
# HTML/JS App Configs
|
7
|
+
# Uncomment if you want to deploy a JS/HTML App
|
8
|
+
# fe_app_repo:
|
9
|
+
# fe_app_branch: master
|
10
|
+
# fe_build_command: gulp build
|
11
|
+
|
12
|
+
slack_webhook_url:
|
data/vars/defaults.yml
CHANGED
@@ -43,3 +43,29 @@ no_changes_found_error: |
|
|
43
43
|
‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️
|
44
44
|
No Changes detected on remote branch proceeding with deploy anyway
|
45
45
|
‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️ ‼️
|
46
|
+
|
47
|
+
# Postgres Backups
|
48
|
+
backup_hosts:
|
49
|
+
- production
|
50
|
+
backup_dir: file:///var/lib/postgresql/backups
|
51
|
+
backup_schedule: 0 4 * * *
|
52
|
+
backup_enabled: yes
|
53
|
+
backup_cron: yes
|
54
|
+
backup_user: root
|
55
|
+
|
56
|
+
backup_postgres_user: postgres
|
57
|
+
backup_postgres_host: localhost
|
58
|
+
|
59
|
+
backup_profiles:
|
60
|
+
- name: postgresql
|
61
|
+
schedule: "{{ backup_schedule }}"
|
62
|
+
source: postgresql://{{ app_name }}_{{ be_app_env }}
|
63
|
+
target: "{{ backup_dir }}"
|
64
|
+
user: root
|
65
|
+
|
66
|
+
rbenv:
|
67
|
+
env: system
|
68
|
+
version: v1.0.0
|
69
|
+
ruby_version: 2.3.1
|
70
|
+
|
71
|
+
rbenv_group: root
|
@@ -0,0 +1 @@
|
|
1
|
+
.idea/
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
language: python
|
3
|
+
python: "2.7"
|
4
|
+
before_install:
|
5
|
+
- sudo apt-get update -qq
|
6
|
+
- sudo apt-get install -qq python-apt python-pycurl
|
7
|
+
install:
|
8
|
+
- pip install ansible>=1.6.0
|
9
|
+
script:
|
10
|
+
# Prepare tests
|
11
|
+
- echo localhost > inventory
|
12
|
+
|
13
|
+
# Check syntax
|
14
|
+
- ansible-playbook --syntax-check -i inventory test.yml
|
15
|
+
|
16
|
+
# First run
|
17
|
+
- ansible-playbook -i inventory test.yml --connection=local --sudo
|
18
|
+
|
19
|
+
# Second run Idempotence test
|
20
|
+
- >
|
21
|
+
ansible-playbook -i inventory test.yml --connection=local --sudo
|
22
|
+
| grep -q 'changed=0.*failed=0'
|
23
|
+
&& (echo 'Idempotence test: pass' && exit 0)
|
24
|
+
|| (echo 'Idempotence test: fail' && exit 1)
|
25
|
+
|
26
|
+
- sudo /usr/local/bin/duply test backup
|
27
|
+
- test -d /home/travis/test || exit 1
|
28
|
+
|
29
|
+
backup_home: /home/travis/backup
|
30
|
+
backup_duplicity_version: 0.6.18-0ubuntu3.5
|
31
|
+
backup_profiles:
|
32
|
+
- name: test
|
33
|
+
source: /home/travis/build
|
34
|
+
target: file:///home/travis/test
|
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Stouts
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
.PHONY: release major minor patch
|
2
|
+
|
3
|
+
VERSION?=minor
|
4
|
+
release:
|
5
|
+
@bumpversion $(VERSION)
|
6
|
+
@git checkout master
|
7
|
+
@git merge develop
|
8
|
+
@git checkout develop
|
9
|
+
@git push --all
|
10
|
+
@git push --tags
|
11
|
+
@git checkout develop
|
12
|
+
|
13
|
+
major:
|
14
|
+
make release VERSION=major
|
15
|
+
|
16
|
+
minor:
|
17
|
+
make release VERSION=minor
|
18
|
+
|
19
|
+
patch:
|
20
|
+
make release VERSION=patch
|