Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add vagrant support for ircb #94

Open
wants to merge 5 commits into
base: api_fixes
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Dockerfile/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Pagure
# Build using: sudo docker build -t "ircb:0.0.1" --rm=true --no-cache .
#
# NAME pagure
# VERSION 0.0.1
# LAST_UPDATED 2017-03-06 14:47

FROM fedora/redis:latest
MAINTAINER Farhaan Bukhsh <[email protected]>

RUN dnf -y update && dnf clean all
RUN dnf install -y make automake gcc gcc-c++ kernel-devel libffi libffi-devel \
zeromq zeromq-devel redhat-rpm-config
RUN dnf install -y python2-devel python-setuptools python-nose py-bcrypt python-alembic \
python-pip python3-devel openssl-devel redis python3-pip

RUN pip3.4 install Flask==0.10.1 Flask-SQLAlchemy==2.0 Flask-User==0.6.11 \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not install from requirements.txt?

SQLAlchemy==1.0.13 SQLAlchemy-Utils==0.30.15 irc3==0.9.3 \
alembic==0.8.3 WTForms-Alchemy==0.15.0 click==6.3 \
aioredis==0.2.4 tabulate==0.7.5 aiohttp==1.2.0 \
aiohttp-auth==0.1.1 aiohttp-session[secure]==0.5.0 \
aiozmq==0.7.1 msgpack-python==0.4.7 PyYAML==3.11 redis

EXPOSE 9000 10000 6379

CMD ["redis-service"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why start redis-service? Won't it be better to have ircb as entrypoint and ["run", "allinone"] as default command? This will open up possible usecases like:

docker run ircb run stores
docker run ircb run bouncer

and so on ...


15 changes: 15 additions & 0 deletions Dockerfile/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
How to configure
================

- Build the docker image

- Run the command
docker run --rm --name "ircb" -it -p 9000:9000 \
-p 10000:10000 -p 6739:6739 -v /path/to/ircb:/ircb ircb:0.0.1 \
bash

- cd ircb

- pyhton3 setup.py develop

Note: Replace path to irc with the absolute path to ircb repo
107 changes: 107 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "fedora/24-cloud-base"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 9000, host: 9000
config.vm.network "forwarded_port", guest: 10000, host: 10000

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
if Vagrant.has_plugin?("vagrant-hostmanager")
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
end
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder ".", "/vagrant", type:"rsync"
config.vm.synced_folder ".", "/vagrant", disable: true
config.vm.synced_folder ".", "/home/vagrant/devel", type: "rsync"
# If you want to turn on the sshfs uncomment the following line and comment
# the above mentioned line
# config.vm.synced_folder ".", "/home/vagrant/devel", type: "sshfs", sshfs_opts_append: "-o nonempty", reverse: true
#
# Comment this line if you would like to disable the automatic update during provisioning
config.vm.provision "shell", inline: "sudo dnf upgrade -y"
# bootstrap and run with ansible
config.vm.provision "shell", inline: "sudo dnf -y install python2-dnf libselinux-python"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/vagrant-playbook.yml"
end
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.

# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end

# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
config.vm.define "ircb" do |ircb|
ircb.vm.host_name = "ircb-dev.example.com"

ircb.vm.provider :libvirt do |domain|
# Season to taste
domain.cpus = 4
domain.graphics_type = "spice"
domain.memory = 2048
domain.video_type = "qxl"

# Uncomment the following line if you would like to enable libvirt's unsafe cache
# mode. It is called unsafe for a reason, as it causes the virtual host to ignore all
# fsync() calls from the guest. Only do this if you are comfortable with the possibility of
# your development guest becoming corrupted (in which case you should only need to do a
# vagrant destroy and vagrant up to get a new one).
#
# domain.volume_cache = "unsafe"
end
end
end
2 changes: 2 additions & 0 deletions ansible/roles/ircb-dev/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- name: restart redis
service: name=redis state=restarted
38 changes: 38 additions & 0 deletions ansible/roles/ircb-dev/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
- name: Install helpfull packages
dnf: name={{ item }} state=present
with_items:
- git
- python-rpdb
- tmux
- tree
- vim-enhanced

- name: Install ircb development packages
dnf: name={{ item }} state=present
with_items:
- gcc
- libffi-devel
- python-alembic
- redis
- python3-devel
- openssl-devel
- python-pip
- python-virtualenvwrapper
- python-devel
- libffi
- python
- zeromq
- zeromq-devel
- redhat-rpm-config

- name: Install python packages for ircb
pip: requirements=/home/vagrant/devel/requirements.txt executable=pip3.5

- name: Run python3 setup
shell: python3 setup.py develop
args:
chdir: /home/vagrant/devel

- name: Start redis service
service: name=redis state=started enabled=yes
7 changes: 7 additions & 0 deletions ansible/vagrant-playbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
- hosts: all
become: true
become_method: sudo
vars:
roles:
- ircb-dev
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ aiohttp-session[secure]==0.5.0
aiozmq==0.7.1
msgpack-python==0.4.7
PyYAML==3.11
redis