commit
351fe2a257
17 changed files with 551 additions and 0 deletions
@ -0,0 +1,23 @@ |
|||||||
|
[Unit] |
||||||
|
Description=WeightGrapher Web Service |
||||||
|
After=postgresql.target |
||||||
|
|
||||||
|
[Service] |
||||||
|
User=manager |
||||||
|
Group=manager |
||||||
|
|
||||||
|
Environment="PERL5LIB=/home/manager/perl5/lib/perl5" |
||||||
|
Environment="PERL_MB_OPT=--install_base \"/home/manager/perl5\"" |
||||||
|
Environment="PERL_MM_OPT=INSTALL_BASE=/home/manager/perl5" |
||||||
|
Environment="PERL_LOCAL_LIB_ROOT=/home/manager/perl5" |
||||||
|
Environment="PATH=/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" |
||||||
|
|
||||||
|
ExecStart=/home/manager/perl5/bin/hypnotoad -f script/weightgrapher |
||||||
|
WorkingDirectory=/home/manager/weightgrapher/Web |
||||||
|
SyslogIdentifier=weightgrapher |
||||||
|
Restart=on-failure |
||||||
|
Type=simple |
||||||
|
KillMode=process |
||||||
|
|
||||||
|
[Install] |
||||||
|
WantedBy=multi-user.target |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
- name: Restart nginx |
||||||
|
service: |
||||||
|
name: nginx |
||||||
|
state: restarted |
||||||
|
|
||||||
|
- name: Restart postgres |
||||||
|
service: |
||||||
|
name: postgres |
||||||
|
state: restarted |
||||||
|
|
||||||
|
- name: Restart weightgrapher |
||||||
|
service: |
||||||
|
name: weightgrapher |
||||||
|
state: restarted |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
- name: Install packages to support postgres |
||||||
|
apt: |
||||||
|
name: [ |
||||||
|
'libssl-dev', |
||||||
|
'libpq-dev', |
||||||
|
'libz-dev', |
||||||
|
'libexpat1-dev', |
||||||
|
'postgresql-client', |
||||||
|
'postgresql-contrib', |
||||||
|
'postgresql', |
||||||
|
'python3-psycopg2', |
||||||
|
] |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Start & enable postgres |
||||||
|
service: |
||||||
|
name: postgresql |
||||||
|
state: started |
||||||
|
enabled: true |
||||||
|
|
||||||
|
- name: Create db user account for weightgrapher |
||||||
|
postgresql_user: |
||||||
|
name: "{{ database.user }}" |
||||||
|
password: "{{ database.pass }}" |
||||||
|
state: present |
||||||
|
become_user: postgres |
||||||
|
become: true |
||||||
|
|
||||||
|
- name: Create weightgrapher database |
||||||
|
postgresql_db: |
||||||
|
name: "{{ database.name }}" |
||||||
|
owner: "{{ database.user }}" |
||||||
|
state: present |
||||||
|
become_user: postgres |
||||||
|
become: true |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
- name: Update system packages |
||||||
|
include_tasks: update.yml |
||||||
|
|
||||||
|
- name: Setup the database |
||||||
|
include_tasks: database.yml |
||||||
|
|
||||||
|
- name: Setup the manager user account |
||||||
|
include_tasks: manager_account.yml |
||||||
|
|
||||||
|
- name: Setup the weightgrapher webapp |
||||||
|
include_tasks: webapp.yml |
||||||
|
|
||||||
|
- name: Setup the nginx webserver |
||||||
|
include_tasks: webserver.yml |
||||||
@ -0,0 +1,54 @@ |
|||||||
|
- name: Install packages |
||||||
|
apt: |
||||||
|
name: [ |
||||||
|
'git', |
||||||
|
'build-essential', |
||||||
|
'cpanminus', |
||||||
|
'vim', |
||||||
|
'curl', |
||||||
|
'ack', |
||||||
|
'tree', |
||||||
|
] |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Create manager user |
||||||
|
user: |
||||||
|
name: manager |
||||||
|
shell: /bin/bash |
||||||
|
comment: Manager User Account |
||||||
|
|
||||||
|
- name: Create ~manager/.ssh |
||||||
|
file: |
||||||
|
state: directory |
||||||
|
path: /home/manager/.ssh |
||||||
|
owner: manager |
||||||
|
group: manager |
||||||
|
mode: 0700 |
||||||
|
|
||||||
|
- name: Create ~manager/.ssh/authorized_keys from ~root |
||||||
|
copy: |
||||||
|
dest: /home/manager/.ssh/authorized_keys |
||||||
|
src: /root/.ssh/authorized_keys |
||||||
|
remote_src: true |
||||||
|
owner: manager |
||||||
|
group: manager |
||||||
|
mode: 0600 |
||||||
|
|
||||||
|
- name: Ensure that local::lib is used when logging in |
||||||
|
lineinfile: |
||||||
|
path: /home/manager/.bashrc |
||||||
|
regexp: '^eval \$\(perl' |
||||||
|
line: eval $(perl -Mlocal::lib) |
||||||
|
|
||||||
|
- name: Install Dist::Zilla |
||||||
|
shell: cpanm Dist::Zilla |
||||||
|
args: |
||||||
|
creates: /home/manager/perl5/lib/perl5/Dist/Zilla.pm |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
- name: Update all packages to their latest version |
||||||
|
apt: |
||||||
|
name: "*" |
||||||
|
state: latest |
||||||
|
update_cache: yes |
||||||
|
|
||||||
@ -0,0 +1,113 @@ |
|||||||
|
- name: Install /etc/weightgrapher.yml |
||||||
|
template: |
||||||
|
src: "{{ role_path }}/templates/weightgrapher.yml.j2" |
||||||
|
dest: /etc/weightgrapher.yml |
||||||
|
owner: root |
||||||
|
group: root |
||||||
|
mode: 0644 |
||||||
|
|
||||||
|
- name: "Git clone from {{ repo }}" |
||||||
|
git: |
||||||
|
repo: "{{ repo }}" |
||||||
|
dest: /home/manager/weightgrapher |
||||||
|
accept_hostkey: true |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Build WeightGrapher::Math |
||||||
|
shell: dzil build > build.log 2>&1 |
||||||
|
args: |
||||||
|
chdir: /home/manager/weightgrapher/Math |
||||||
|
creates: /home/manager/weightgrapher/Math/build.log |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Install WeightGrapher::Math |
||||||
|
shell: cpanm WeightGrapher-Math-*.tar.gz |
||||||
|
args: |
||||||
|
chdir: /home/manager/weightgrapher/Math |
||||||
|
creates: /home/manager/perl5/lib/perl5/WeightGrapher/Math/WeightAverager.pm |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Build WeightGrapher::DB |
||||||
|
shell: dzil build > build.log 2>&1 |
||||||
|
args: |
||||||
|
chdir: /home/manager/weightgrapher/DB |
||||||
|
creates: /home/manager/weightgrapher/DB/build.log |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Install WeightGrapher::DB |
||||||
|
shell: cpanm WeightGrapher-DB-*.tar.gz |
||||||
|
args: |
||||||
|
chdir: /home/manager/weightgrapher/DB |
||||||
|
creates: /home/manager/perl5/lib/perl5/WeightGrapher/DB.pm |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Install WeightGrapher::Web Dependencies |
||||||
|
shell: cpanm --installdeps . > build.log 2>&1 |
||||||
|
args: |
||||||
|
chdir: /home/manager/weightgrapher/Web |
||||||
|
creates: /home/manager/weightgrapher/Web/build.log |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
|
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Import the WeightGrapher database |
||||||
|
shell: /home/manager/weightgrapher/Web/script/weightgrapher dbc < /home/manager/weightgrapher/DB/etc/schema.sql > /home/manager/weightgrapher/DB/etc/schema.log 2>&1 |
||||||
|
args: |
||||||
|
creates: /home/manager/weightgrapher/DB/etc/schema.log |
||||||
|
environment: |
||||||
|
PATH: '/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin' |
||||||
|
PERL5LIB: '/home/manager/perl5/lib/perl5' |
||||||
|
PERL_MB_OPT: '--install_base "/home/manager/perl5"' |
||||||
|
PERL_MM_OPT: 'INSTALL_BASE=/home/manager/perl5' |
||||||
|
PERL_LOCAL_LIB_ROOT: '/home/manager/perl5' |
||||||
|
become: true |
||||||
|
become_user: manager |
||||||
|
|
||||||
|
- name: Install weightgrapher.service file. |
||||||
|
copy: |
||||||
|
dest: /etc/systemd/system/weightgrapher.service |
||||||
|
src: "{{ role_path }}/files/weightgrapher.service" |
||||||
|
owner: root |
||||||
|
group: root |
||||||
|
mode: 0644 |
||||||
|
|
||||||
|
- name: Start & enable weightgrapher |
||||||
|
service: |
||||||
|
name: weightgrapher |
||||||
|
state: started |
||||||
|
enabled: true |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
- name: Install packages for webserver support |
||||||
|
apt: |
||||||
|
name: [ |
||||||
|
'nginx', |
||||||
|
'certbot', |
||||||
|
'python3-certbot-nginx', |
||||||
|
] |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Start & enable nginx |
||||||
|
service: |
||||||
|
name: nginx |
||||||
|
state: started |
||||||
|
enabled: true |
||||||
|
|
||||||
|
- name: "Install /etc/nginx/sites-enabled/{{ domain_name }}" |
||||||
|
template: |
||||||
|
src: "{{ role_path }}/templates/nginx-domain.j2" |
||||||
|
dest: "/etc/nginx/sites-enabled/{{ domain_name }}" |
||||||
|
force: no |
||||||
|
owner: root |
||||||
|
group: root |
||||||
|
mode: 0644 |
||||||
|
notify: |
||||||
|
- Restart nginx |
||||||
|
|
||||||
|
- name: Setup SSL Certificates |
||||||
|
shell: certbot run --nginx -d {{ domain_name }} {{ '-d www.' + domain_name if redirect_www }} --agree-tos --register-unsafely-without-email |
||||||
|
args: |
||||||
|
creates: /etc/letsencrypt/live/next.weightgrapher.com/cert.pem |
||||||
|
notify: |
||||||
|
- Restart nginx |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
upstream myapp { |
||||||
|
server 127.0.0.1:8080; |
||||||
|
} |
||||||
|
|
||||||
|
server { |
||||||
|
server_name {{ domain_name }}; |
||||||
|
|
||||||
|
location / { |
||||||
|
proxy_pass http://myapp; |
||||||
|
proxy_http_version 1.1; |
||||||
|
proxy_set_header Upgrade $http_upgrade; |
||||||
|
proxy_set_header Connection "upgrade"; |
||||||
|
proxy_set_header Host $host; |
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
server { |
||||||
|
server_name www.{{ domain_name }}; |
||||||
|
return 301 $scheme://{{ domain_name }}$request_uri; |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,12 @@ |
|||||||
|
--- |
||||||
|
domain: {{ domain_name }} |
||||||
|
|
||||||
|
database: |
||||||
|
weightgrapher: postgresql://{{ database.user }}:{{ database.pass }}@{{ database.host }}/{{ database.name }} |
||||||
|
|
||||||
|
secrets: |
||||||
|
{% for secret in secrets %} |
||||||
|
- {{ secret }} |
||||||
|
{% endfor %} |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,7 @@ |
|||||||
|
- name: Setup A WeightGrapher Server |
||||||
|
remote_user: root |
||||||
|
hosts: all |
||||||
|
vars: |
||||||
|
ansible_ssh_common_args: -A -oControlMaster=auto -oControlPersist=60s -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no |
||||||
|
roles: |
||||||
|
- weightgrapher |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
[Unit] |
||||||
|
Description=WeightGrapher Web Service |
||||||
|
After=postgresql.target |
||||||
|
|
||||||
|
[Service] |
||||||
|
User=manager |
||||||
|
Group=manager |
||||||
|
|
||||||
|
Environment="PERL5LIB=/home/manager/perl5/lib/perl5" |
||||||
|
Environment="PERL_MB_OPT=--install_base \"/home/manager/perl5\"" |
||||||
|
Environment="PERL_MM_OPT=INSTALL_BASE=/home/manager/perl5" |
||||||
|
Environment="PERL_LOCAL_LIB_ROOT=/home/manager/perl5" |
||||||
|
Environment="PATH=/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" |
||||||
|
|
||||||
|
ExecStart=/home/manager/perl5/bin/morbo -l http://127.0.0.1:8080 ./script/weightgrapher |
||||||
|
WorkingDirectory=/home/manager/weightgrapher/Web |
||||||
|
SyslogIdentifier=weightgrapher |
||||||
|
Restart=on-failure |
||||||
|
Type=simple |
||||||
|
KillMode=process |
||||||
|
|
||||||
|
[Install] |
||||||
|
WantedBy=multi-user.target |
||||||
@ -0,0 +1,68 @@ |
|||||||
|
- name: Install packages |
||||||
|
apt: |
||||||
|
name: [ |
||||||
|
'apt-transport-https', |
||||||
|
'ca-certificates', |
||||||
|
'curl', |
||||||
|
'gnupg', |
||||||
|
'lsb-release', |
||||||
|
] |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Install Docker Keyring |
||||||
|
shell: curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
||||||
|
args: |
||||||
|
creates: /usr/share/keyrings/docker-archive-keyring.gpg |
||||||
|
|
||||||
|
- name: Install Docker Repo File |
||||||
|
shell: echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > |
||||||
|
/etc/apt/sources.list.d/docker.list |
||||||
|
args: |
||||||
|
creates: /etc/apt/sources.list.d/docker.list |
||||||
|
|
||||||
|
- name: Update apt cache |
||||||
|
apt: |
||||||
|
name: "curl" |
||||||
|
state: latest |
||||||
|
update_cache: yes |
||||||
|
|
||||||
|
- name: Install Docker Packages |
||||||
|
apt: |
||||||
|
name: [ |
||||||
|
'docker-ce', |
||||||
|
'docker-ce-cli', |
||||||
|
'containerd.io', |
||||||
|
] |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Make sure we have a wheel group |
||||||
|
group: |
||||||
|
name: wheel |
||||||
|
state: present |
||||||
|
|
||||||
|
- name: Allow wheel group to have passwordless sudo |
||||||
|
lineinfile: |
||||||
|
dest: /etc/sudoers |
||||||
|
state: present |
||||||
|
regexp: '^%wheel' |
||||||
|
line: '%wheel ALL=(ALL) NOPASSWD: ALL' |
||||||
|
validate: 'visudo -cf %s' |
||||||
|
|
||||||
|
- name: Add manager to docker and wheel group |
||||||
|
user: |
||||||
|
name: manager |
||||||
|
groups: docker,wheel |
||||||
|
append: yes |
||||||
|
|
||||||
|
- name: Start & enable docker |
||||||
|
service: |
||||||
|
name: docker |
||||||
|
state: started |
||||||
|
enabled: true |
||||||
|
|
||||||
|
- name: Start & enable containerd |
||||||
|
service: |
||||||
|
name: containerd |
||||||
|
state: started |
||||||
|
enabled: true |
||||||
|
|
||||||
@ -0,0 +1,5 @@ |
|||||||
|
- name: Add docker support for DBIC regeneration |
||||||
|
include_tasks: docker.yml |
||||||
|
|
||||||
|
- name: Update systemd files for weightgrapher |
||||||
|
include_tasks: weightgrapher_service.yml |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
- name: Stop weightgrapher service |
||||||
|
service: |
||||||
|
name: weightgrapher |
||||||
|
state: stopped |
||||||
|
|
||||||
|
- name: Install development version of weightgrapher.service. |
||||||
|
copy: |
||||||
|
dest: /etc/systemd/system/weightgrapher.service |
||||||
|
src: "{{ role_path }}/files/weightgrapher.service" |
||||||
|
owner: root |
||||||
|
group: root |
||||||
|
mode: 0644 |
||||||
|
|
||||||
|
- name: Start the weightgrapher service |
||||||
|
service: |
||||||
|
name: weightgrapher |
||||||
|
state: started |
||||||
|
daemon_reload: yes |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
- name: Show the name of the domain |
||||||
|
debug: |
||||||
|
msg: The domain name is {{ domain_name }} |
||||||
@ -0,0 +1,100 @@ |
|||||||
|
#!/usr/bin/env perl |
||||||
|
use warnings; |
||||||
|
use strict; |
||||||
|
use File::Temp qw( tempfile ); # corelist - 5.6.1 |
||||||
|
use File::Find; # corelist - 5 |
||||||
|
use Getopt::Long; # corelist - 5 |
||||||
|
|
||||||
|
my $opts = { |
||||||
|
help => 0, |
||||||
|
config => 'config.yml' |
||||||
|
}; |
||||||
|
|
||||||
|
GetOptions($opts, qw( |
||||||
|
config=s |
||||||
|
help! |
||||||
|
)); |
||||||
|
|
||||||
|
my $data = get_data(); |
||||||
|
|
||||||
|
# If the user asks for help, or doesn't invoke correctly, provide usage. |
||||||
|
if ( ( $opts->{help} ) or ( not @ARGV ) or ( @ARGV < 2 )) { |
||||||
|
my $roles = join( "", map { "\t$_\n" } find_roles() ); |
||||||
|
(my $usage = $data->{USAGE} ) =~ s|\[\% ROLES \%\]|$roles|g; |
||||||
|
print STDERR $usage; |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
# Gather role, host and then create a playbook. |
||||||
|
my ( $role, $host ) = @ARGV; |
||||||
|
|
||||||
|
(my $playbook = $data->{TEMPLATE} ) =~ s|\[\% ROLE \%\]|$role|g; |
||||||
|
$playbook =~ s|\[\% CONFIG_FILE \%\]|$opts->{config}|g; |
||||||
|
|
||||||
|
# Write the playbook to a temp file that will be deleted once this script is finished. |
||||||
|
my ( $fh, $filename ) = tempfile( DIR => '.', SUFFIX => '.yml', UNLINK => 1 ); |
||||||
|
print $fh $playbook; |
||||||
|
close $fh; |
||||||
|
|
||||||
|
# Tell the user what we're running, and then run it. |
||||||
|
print "[$role] Running: ansible-playbook -i '$host,' $filename\n"; |
||||||
|
system( qw( ansible-playbook -i ), "$host,", $filename ); |
||||||
|
|
||||||
|
# == Data Stuff == # |
||||||
|
# Store file and usage in the __DATA__ section and load them |
||||||
|
# into a hash based on -!- NAME -!- preceeding the file. If |
||||||
|
# there is content before an initial -!- NAME -!- the name will |
||||||
|
# be DEFAULT. |
||||||
|
sub get_data { |
||||||
|
my %data; |
||||||
|
my $section = 'DEFAULT'; |
||||||
|
foreach my $line ( <DATA> ) { |
||||||
|
if ( $line =~ /^-!- ([A-Z]+) -!-$/ ) { |
||||||
|
$section = $1; |
||||||
|
next; |
||||||
|
} |
||||||
|
$data{$section} .= $line; |
||||||
|
} |
||||||
|
return \%data; |
||||||
|
}; |
||||||
|
|
||||||
|
# Return a list of the rules we know about. |
||||||
|
sub find_roles { |
||||||
|
my @roles; |
||||||
|
|
||||||
|
find( sub { |
||||||
|
return unless $File::Find::dir =~ tr[/][] == 0; # roles/* only |
||||||
|
return unless $_ ne '.'; # No . |
||||||
|
push @roles, $_; |
||||||
|
}, 'roles' ); |
||||||
|
|
||||||
|
return @roles; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
__DATA__ |
||||||
|
-!- TEMPLATE -!- |
||||||
|
--- |
||||||
|
- name: Setup a MarkdownSite server |
||||||
|
remote_user: root |
||||||
|
hosts: all |
||||||
|
vars: |
||||||
|
ansible_ssh_common_args: -oControlMaster=auto -oControlPersist=60s -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no |
||||||
|
vars_files: |
||||||
|
- [% CONFIG_FILE %] |
||||||
|
|
||||||
|
roles: |
||||||
|
- [% ROLE %] |
||||||
|
|
||||||
|
-!- USAGE -!- |
||||||
|
|
||||||
|
This program runs tasks on a remote host. |
||||||
|
|
||||||
|
Usage: ./run-task [--config your-config.yml] <task> <host or ip for ssh connection> |
||||||
|
|
||||||
|
Example ./run-task --config staging.yml reset-database staging.weightgrapher.com |
||||||
|
|
||||||
|
Tasks you may run: |
||||||
|
|
||||||
|
[% ROLES %] |
||||||
|
|
||||||
Loading…
Reference in new issue