diff --git a/bench/cli.py b/bench/cli.py index 4d6bad36..0ca2fe10 100755 --- a/bench/cli.py +++ b/bench/cli.py @@ -47,10 +47,10 @@ def check_uid(): sys.exit(1) def cmd_requires_root(): - if len(sys.argv) > 2 and sys.argv[2] in ('production', 'sudoers', 'lets-encrypt', 'fonts', 'reload-nginx', 'firewall', 'ssh-port'): - return True + if len(sys.argv) > 2 and sys.argv[2] in ('production', 'sudoers', 'lets-encrypt', 'fonts', 'print', 'firewall', 'ssh-port', 'prerequisites', 'role'): + return True if len(sys.argv) >= 2 and sys.argv[1] in ('patch', 'renew-lets-encrypt', 'disable-production'): - return True + return True def change_dir(): if os.path.exists('config.json') or "init" in sys.argv: diff --git a/bench/commands/setup.py b/bench/commands/setup.py index 703e20fa..74327d35 100755 --- a/bench/commands/setup.py +++ b/bench/commands/setup.py @@ -180,6 +180,29 @@ def sync_domains(domain=None, site=None): # if changed, success, else failure sys.exit(0 if changed else 1) +@click.command('prerequisites') +def setup_prerequisites(): + "Install prerequisites" + from bench.utils import run_playbook + run_playbook('prerequisites/install_prerequisites.yml') + +@click.command('role') +@click.argument('role') +@click.option('--admin_emails', default='') +@click.option('--mysql_root_password') +def setup_roles(role, **kwargs): + "Install dependancies via roles" + from bench.utils import run_playbook + + extra_vars = {"production": True} + extra_vars.update(kwargs) + + if role: + run_playbook('prerequisites/install_roles.yml', extra_vars=extra_vars, tag=role) + else: + run_playbook('prerequisites/install_roles.yml', extra_vars=extra_vars) + + setup.add_command(setup_sudoers) setup.add_command(setup_nginx) setup.add_command(reload_nginx) @@ -200,3 +223,5 @@ setup.add_command(remove_domain) setup.add_command(sync_domains) setup.add_command(setup_firewall) setup.add_command(set_ssh_port) +setup.add_command(setup_prerequisites) +setup.add_command(setup_roles) \ No newline at end of file diff --git a/bench/utils.py b/bench/utils.py index 896fc0c0..caa55445 100755 --- a/bench/utils.py +++ b/bench/utils.py @@ -761,11 +761,16 @@ def set_git_remote_url(git_url, bench_path='.'): if os.path.exists(os.path.join(app_dir, '.git')): exec_cmd("git remote set-url upstream {}".format(git_url), cwd=app_dir) -def run_playbook(playbook_name, extra_vars=None): +def run_playbook(playbook_name, extra_vars=None, tag=None): if not find_executable('ansible'): print("Ansible is needed to run this command, please install it using 'pip install ansible'") sys.exit(1) args = ['ansible-playbook', '-c', 'local', playbook_name] + if extra_vars: args.extend(['-e', json.dumps(extra_vars)]) + + if tag: + args.extend(['-t', tag]) + subprocess.check_call(args, cwd=os.path.join(os.path.dirname(bench.__path__[0]), 'playbooks')) diff --git a/playbooks/develop/debian.yml b/playbooks/develop/debian.yml deleted file mode 100755 index 4b80213a..00000000 --- a/playbooks/develop/debian.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -- include: setup_essentials.yml - -- name: "Setup prerequisites, mariadb, wkhtmltopdf, nodejs and psutil" - hosts: localhost - become: yes - become_user: root - vars: - mysql_conf_tpl: ../files/mariadb_config.cnf - mysql_secure_installation: True - roles: - - prerequisites - - mariadb - - wkhtmltopdf - - nodejs - - psutil - -- name: setup bench and dev environment - hosts: localhost - vars: - bench_repo_path: "/home/{{ ansible_user_id }}/.bench" - bench_path: "/home/{{ ansible_user_id }}/frappe-bench" - tasks: - - debug: - var: run_travis - - # setup frappe-bench - - include: includes/setup_bench.yml - when: not run_travis - - # setup development environment - - include: includes/setup_dev_env.yml - when: not production and not run_travis -