Skip to content

Commit

Permalink
Better defaults for db_name and db_user
Browse files Browse the repository at this point in the history
Automatically generate proper defaults for `db_name` and `db_user` so
they don't need to be manually defined under most circumstances.
  • Loading branch information
swalkinshaw committed Mar 28, 2016
1 parent baffeb7 commit 6fbe67f
Show file tree
Hide file tree
Showing 11 changed files with 26 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
### HEAD
* Supply better defaults for `db_name` and `db_user` ([#529](https://github.com/roots/trellis/pull/529))
* Fix deploy env template to use valid ansible vars ([#530](https://github.com/roots/trellis/pull/530))
* Simplify and improve `wordpress_sites` with better defaults ([#528](https://github.com/roots/trellis/pull/528))
* Allow option for WinNFSD sync folder provider on Windows ([#527](https://github.com/roots/trellis/pull/527))
Expand Down
7 changes: 6 additions & 1 deletion filter_plugins/trellis_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,19 @@ def reverse_www(hosts, enabled=True, append=True):
raise errors.AnsibleFilterError('The reverse_www filter expects a string or list of strings, got ' + repr(hosts))

def to_env(dict_value):
envs = ["{0}='{1}'".format(key.upper(), value) for key, value in dict_value.iteritems()]
envs = ["{0}='{1}'".format(key.upper(), value) for key, value in sorted(dict_value.items())]
return "\n".join(envs)

def underscore(value):
''' Convert dots to underscore in a string '''
return value.replace('.', '_')

class FilterModule(object):
''' Trellis jinja2 filters '''

def filters(self):
return {
'reverse_www': reverse_www,
'to_env': to_env,
'underscore': underscore,
}
4 changes: 0 additions & 4 deletions group_vars/all/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,3 @@ default_timezone: Etc/UTC
www_root: /srv/www
ip_whitelist:
- "{{ lookup('pipe', 'curl -4 -s https://api.ipify.org') }}"

wordpress_env_defaults:
wp_env: "{{ env }}"
disable_wp_cron: true
2 changes: 0 additions & 2 deletions group_vars/development/wordpress_sites.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,4 @@ wordpress_sites:
env:
wp_home: http://example.dev
wp_siteurl: http://example.dev/wp
db_name: example_dev
db_user: example_dbuser
# db_password: (defined in group_vars/development/vault.yml)
2 changes: 0 additions & 2 deletions group_vars/production/wordpress_sites.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ wordpress_sites:
env:
wp_home: http://example.com
wp_siteurl: http://example.com/wp
db_name: example_prod
db_user: example_dbuser
# Define the following variables in group_vars/production/vault.yml
# db_password:
# auth_key:
Expand Down
2 changes: 0 additions & 2 deletions group_vars/staging/wordpress_sites.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ wordpress_sites:
env:
wp_home: http://staging.example.com
wp_siteurl: http://staging.example.com/wp
db_name: example_staging
db_user: example_dbuser
# Define the following variables in group_vars/staging/vault.yml
# db_password:
# auth_key:
Expand Down
6 changes: 6 additions & 0 deletions roles/deploy/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,9 @@ project_shared_children:
# WP_ENV: "production"
project_environment:
WP_ENV: "{{ env }}"

wordpress_env_defaults:
db_name: "{{ site | underscore }}_{{ env }}"
db_user: "{{ site | underscore }}"
disable_wp_cron: true
wp_env: "{{ env }}"
2 changes: 1 addition & 1 deletion roles/letsencrypt/tasks/nginx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
hosts: "{{ item.value.site_hosts | reverse_www(enabled=item.value.www_redirect | default(true)) }}"
register: letsencrypt_test_challenges
ignore_errors: true
when: item.value.ssl is defined and item.value.ssl.enabled | default(false) and item.value.ssl.provider | default('manual') == 'letsencrypt'
when: site_uses_letsencrypt
with_dict: "{{ wordpress_sites }}"

- name: Notify of challenge failures
Expand Down
5 changes: 5 additions & 0 deletions roles/wordpress-install/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
wordpress_env_defaults:
db_name: "{{ item.key | underscore }}_{{ env }}"
db_user: "{{ item.key | underscore }}"
disable_wp_cron: true
wp_env: "{{ env }}"
2 changes: 2 additions & 0 deletions roles/wordpress-setup/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
db_name: "{{ item.value.env.db_name | default(item.key + '_' + env) | underscore }}"
db_user: "{{ item.value.env.db_user | default(item.key) | underscore }}"
10 changes: 5 additions & 5 deletions roles/wordpress-setup/tasks/database.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
- name: Create database of sites
mysql_db:
name: "{{ item.value.env.db_name | default(item.key) }}"
name: "{{ db_name }}"
state: present
login_host: "{{ item.value.env.db_host | default('localhost') }}"
login_user: "{{ mysql_root_user }}"
Expand All @@ -11,10 +11,10 @@

- name: Create/assign database user to db and grant permissions
mysql_user:
name: "{{ item.value.env.db_user }}"
name: "{{ db_user }}"
password: "{{ vault_wordpress_sites[item.key].env.db_password }}"
append_privs: yes
priv: "{{ item.value.env.db_name | default(item.key) }}.*:ALL"
priv: "{{ db_name }}.*:ALL"
state: present
login_host: "{{ item.value.env.db_host | default('localhost') }}"
login_user: "{{ mysql_root_user }}"
Expand All @@ -31,11 +31,11 @@

- name: Import database
mysql_db:
name: "{{ item.value.env.db_name | default(item.key) }}"
name: "{{ db_name }}"
state: import
target: "/tmp/{{ item.value.db_import | basename }}"
login_host: "{{ item.value.env.db_host | default('localhost') }}"
login_user: "{{ item.value.env.db_user }}"
login_user: "{{ db_user }}"
login_password: "{{ vault_wordpress_sites[item.key].env.db_password }}"
with_dict: "{{ wordpress_sites }}"
when: item.value.db_import | default(False)
Expand Down

0 comments on commit 6fbe67f

Please sign in to comment.