├── .gitignore ├── projects ├── soft-roce │ ├── roles │ ├── centos7.yml │ └── Vagrantfile └── synapse │ ├── synapse.yml │ └── Vagrantfile ├── arch.yml ├── ubuntu.yml ├── centos.yml ├── debian.yml ├── fedora.yml ├── roles ├── apt │ └── tasks │ │ └── main.yml ├── pacman │ └── tasks │ │ └── main.yml ├── dnf │ └── tasks │ │ └── main.yml ├── yum │ └── tasks │ │ └── main.yml └── synapse │ ├── templates │ └── matrix.conf │ └── tasks │ └── main.yml ├── README.md └── distros └── Vagrantfile /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | -------------------------------------------------------------------------------- /projects/soft-roce/roles: -------------------------------------------------------------------------------- 1 | ../../roles/ -------------------------------------------------------------------------------- /arch.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | packages: 7 | - git 8 | roles: 9 | - apt 10 | -------------------------------------------------------------------------------- /ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | packages: 7 | - git 8 | roles: 9 | - apt 10 | -------------------------------------------------------------------------------- /centos.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | packages: 7 | - git 8 | - vim-enhanced 9 | roles: 10 | - dnf 11 | -------------------------------------------------------------------------------- /debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | packages: 7 | - git 8 | - vim-enhanced 9 | roles: 10 | - apt 11 | -------------------------------------------------------------------------------- /fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | packages: 7 | - git 8 | - vim-enhanced 9 | roles: 10 | - dnf 11 | -------------------------------------------------------------------------------- /roles/apt/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: "install packages" 3 | apt: 4 | name: "*" 5 | update_cache: yes 6 | cache_valid_time: 3600 7 | 8 | - name: "install packages" 9 | apt: 10 | name: 11 | - "{{ item }}" 12 | state: latest 13 | loop: "{{ packages }}" 14 | -------------------------------------------------------------------------------- /roles/pacman/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: "install packages" 3 | community.general.pacman: 4 | update_cache: yes 5 | update: yes 6 | 7 | - name: "install packages" 8 | community.general.pacman: 9 | name: 10 | - "{{ item }}" 11 | state: latest 12 | loop: "{{ packages }}" 13 | -------------------------------------------------------------------------------- /roles/dnf/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: "install packages" 3 | dnf: 4 | name: "*" 5 | disable_gpg_check: yes 6 | state: latest 7 | 8 | - name: "install packages" 9 | dnf: 10 | name: 11 | - "{{ item }}" 12 | state: latest 13 | disable_gpg_check: yes 14 | loop: "{{ packages }}" 15 | -------------------------------------------------------------------------------- /roles/yum/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: "install packages" 3 | yum: 4 | name: "*" 5 | disable_gpg_check: yes 6 | state: latest 7 | 8 | - name: "install packages" 9 | yum: 10 | name: 11 | - "{{ item }}" 12 | state: latest 13 | disable_gpg_check: yes 14 | loop: "{{ packages }}" 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vmboot 2 | 3 | * vagrantfile that can launch and configure various distros* 4 | 5 | 6 | 7 | Note: This repo was abandoned and unused for a couple of years. I recently 8 | needed some ansible playbooks for a different project for test data, 9 | which this repo happened to work for. This required moving playbook 10 | locations, which may have broken the vagrantfile. I don't really care 11 | about that at this point, so those will 12 | likely remain broken for the foreseeable future. 13 | -------------------------------------------------------------------------------- /projects/soft-roce/centos7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | gather_facts: no 5 | become: true 6 | vars: 7 | packages: 8 | - Cython 9 | - gcc 10 | - git 11 | - libfabric 12 | - libibverbs 13 | - libibverbs-utils 14 | - libibcommon 15 | - libibmad 16 | - libibumad 17 | - perftest 18 | - python2-pip 19 | - python-devel 20 | - rdma-core-devel 21 | - ucx 22 | - vim-enhanced 23 | roles: 24 | - yum 25 | -------------------------------------------------------------------------------- /projects/synapse/synapse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: 127.0.0.1 3 | connection: local 4 | become: true 5 | vars: 6 | url: 'matrix.phoenix-labs.xyz' 7 | packages: 8 | - git 9 | - build-essential 10 | - python3-dev 11 | - libffi-dev 12 | - python3-pip 13 | - python-setuptools 14 | - sqlite3 15 | - libssl-dev 16 | - python3-virtualenv 17 | - libjpeg-dev 18 | - libxslt1-dev 19 | - software-properties-common 20 | - certbot 21 | - nginx 22 | - python3-certbot-nginx 23 | - python3-certbot 24 | roles: 25 | - apt 26 | - synapse 27 | -------------------------------------------------------------------------------- /roles/synapse/templates/matrix.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80; 4 | server_name {{ url }}; 5 | return 301 https://$host$request_uri; 6 | } 7 | 8 | server { 9 | listen 443 ssl; 10 | listen [::]:443 ssl; 11 | server_name {{ url }}; 12 | 13 | ssl_certificate /etc/letsencrypt/live/{{ url }}/fullchain.pem; 14 | ssl_certificate_key /etc/letsencrypt/live/{{ url }}/privkey.pem; 15 | 16 | location / { 17 | proxy_pass http://localhost:8008; 18 | proxy_set_header X-Forwarded-For $remote_addr; 19 | } 20 | } 21 | 22 | server { 23 | listen 8448 ssl default_server; 24 | listen [::]:8448 ssl default_server; 25 | server_name {{ url }}; 26 | 27 | ssl_certificate /etc/letsencrypt/live/{{ url }}/fullchain.pem; 28 | ssl_certificate_key /etc/letsencrypt/live/{{ url }}/privkey.pem; 29 | location / { 30 | proxy_pass http://localhost:8008; 31 | proxy_set_header X-Forwarded-For $remote_addr; 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /roles/synapse/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create a directory if it does not exist 3 | ansible.builtin.file: 4 | path: ~/synapse 5 | state: directory 6 | 7 | - name: install virtualenv & deps 8 | pip: 9 | virtualenv: ~/synapse/env 10 | state: latest 11 | name: 12 | - pip 13 | - virtualenv 14 | - six 15 | - packaging 16 | - appdirs 17 | - setuptools 18 | - matrix-synapse 19 | 20 | - name: run matrix module 21 | shell: . ~/synapse/env/bin/activate && python3 -m synapse.app.homeserver --server-name "{{ url }}" --config-path ~/synapse/homeserver.yaml --generate-config --report-stats=yes 22 | 23 | - name: set up reverse proxy 24 | ansible.builtin.template: 25 | src: matrix.conf 26 | dest: /etc/nginx/conf.d/matrix.conf 27 | mode: '0664' 28 | owner: root 29 | group: root 30 | 31 | - name: start and enable nginx 32 | ansible.builtin.systemd: 33 | name: nginx 34 | state: started 35 | enabled: yes 36 | 37 | - name: '[user command] need to manually set up certbot' 38 | debug: 39 | msg: "sudo certbot certonly --nginx -d {{ url }}" 40 | 41 | - name: '[user command] manually start server' 42 | debug: 43 | msg: ". ~/synapse/env/bin/activate && synctl ~/synapse/homeserver.yaml start" 44 | 45 | - name: '[user command] register new password' 46 | debug: 47 | msg: "register_new_matrix_user -c ~/synapse/homeserver.yaml http://localhost:8008" 48 | -------------------------------------------------------------------------------- /projects/soft-roce/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | 3 | # If the following variable doesn't match a hash key then all vms will be provisioned 4 | # PROVISION= 'debian' 5 | PROVISION = 'centos7' 6 | NUM_BOXES = 2 7 | 8 | Vagrant.configure("2") do |config| 9 | boxes = { 10 | 'fedora' => { 11 | 'image' => 'fedora/33-cloud-base', 12 | 'shell' => 'sudo dnf -y install ansible', 13 | 'ansible' => 'sudo ansible-playbook /vagrant/fedora/fedora.yml', 14 | 'hostname' => 'fedora', 15 | }, 16 | 'centos' => { 17 | 'image' => 'centos/8', 18 | 'shell' => 'sudo dnf -y install epel-release && sudo dnf -y install ansible', 19 | 'ansible' => 'sudo ansible-playbook /vagrant/centos/centos.yml', 20 | 'hostname' => 'centos', 21 | }, 22 | 'centos7' => { 23 | 'image' => 'centos/7', 24 | 'shell' => 'sudo yum -y install epel-release && sudo yum -y install ansible', 25 | 'ansible' => 'sudo ansible-playbook /vagrant/centos7/centos7.yml', 26 | 'hostname' => 'centos7', 27 | }, 28 | } 29 | 30 | (1..NUM_BOXES).each do | num | 31 | params = boxes[PROVISION] 32 | config.vm.define PROVISION do |box| 33 | box.vm.box = params['image'] 34 | box.vm.hostname = params['hostname'] + "-" + num.to_s 35 | box.vm.synced_folder ".", "/vagrant/" + params['hostname'], owner: 'vagrant', group: 'vagrant', create: true, type: 'rsync' 36 | #box.vm.network :private_network, ip: "192.168.10." + (100 + num).to_s 37 | box.vm.provider "virtualbox" do |vb| 38 | vb.customize ["modifyvm", :id, "--cpus", "2", "--paravirtprovider", "kvm", "--ioapic", "on"] 39 | vb.memory = 2048 40 | end 41 | box.vm.provider :libvirt do |v| 42 | v.memory = 2048 43 | v.cpus = 2 44 | end 45 | box.vm.provision "shell", inline: params['shell'] 46 | box.vm.provision "shell", preserve_order: true, inline: params['ansible'] 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /projects/synapse/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | 3 | # If the following variable doesn't match a hash key then all vms will be provisioned 4 | PROVISION= 'synapse' 5 | 6 | Vagrant.configure("2") do |config| 7 | boxes = { 8 | 'synapse' => { 9 | 'image' => 'generic/ubuntu2010', 10 | 'shell' => 'sudo apt-get -y install ansible', 11 | 'ansible' => 'sudo ansible-playbook /vagrant/synapse/synapse.yml', 12 | 'hostname' => 'synapse', 13 | } 14 | } 15 | def provision_box(box, params) 16 | box.vm.box = params['image'] 17 | box.ssh.insert_key = 'true' 18 | box.vm.hostname = params['hostname'] 19 | box.vm.synced_folder ".", "/vagrant/" + params['hostname'], owner: 'vagrant', group: 'vagrant', create: true, type: 'rsync' 20 | box.vm.provider "virtualbox" do |vb| 21 | vb.customize ["modifyvm", :id, "--cpus", "2", "--paravirtprovider", "kvm", "--ioapic", "on"] 22 | vb.memory = 2048 23 | end 24 | box.vm.provider :libvirt do |v| 25 | v.memory = 2048 26 | v.cpus = 2 27 | v.username = 'root' 28 | end 29 | box.vm.provision "shell", preserve_order:true, inline: params['shell'] 30 | box.vm.provision "shell", preserve_order:true, inline: params['ansible'] + '|| true' 31 | if Vagrant.has_plugin?("vagrant-proxyconf") 32 | box.proxy.http = ENV["http_proxy"] 33 | box.proxy.https = ENV["https_proxy"] 34 | box.proxy.no_proxy = ENV["no_proxy"] 35 | end 36 | end 37 | 38 | params = boxes[PROVISION] 39 | if boxes.key?(PROVISION) 40 | puts "Provisioning " + PROVISION 41 | puts "====================" 42 | config.vm.define PROVISION do |box| 43 | provision_box(box, params) 44 | end 45 | else 46 | puts "Provisioning all VMs" 47 | puts "====================" 48 | boxes.each do | name, params | 49 | config.vm.define name do |box| 50 | provision_box(box, params) 51 | end 52 | end 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /distros/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | 3 | # If the following variable doesn't match a hash key then all vms will be provisioned 4 | # PROVISION= 'debian' 5 | PROVISION= 'centos7' 6 | 7 | Vagrant.configure("2") do |config| 8 | boxes = { 9 | 'fedora' => { 10 | 'image' => 'fedora/33-cloud-base', 11 | 'shell' => 'sudo dnf -y install ansible', 12 | 'ansible' => 'sudo ansible-playbook /vagrant/fedora/fedora.yml', 13 | 'hostname' => 'fedora', 14 | }, 15 | 'centos' => { 16 | 'image' => 'centos/8', 17 | 'shell' => 'sudo dnf -y install epel-release && sudo dnf -y install ansible', 18 | 'ansible' => 'sudo ansible-playbook /vagrant/centos/centos.yml', 19 | 'hostname' => 'centos', 20 | }, 21 | 'ubuntu' => { 22 | 'image' => 'generic/ubuntu2010', 23 | 'shell' => 'sudo apt-get -y install ansible', 24 | 'ansible' => 'sudo ansible-playbook /vagrant/ubuntu/ubuntu.yml', 25 | 'hostname' => 'ubuntu', 26 | }, 27 | 'centos7' => { 28 | 'image' => 'centos/7', 29 | 'shell' => 'sudo yum -y install epel-release && sudo yum -y install ansible', 30 | 'ansible' => 'sudo ansible-playbook /vagrant/centos7/centos7.yml', 31 | 'hostname' => 'centos7', 32 | }, 33 | 'debian' => { 34 | 'image' => 'debian/buster64', 35 | 'shell' => 'sudo apt-get -y install ansible', 36 | 'ansible' => 'sudo ansible-playbook /vagrant/debian/debian.yml', 37 | 'hostname' => 'debian', 38 | }, 39 | 'arch' => { 40 | 'image' => 'generic/arch', 41 | 'shell' => 'sudo pacman -S ansible --noconfirm && ansible-galaxy collection install community.general', 42 | 'ansible' => 'sudo ansible-playbook /vagrant/arch/arch.yml', 43 | 'hostname' => 'arch', 44 | } 45 | } 46 | def provision_box(box, params) 47 | box.vm.box = params['image'] 48 | box.ssh.insert_key = 'true' 49 | box.vm.hostname = params['hostname'] 50 | box.vm.synced_folder ".", "/vagrant/" + params['hostname'], owner: 'vagrant', group: 'vagrant', create: true, type: 'rsync' 51 | box.vm.provider "virtualbox" do |vb| 52 | vb.customize ["modifyvm", :id, "--cpus", "2", "--paravirtprovider", "kvm", "--ioapic", "on"] 53 | vb.memory = 2048 54 | end 55 | box.vm.provider :libvirt do |v| 56 | v.memory = 2048 57 | v.cpus = 2 58 | v.username = 'root' 59 | end 60 | box.vm.provision "shell", preserve_order:true, inline: params['shell'] 61 | box.vm.provision "shell", preserve_order:true, inline: params['ansible'] + '|| true' 62 | if Vagrant.has_plugin?("vagrant-proxyconf") 63 | box.proxy.http = ENV["http_proxy"] 64 | box.proxy.https = ENV["https_proxy"] 65 | box.proxy.no_proxy = ENV["no_proxy"] 66 | end 67 | end 68 | 69 | params = boxes[PROVISION] 70 | if boxes.key?(PROVISION) 71 | puts "Provisioning " + PROVISION 72 | puts "====================" 73 | config.vm.define PROVISION do |box| 74 | provision_box(box, params) 75 | end 76 | else 77 | puts "Provisioning all VMs" 78 | puts "====================" 79 | boxes.each do | name, params | 80 | config.vm.define name do |box| 81 | provision_box(box, params) 82 | end 83 | end 84 | end 85 | end 86 | --------------------------------------------------------------------------------