#9 start setting up a vagrant dev environment
Opened 2 years ago by ryanlerch. Modified 2 years ago
ryanlerch/discourse2fedmsg vagrant-discourse  into  master

file modified
+1
@@ -2,6 +2,7 @@ 

  discourse2fedmsg.egg-info

  *.pyc

  .venv

+ .vagrant

  

  # Tests

  .coverage

file added
+29
@@ -0,0 +1,29 @@ 

+ # -*- mode: ruby -*-

+ # vi: set ft=ruby :

+ 

+ Vagrant.configure(2) do |config|

+   config.hostmanager.enabled = true

+   config.hostmanager.manage_host = true

+   config.hostmanager.manage_guest = true

+ 

+   config.vm.define "discourse2fedoramessaging" do |discourse2fedoramessaging|

+     discourse2fedoramessaging.vm.box_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/34/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-34-1.2.x86_64.vagrant-libvirt.box"

+     discourse2fedoramessaging.vm.box = "f34-cloud-libvirt"

+     discourse2fedoramessaging.vm.hostname = "discourse2fedoramessaging.test"

+ 

+     discourse2fedoramessaging.vm.synced_folder '.', '/vagrant', disabled: true

+     discourse2fedoramessaging.vm.synced_folder ".", "/home/vagrant/discourse2fedoramessaging", type: "sshfs"

+ 

+     discourse2fedoramessaging.vm.provider :libvirt do |libvirt|

+       libvirt.cpus = 2

+       libvirt.memory = 4096

+     end

+ 

+     discourse2fedoramessaging.vm.provision "ansible" do |ansible|

+       ansible.playbook = "devel/ansible/discourse2fedoramessaging.yml"

+       ansible.config_file = "devel/ansible/ansible.cfg"

+       ansible.verbose = true

+     end

+   end

+ 

+ end

@@ -0,0 +1,3 @@ 

+ [defaults]

+ # Human-readable output

+ stdout_callback = yaml

@@ -0,0 +1,6 @@ 

+ ---

+ - hosts: discourse2fedoramessaging 

+   become: true

+   become_method: sudo

+   roles:

+     - discourse2fedoramessaging

@@ -0,0 +1,11 @@ 

+ # .bashrc

+ 

+ export PATH="$HOME/.rbenv/bin:$PATH"

+ eval "$(rbenv init - --no-rehash)"

+ 

+ #source /srv/venv/bin/activate

+ 

+ #alias datanommer-consumer-start="sudo systemctl start datanommer.service && echo 'datanommer consumer is running'"

+ #alias datanommer-consumer-logs="sudo journalctl -u datanommer.service"

+ #alias datanommer-consumer-restart="sudo systemctl restart datanommer.service && echo 'datanommer consumer is running'"

+ #alias datanommer-consumer-stop="sudo systemctl stop datanommer.service && echo 'datanommer service stopped'"

@@ -0,0 +1,14 @@ 

+ [Unit]

+ Description=discourse

+ 

+ [Service]

+ Environment=PATH=/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:

+ Environment=UNICORN_BIND_ALL=1

+ Environment=DISCOURSE_DEV_HOSTS=discourse2fedoramessaging.test

+ Environment=DISCOURSE_HOSTNAME=discourse2fedoramessaging.test

+ User=vagrant

+ WorkingDirectory=/home/vagrant/discourse

+ ExecStart=bundle exec rails server

+ 

+ [Install]

+ WantedBy=multi-user.target

@@ -0,0 +1,11 @@ 

+ [Unit]

+ Description=emberjs

+ 

+ [Service]

+ Environment=PATH=/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:

+ User=vagrant

+ WorkingDirectory=/home/vagrant/discourse

+ ExecStart=bash ruby /home/vagrant/discourse/bin/ember-cli

+ 

+ [Install]

+ WantedBy=multi-user.target

@@ -0,0 +1,11 @@ 

+ [Unit]

+ Description=mailcatcher

+ 

+ [Service]

+ Environment=PATH=/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:

+ User=vagrant

+ WorkingDirectory=/home/vagrant/discourse

+ ExecStart=bash mailcatcher -f --http-ip 0.0.0.0

+ 

+ [Install]

+ WantedBy=multi-user.target

@@ -0,0 +1,222 @@ 

+ ---

+ - name: Install RPM packages

+   dnf:

+       name:

+       - "@development-tools" 

+       - git

+       - rpm-build

+       - zlib-devel

+       - ruby-devel

+       - readline-devel

+       - libpq-devel

+       - ImageMagick

+       - sqlite

+       - sqlite-devel

+       - nodejs

+       - npm

+       - curl

+       - gcc

+       - g++

+       - bzip2

+       - openssl-devel

+       - libyaml-devel

+       - libffi-devel

+       - zlib-devel

+       - gdbm-devel

+       - ncurses-devel

+       - optipng

+       - pngquant

+       - jhead

+       - jpegoptim

+       - gifsicle

+       - postgresql-server

+       - postgresql-contrib

+       - python3-psycopg2

+       - redis

+       state: present

+ 

+ - name: Install svgo with npm

+   community.general.npm:

+     name: svgo

+     global: yes

+ 

+ - name: Install yarn with npm

+   community.general.npm:

+     name: yarn

+     global: yes

+ 

+ - name: Setup the postgresql DB

+   command: postgresql-setup --initdb

+   args:

+     creates: /var/lib/pgsql/data/postgresql.conf

+ 

+ - name: Start postgresql

+   service:

+     name: postgresql

+     enabled: yes

+     state: started

+ 

+ 

+ - block:

+     - name: Create the user

+       postgresql_user:

+         name: vagrant

+         password: password

+         role_attr_flags: CREATEDB,CREATEROLE,SUPERUSER

+ 

+   become: yes

+   become_user: postgres

+   become_method: sudo

+ 

+ 

+ - name: Make connection easier

+   copy:

+     dest: /home/vagrant/.pgpass

+     content: "*:*:discourse_development:vagrant:password\n"

+     owner: vagrant

+     group: vagrant

+     mode: 0600

+ 

+ 

+ - name: Start redis

+   service:

+     name: redis

+     enabled: yes

+     state: started

+ 

+ - name: Install the .bashrc

+   copy:

+     src: .bashrc

+     dest: /home/vagrant/.bashrc

+     mode: 0644

+     owner: vagrant

+     group: vagrant

+ 

+ - name: checkout rbenv

+   ansible.builtin.git:

+     repo: 'https://github.com/rbenv/rbenv.git'

+     dest: /home/vagrant/.rbenv

+   become: yes

+   become_user: vagrant

+ 

+ 

+ - name: initialise rbenv

+   command: src/configure && make -C src && /home/vagrant/.rbenv/bin/rbenv init

+   args:

+     chdir: /home/vagrant/.rbenv

+   become: yes

+   become_user: vagrant

+ 

+ - name: checkout ruby-build

+   ansible.builtin.git:

+     repo: 'https://github.com/rbenv/ruby-build.git'

+     dest: '/home/vagrant/.rbenv/plugins/ruby-build'

+   become: yes

+   become_user: vagrant

+ 

+ 

+ - name: rbenv install

+   command: '/home/vagrant/.rbenv/bin/rbenv install 2.7.1'

+   become: yes

+   become_user: vagrant

+ 

+ - name: rbenv global

+   command: '/home/vagrant/.rbenv/bin/rbenv global 2.7.1'

+   become: yes

+   become_user: vagrant

+ 

+ - name: rbenv rehash

+   command: '/home/vagrant/.rbenv/bin/rbenv rehash'

+   become: yes

+   become_user: vagrant

+ 

+ - name: gem update

+   command: 'gem update --system'

+   become: yes

+   become_user: vagrant

+ 

+ - name: install gems

+   command: 'gem install bundler mailcatcher rails'

+   become: yes

+   become_user: vagrant

+ 

+ - name: checkout discourse

+   ansible.builtin.git:

+     repo: 'https://github.com/discourse/discourse.git'

+     dest: '/home/vagrant/discourse'

+   become: yes

+   become_user: vagrant

+ 

+ - name: Install Discourse dependencies

+   command: bundle install

+   args:

+     chdir: /home/vagrant/discourse

+   become: yes

+   become_user: vagrant

+ 

+ - name: create the DB

+   shell: bundle exec rake db:create

+   args:

+     chdir: /home/vagrant/discourse

+   become: yes

+   become_user: vagrant

+ 

+ - name: migrate the DB

+   shell: bundle exec rake db:migrate

+   args:

+     chdir: /home/vagrant/discourse

+   become: yes

+   become_user: vagrant

+ 

+ - name: test the migration

+   shell: RAILS_ENV=test bundle exec rake db:create db:migrate

+   args:

+     chdir: /home/vagrant/discourse

+   become: yes

+   become_user: vagrant

+ 

+ - name: Install the systemd unit file for mailcatcher

+   copy:

+       src: "mailcatcher.service"

+       dest: /etc/systemd/system/mailcatcher.service

+       mode: 0644

+ 

+ - name: Start mailcatcher

+   systemd:

+     state: started

+     name: mailcatcher

+     daemon_reload: yes

+     enabled: yes

+ 

+ - name: Install the systemd unit file for discourse

+   copy:

+       src: "discourse.service"

+       dest: /etc/systemd/system/discourse.service

+       mode: 0644

+ 

+ - name: Start discourse service using systemd

+   systemd:

+     state: started

+     name: discourse

+     daemon_reload: yes

+     enabled: yes

+ 

+ - name: Install the systemd unit file for running ember-cli

+   copy:

+       src: "emberjs.service"

+       dest: /etc/systemd/system/emberjs.service

+       mode: 0644

+ 

+ - name: Start ember-cli service using systemd

+   systemd:

+     state: started

+     name: emberjs

+     daemon_reload: yes

+     enabled: yes

+ 

+ - name: create an admin user

+   shell: RAILS_ENV=development bundle exec rake admin:invite[admin@example.test]

+   args:

+     chdir: /home/vagrant/discourse

+   become: yes

+   become_user: vagrant

This adds the beginnings of a Vagrant development environment, adding
the setup, and installing and configuring discourse.

Signed-off-by: Ryan Lerch rlerch@redhat.com

rebased onto 1484670

2 years ago

also, after vagrant up,

discourse will be at:

discourse2fedoramessaging.test:3000

but really it is at

discourse2fedoramessaging.test:4200

due to some ember thing.

also, mailcatcher is setup at

discourse2fedoramessaging.test:1080

and there will be an email in there for the admin account on the discourse instance. just follow the link (wou will need to change the port to 4200 in the url) and ser tyour admin password