From 2c5e0731685cee098a873178271ba895f8f8a61a Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 31 May 2018 20:42:57 -0500 Subject: [PATCH] Overhaul some things to support a basic CORE Office install --- rattail_fabric/composer.py | 13 ++++++- rattail_fabric/core.py | 2 ++ rattail_fabric/corepos.py | 36 ++++++++++--------- .../deploy/corepos/fannie/config.php.mako | 12 +++++++ rattail_fabric/mysql.py | 12 ++++--- 5 files changed, 52 insertions(+), 23 deletions(-) create mode 100644 rattail_fabric/deploy/corepos/fannie/config.php.mako diff --git a/rattail_fabric/composer.py b/rattail_fabric/composer.py index 8b4f408..405cc22 100644 --- a/rattail_fabric/composer.py +++ b/rattail_fabric/composer.py @@ -26,7 +26,7 @@ Fabric lib for Composer (PHP dependency manager) from __future__ import unicode_literals, absolute_import -from fabric.api import sudo +from fabric.api import sudo, cd from fabric.contrib.files import exists from rattail_fabric import make_deploy @@ -45,3 +45,14 @@ def install_composer(user=None): sudo('rm install-composer.sh') if user: sudo('chown {}: composer.phar'.format(user)) + + +def install_globally(): + """ + Install `composer.phar` in global location + """ + if not exists('/usr/local/bin/composer.phar'): + with cd('/usr/local/bin'): + deploy('composer/install-composer.sh', 'install-composer.sh') + sudo('./install-composer.sh') + sudo('rm install-composer.sh') diff --git a/rattail_fabric/core.py b/rattail_fabric/core.py index dae4d79..ccf5b18 100644 --- a/rattail_fabric/core.py +++ b/rattail_fabric/core.py @@ -112,6 +112,8 @@ def put(local_path, remote_path, owner='root:root', **kwargs): kwargs.setdefault('mirror_local_mode', True) kwargs['use_sudo'] = True fab_put(local_path, remote_path, **kwargs) + if ':' not in owner: + owner = '{}:'.format(owner) sudo("chown {} '{}'".format(owner, remote_path)) diff --git a/rattail_fabric/corepos.py b/rattail_fabric/corepos.py index a8f213c..5355f4d 100644 --- a/rattail_fabric/corepos.py +++ b/rattail_fabric/corepos.py @@ -32,34 +32,39 @@ from fabric.api import sudo, cd, env, run from fabric.contrib.files import exists from rattail_fabric import apt, mysql, mkdir +from rattail_fabric import make_deploy -def install_fannie(rootdir, branch='version-2.3', first_time=None, url=None): +deploy = make_deploy(__file__) + + +def install_fannie(rootdir, user='www-data', branch='version-2.3', first_time=None, url=None): """ - Install the Fannie app to the given location + Install the Fannie app to the given location. + + Please note, this assumes composer is already installed and available. """ if first_time is None: first_time = not exists(rootdir) - mkdir(rootdir) + mkdir(rootdir, owner=user) with cd(rootdir): # fannie source if not exists('IS4C'): - sudo('git clone https://github.com/CORE-POS/IS4C.git') + sudo('git clone https://github.com/CORE-POS/IS4C.git', user=user) with cd('IS4C'): - sudo('git checkout {}'.format(branch)) + sudo('git checkout {}'.format(branch), user=user) with cd('IS4C'): - sudo('git pull') + sudo('git pull', user=user) - # composer - if not exists('composer.phar'): - sudo('curl -sS https://getcomposer.org/installer | php') - mkdir('/var/www/.composer', owner='www-data') + if user == 'www-data': + # TODO: why is this necessary? (but it is, nonetheless) + mkdir('/var/www/.composer', owner=user) # fannie dependencies with cd('IS4C'): - mkdir(['vendor', 'fannie/src/javascript/composer-components'], owner='www-data') - sudo('../composer.phar install', user='www-data') + mkdir(['vendor', 'fannie/src/javascript/composer-components'], owner=user) + sudo('composer.phar install', user=user) # shadowread with cd('IS4C/fannie/auth/shadowread'): @@ -69,15 +74,12 @@ def install_fannie(rootdir, branch='version-2.3', first_time=None, url=None): # fannie config with cd('IS4C/fannie'): if not exists('config.php'): - sudo('cp config.php.dist config.php') - sudo('chown root:www-data config.php') - sudo('chmod 0660 config.php') + deploy('corepos/fannie/config.php.mako', 'config.php', owner=user, mode='0600') # fannie logging with cd('IS4C/fannie/logs'): for name in ['fannie', 'debug_fannie', 'queries', 'php-errors', 'dayend']: - sudo('touch {}.log'.format(name)) - sudo('chown www-data:www-data {}.log'.format(name)) + sudo('touch {}.log'.format(name), user=user) # fannie databases mysql.create_user('is4c', host='%', password='is4c') diff --git a/rattail_fabric/deploy/corepos/fannie/config.php.mako b/rattail_fabric/deploy/corepos/fannie/config.php.mako new file mode 100644 index 0000000..8528445 --- /dev/null +++ b/rattail_fabric/deploy/corepos/fannie/config.php.mako @@ -0,0 +1,12 @@ + diff --git a/rattail_fabric/mysql.py b/rattail_fabric/mysql.py index 53e9fdd..d6d65bc 100644 --- a/rattail_fabric/mysql.py +++ b/rattail_fabric/mysql.py @@ -35,15 +35,17 @@ from rattail_fabric import apt, make_deploy deploy = make_deploy(__file__) -def install(password): +def install(password=None): """ Install the MySQL database service """ - deploy('mysql/debconf.mako', 'debconf', context={'password': password}) - sudo('debconf-set-selections debconf') - sudo('rm debconf') + if password: + deploy('mysql/debconf.mako', 'debconf', context={'password': password}) + sudo('debconf-set-selections debconf') + sudo('rm debconf') apt.install('mysql-server') - deploy('mysql/my.cnf.mako', '/root/.my.cnf', mode='0600', context={'password': password}) + if password: + deploy('mysql/my.cnf.mako', '/root/.my.cnf', mode='0600', context={'password': password}) def is_mariadb():