From 45c6115fbac10a03f114c8f79da03f402b3c0a3c Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Aug 23 2016 09:56:28 +0000 Subject: Added Support for dev environment under Vagrant This adds a Vagrant file that allows a developer to quickly set up a dev environment of pkgdb2 using the infra db dump. It uses vagrant-libvirt and vagrantsshfs for file syncing. Also in this change, added a new param in the runserver.py that allows the host to be set as a commandline param. --- diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..fffd892 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,38 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure(2) do |config| + config.vm.box_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/23/Cloud/x86_64/Images/Fedora-Cloud-Base-Vagrant-23-20151030.x86_64.vagrant-libvirt.box" + config.vm.box = "f23-cloud-libvirt" + config.vm.network "forwarded_port", guest: 5000, host: 5001 + config.vm.synced_folder ".", "/vagrant", type: "sshfs" + + config.vm.provision "shell", inline: "sudo dnf -y install python redhat-rpm-config python-devel postgresql-devel postgresql-server rpl python-alembic python-psycopg2 gcc" + + config.vm.provision "shell", inline: "pip install kitchen paver urllib3" + config.vm.provision "shell", inline: "pip install -r /vagrant/requirements.txt" + + config.vm.provision "shell", inline: "sudo postgresql-setup initdb" + + config.vm.provision "shell", inline: "sudo rpl 'host all all 127.0.0.1/32 ident' 'host all all 127.0.0.1/32 trust' /var/lib/pgsql/data/pg_hba.conf" + config.vm.provision "shell", inline: "sudo rpl 'host all all ::1/128 ident' 'host all all ::1/128 trust' /var/lib/pgsql/data/pg_hba.conf" + + config.vm.provision "shell", inline: "sudo systemctl enable postgresql.service" + config.vm.provision "shell", inline: "sudo systemctl start postgresql.service" + + config.vm.provision "shell", inline: "pushd /tmp/; curl -O https://infrastructure.fedoraproject.org/infra/db-dumps/pkgdb2.dump.xz; popd;" + config.vm.provision "shell", inline: "sudo runuser -l postgres -c 'createdb pkgdb2'" + + config.vm.provision "shell", inline: "xzcat /tmp/pkgdb2.dump.xz | sudo runuser -l postgres -c 'psql pkgdb2'" + + # Set up development.ini + config.vm.provision "shell", inline: "cp /vagrant/pkgdb2/default_config.py /vagrant/pkgdb2/vagrant_default_config.py", privileged: false + config.vm.provision "shell", inline: "pushd /vagrant/; rpl 'sqlite:////var/tmp/pkgdb2_dev.sqlite' 'postgresql://postgres:whatever@localhost/pkgdb2' /vagrant/pkgdb2/vagrant_default_config.py; popd;" + config.vm.provision "shell", inline: "echo 'Provisioning Complete. Connect to your new vagrant box with'" + config.vm.provision "shell", inline: "echo 'vagrant ssh'" + config.vm.provision "shell", inline: "echo 'Then start the pkdb2 server with'" + config.vm.provision "shell", inline: "echo 'pushd /vagrant/; ./runserver.py -c pkgdb2/vagrant_default_config.py --host \"0.0.0.0\";'" + + +end + diff --git a/runserver.py b/runserver.py index e12089a..03be9c2 100755 --- a/runserver.py +++ b/runserver.py @@ -25,6 +25,9 @@ parser.add_argument( parser.add_argument( '--port', '-p', default=5000, help='Port for the flask application.') +parser.add_argument( + '--host', default="127.0.0.1", + help='Hostname to listen on. When set to 0.0.0.0 the server is available externally. Defaults to 127.0.0.1 making the it only visable on localhost') args = parser.parse_args() @@ -42,4 +45,4 @@ if args.config: from pkgdb2 import APP APP.debug = True -APP.run(port=int(args.port)) +APP.run(port=int(args.port), host=args.host)