2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-09 08:30:39 +00:00

Fixes for VM builds

- removed the packer binary
- added a bench command to install virtualbox
This commit is contained in:
Ameya Shenoy 2018-03-04 01:04:17 +05:30
parent 16603ec8c9
commit fe858bfa36
No known key found for this signature in database
GPG Key ID: 735490161CD5C91E
6 changed files with 72 additions and 7 deletions

View File

@ -46,6 +46,10 @@ def install_nginx(user=None):
if user: if user:
setup_sudoers(user) setup_sudoers(user)
@click.command('virtualbox')
def install_virtualbox():
run_playbook('roles/virtualbox/tasks/main.yml', extra_vars=extra_vars)
@click.command('fail2ban') @click.command('fail2ban')
@click.option('--maxretry', default=6, help="Number of matches (i.e. value of the counter) which triggers ban action on the IP.") @click.option('--maxretry', default=6, help="Number of matches (i.e. value of the counter) which triggers ban action on the IP.")
@click.option('--bantime', default=600, help="The counter is set to zero if no match is found within 'findtime' seconds.") @click.option('--bantime', default=600, help="The counter is set to zero if no match is found within 'findtime' seconds.")
@ -61,4 +65,5 @@ install.add_command(install_nodejs)
install.add_command(install_psutil) install.add_command(install_psutil)
install.add_command(install_supervisor) install.add_command(install_supervisor)
install.add_command(install_nginx) install.add_command(install_nginx)
install.add_command(install_failtoban) install.add_command(install_failtoban)
install.add_command(install_virtualbox)

View File

@ -0,0 +1,25 @@
---
- name: Add VirtualBox to sources.list
apt_repository:
repo: deb https://download.virtualbox.org/virtualbox/debian {{ ansible_distribution_release }}contrib
state: present
- name: Add apt signing key for VirtualBox for Debian >= 8 and Ubuntu >= 16
apt_key:
url: https://www.virtualbox.org/download/oracle_vbox_2016.asc
state: present
when: (ansible_distribution == "Debian" and ansible_distribution_major_version >= "8") or (ansible_distribution == "Ubuntu" and ansible_distribution_major_version >= "16")
- name: Add apt signing key for VirtualBox for Debian < 8 and Ubuntu < 16
apt_key:
url: https://www.virtualbox.org/download/oracle_vbox.asc
state: present
when: (ansible_distribution == "Debian" and ansible_distribution_major_version >= "8") or (ansible_distribution == "Ubuntu" and ansible_distribution_major_version >= "16")
- name: Install VirtualBox
apt: pkg={{ item }} update_cache=yes state=present
with_items:
- virtualbox-5.2
...

View File

@ -0,0 +1,9 @@
---
- include_tasks: debian_family.yml
when: ansible_os_family == 'Debian'
- include_tasks: redhat_family.yml
when: ansible_os_family == "RedHat"
...

View File

@ -0,0 +1,16 @@
---
- name: Add VirtualBox Repository
yum_repository:
name: Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
description: Official VirtualBox Yum Repo
baseurl: http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc
gpgcheck: yes
- name: Install VirtualBox
yum: name={{ item }} enablerepo=mariadb state=present
with_items:
- VirtualBox-5.2
...

View File

@ -1,22 +1,32 @@
""" """
Builds a vm and puts it in ~/public with a latest.json that has its filename and md5sum Builds a vm and puts it in ~/public with a latest.json that has its filename and md5sum
""" """
import os
import subprocess # imports - standard imports
import json import os
import stat import json
import stat
from subprocess import check_output
OUTPUT_DIR = 'output-virtualbox-ovf' OUTPUT_DIR = 'output-virtualbox-ovf'
PUBLIC_DIR = os.path.join(os.path.expanduser('~'), 'public') PUBLIC_DIR = os.path.join(os.path.expanduser('~'), 'public')
def main(): def main():
install_virtualbox()
install_packer()
build_vm() build_vm()
update_latest() update_latest()
move_to_public() move_to_public()
cleanup() cleanup()
def install_virtualbox():
check_output(['bench', 'install', 'virtualbox'])
def install_packer():
pass
def build_vm(): def build_vm():
subprocess.check_call("./packer build vm.json", shell=True) check_output("./packer build vm.json", shell=True)
def move_to_public(): def move_to_public():
src = get_filepath() src = get_filepath()
@ -30,7 +40,7 @@ def update_latest():
json.dump(get_latest(), f) json.dump(get_latest(), f)
def get_latest(): def get_latest():
md5 = subprocess.check_output("md5sum {}".format(get_filepath()), shell=True).split()[0] md5 = check_output("md5sum {}".format(get_filepath()), shell=True).split()[0]
return { return {
"filename": get_filename(), "filename": get_filename(),
"md5": md5 "md5": md5

BIN
vm/packer

Binary file not shown.