mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-25 05:34:06 -08:00
VAGRANT: Fix Ubuntu Development VMs (#6909)
* GITIGNORE: Add vagrant log and ansible retry files
This patch adds the following to the project's .gitignore file:
- Vagrant's log file
- Ansible's retry files
Signed-off-by: Mark Stenglein <mark@stengle.in>
* ANSIBLE: Add Ubuntu Ansible playbook for dev env
This patch adds an Ansible playbook to provision an Ubuntu based
development environment. This playbook is fully idempotent and
can be run multiple times without negative consequences.
Signed-off-by: Mark Stenglein <mark@stengle.in>
* VAGRANTFILE: Clean Vagrantfile
There was a lot of extra VMs being provisioned by the existing
Vagrantfile. Some of this may need to come back but I am removing
it with this commit to demonstrate that this is all that is
needed.
Signed-off-by: Mark Stenglein <mark@stengle.in>
* ANSIBLE: UBUNTU: PLAYBOOK: Add .env configuration
I missed the configuration of the .env file in the initial commit.
This patch adds these configuration steps as well as the needed
Cron job for the Artisan scheduler.
Signed-off-by: Mark Stenglein <mark@stengle.in>
* Revert "VAGRANTFILE: Clean Vagrantfile"
This reverts commit a608a30d6b
.
* VAGRANTFILE: Fix Ubuntu Vagrant Development Boxes
This patch addresses problems with the existing Vagrant deployment
configurations for the Ubuntu VMs.
- The vagrant file is configuring the VMs for an incorrect bridge
interface. Fixed by changing the config to use the default
networking as well as a port-forward.
- Moves provisioning over to the Ansible-Local playbook I wrote.
Signed-off-by: Mark Stenglein <mark@stengle.in>
This commit is contained in:
parent
f01c93e162
commit
dd1b9ab926
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -52,6 +52,8 @@ tests/_support/_generated/*
|
||||||
*.cache
|
*.cache
|
||||||
|
|
||||||
.vagrant
|
.vagrant
|
||||||
|
*.log
|
||||||
|
*.retry
|
||||||
|
|
||||||
\.php_cs\.dist
|
\.php_cs\.dist
|
||||||
|
|
||||||
|
|
27
Vagrantfile
vendored
27
Vagrantfile
vendored
|
@ -8,25 +8,34 @@ Vagrant.configure("2") do |config|
|
||||||
config.vm.define "bionic" do |bionic|
|
config.vm.define "bionic" do |bionic|
|
||||||
bionic.vm.box = "ubuntu/bionic64"
|
bionic.vm.box = "ubuntu/bionic64"
|
||||||
bionic.vm.hostname = 'bionic'
|
bionic.vm.hostname = 'bionic'
|
||||||
bionic.vm.network "public_network", bridge: NETWORK_BRIDGE
|
bionic.vm.network "forwarded_port", guest: 80, host: 8080
|
||||||
bionic.vm.provision :shell, :inline => "wget #{SNIPEIT_SH_URL}"
|
bionic.vm.synced_folder ".", "/vagrant", :owner => 'www-data',
|
||||||
bionic.vm.provision :shell, :inline => "chmod 755 snipeit.sh"
|
:group => 'vagrant', :mount_options => ['dmode=775', 'fmode=775']
|
||||||
|
bionic.vm.provision "ansible_local" do |ansible|
|
||||||
|
ansible.playbook = "ansible/ubuntu/vagrant_playbook.yml"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "xenial" do |xenial|
|
config.vm.define "xenial" do |xenial|
|
||||||
xenial.vm.box = "ubuntu/xenial64"
|
xenial.vm.box = "ubuntu/xenial64"
|
||||||
xenial.vm.hostname = 'xenial'
|
xenial.vm.hostname = 'xenial'
|
||||||
xenial.vm.network "public_network", bridge: NETWORK_BRIDGE
|
xenial.vm.network "forwarded_port", guest: 80, host: 8080
|
||||||
xenial.vm.provision :shell, :inline => "wget #{SNIPEIT_SH_URL}"
|
xenial.vm.synced_folder ".", "/vagrant", :owner => 'www-data',
|
||||||
xenial.vm.provision :shell, :inline => "chmod 755 snipeit.sh"
|
:group => 'vagrant', :mount_options => ['dmode=775', 'fmode=775']
|
||||||
|
xenial.vm.provision "ansible_local" do |ansible|
|
||||||
|
ansible.playbook = "ansible/ubuntu/vagrant_playbook.yml"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "trusty" do |trusty|
|
config.vm.define "trusty" do |trusty|
|
||||||
trusty.vm.box = "ubuntu/trusty32"
|
trusty.vm.box = "ubuntu/trusty32"
|
||||||
trusty.vm.hostname = 'trusty'
|
trusty.vm.hostname = 'trusty'
|
||||||
trusty.vm.network "public_network", bridge: NETWORK_BRIDGE
|
trusty.vm.network "forwarded_port", guest: 80, host: 8080
|
||||||
trusty.vm.provision :shell, :inline => "wget #{SNIPEIT_SH_URL}"
|
trusty.vm.synced_folder ".", "/vagrant", :owner => 'www-data',
|
||||||
trusty.vm.provision :shell, :inline => "chmod 755 snipeit.sh"
|
:group => 'vagrant', :mount_options => ['dmode=775', 'fmode=775']
|
||||||
|
trusty.vm.provision "ansible_local" do |ansible|
|
||||||
|
ansible.playbook = "ansible/ubuntu/vagrant_playbook.yml"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "centos7" do |centos7|
|
config.vm.define "centos7" do |centos7|
|
||||||
|
|
10
ansible/ubuntu/apachevirtualhost.conf.j2
Executable file
10
ansible/ubuntu/apachevirtualhost.conf.j2
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
<VirtualHost *:80>
|
||||||
|
<Directory {{ app_path }}/public>
|
||||||
|
Allow From All
|
||||||
|
AllowOverride All
|
||||||
|
Options -Indexes
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
DocumentRoot {{ app_path }}/public
|
||||||
|
ServerName {{ fqdn }}
|
||||||
|
</VirtualHost>
|
226
ansible/ubuntu/vagrant_playbook.yml
Executable file
226
ansible/ubuntu/vagrant_playbook.yml
Executable file
|
@ -0,0 +1,226 @@
|
||||||
|
---
|
||||||
|
- name: Set up local server
|
||||||
|
hosts: all
|
||||||
|
remote_user: vagrant
|
||||||
|
become_user: root
|
||||||
|
become_method: sudo
|
||||||
|
vars:
|
||||||
|
app_path: "/var/www/snipeit"
|
||||||
|
fqdn: "localhost"
|
||||||
|
tasks:
|
||||||
|
- name: Update and upgrade existing apt packages
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
upgrade: yes
|
||||||
|
update_cache: yes
|
||||||
|
- name: Install Utilities
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
name: "{{ packages }}"
|
||||||
|
state: present
|
||||||
|
vars:
|
||||||
|
packages:
|
||||||
|
- nano
|
||||||
|
- vim
|
||||||
|
- name: Installing Apache httpd, PHP, MariaDB and other requirements.
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
name: "{{ packages }}"
|
||||||
|
state: present
|
||||||
|
vars:
|
||||||
|
packages:
|
||||||
|
- mariadb-client
|
||||||
|
- php
|
||||||
|
- php-curl
|
||||||
|
- php-mysql
|
||||||
|
- php-gd
|
||||||
|
- php-ldap
|
||||||
|
- php-zip
|
||||||
|
- php-mbstring
|
||||||
|
- php-xml
|
||||||
|
- php-bcmath
|
||||||
|
- curl
|
||||||
|
- git
|
||||||
|
- unzip
|
||||||
|
- python-pymysql
|
||||||
|
#
|
||||||
|
# Install the lastest version of composer
|
||||||
|
#
|
||||||
|
- name: Composer check
|
||||||
|
stat:
|
||||||
|
path: /usr/local/bin/composer
|
||||||
|
register: composer_exits
|
||||||
|
- name: Install Composer
|
||||||
|
shell: |
|
||||||
|
EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig)
|
||||||
|
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||||
|
ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');")
|
||||||
|
|
||||||
|
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
|
||||||
|
then
|
||||||
|
>&2 echo 'ERROR: Invalid installer signature'
|
||||||
|
rm composer-setup.php
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
php composer-setup.php --quiet
|
||||||
|
RESULT=$?
|
||||||
|
rm composer-setup.php
|
||||||
|
mv composer.phar /usr/local/bin/composer
|
||||||
|
exit $RESULT
|
||||||
|
when: not composer_exits.stat.exists
|
||||||
|
args:
|
||||||
|
creates: /usr/local/bin/composer
|
||||||
|
become: true
|
||||||
|
#
|
||||||
|
# Install and Configure MariaDB
|
||||||
|
#
|
||||||
|
- name: Install MariaDB
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
name: mariadb-server
|
||||||
|
state: present
|
||||||
|
register: sql_server
|
||||||
|
- name: Start and Enable MySQL server
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
name: mariadb
|
||||||
|
- name: Create Vagrant mysql password
|
||||||
|
become: true
|
||||||
|
mysql_user:
|
||||||
|
name: vagrant
|
||||||
|
password: vagrant
|
||||||
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
||||||
|
priv: "*.*:ALL"
|
||||||
|
state: present
|
||||||
|
- name: Enable remote mysql
|
||||||
|
replace:
|
||||||
|
path: /etc/mysql/mariadb.conf.d/50-server.cnf
|
||||||
|
regexp: "127.0.0.1"
|
||||||
|
replace: "0.0.0.0"
|
||||||
|
become: true
|
||||||
|
notify:
|
||||||
|
- restart mysql
|
||||||
|
- name: Create snipeit database
|
||||||
|
become: true
|
||||||
|
mysql_db:
|
||||||
|
name: snipeit
|
||||||
|
state: present
|
||||||
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
||||||
|
#
|
||||||
|
# Install Apache Web Server
|
||||||
|
#
|
||||||
|
- name: Install Apache 2.4
|
||||||
|
apt:
|
||||||
|
name: "{{ packages }}"
|
||||||
|
state: present
|
||||||
|
vars:
|
||||||
|
packages:
|
||||||
|
- apache2
|
||||||
|
- libapache2-mod-php
|
||||||
|
become: true
|
||||||
|
register: apache2_server
|
||||||
|
- name: Start and Enable Apache2 Server
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
name: apache2
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
#- name: Disable Apache modules
|
||||||
|
# become: true
|
||||||
|
# apache2_module:
|
||||||
|
# state: absent
|
||||||
|
# name: "{{ item }}"
|
||||||
|
# with_items:
|
||||||
|
# #- mpm_prefork
|
||||||
|
# notify:
|
||||||
|
# - restart apache2
|
||||||
|
- name: Enable Apache modules
|
||||||
|
become: true
|
||||||
|
apache2_module:
|
||||||
|
state: present
|
||||||
|
name: "{{ item }}"
|
||||||
|
with_items:
|
||||||
|
- rewrite
|
||||||
|
- vhost_alias
|
||||||
|
- deflate
|
||||||
|
- expires
|
||||||
|
- proxy_fcgi
|
||||||
|
- proxy
|
||||||
|
notify:
|
||||||
|
- restart apache2
|
||||||
|
- name: Install Apache VirtualHost File
|
||||||
|
become: true
|
||||||
|
template:
|
||||||
|
src: apachevirtualhost.conf.j2
|
||||||
|
dest: "/etc/apache2/sites-available/snipeit.conf"
|
||||||
|
- name: Enable VirtualHost
|
||||||
|
become: true
|
||||||
|
command: a2ensite snipeit
|
||||||
|
args:
|
||||||
|
creates: /etc/apache2/sites-enabled/snipeit.conf
|
||||||
|
notify:
|
||||||
|
- restart apache2
|
||||||
|
- name: Map apache dir to local folder
|
||||||
|
become: true
|
||||||
|
file:
|
||||||
|
src: /vagrant
|
||||||
|
dest: "{{ app_path }}"
|
||||||
|
state: link
|
||||||
|
notify:
|
||||||
|
- restart apache2
|
||||||
|
#
|
||||||
|
# Install dependencies from composer
|
||||||
|
#
|
||||||
|
- name: Install dependencies from composer
|
||||||
|
composer:
|
||||||
|
command: install
|
||||||
|
working_dir: "{{ app_path }}"
|
||||||
|
notify:
|
||||||
|
- restart apache2
|
||||||
|
#
|
||||||
|
# Configure .env file
|
||||||
|
#
|
||||||
|
- name: Copy .env file
|
||||||
|
copy:
|
||||||
|
src: "{{ app_path }}/.env.example"
|
||||||
|
dest: "{{ app_path }}/.env"
|
||||||
|
- name: Configure .env file
|
||||||
|
lineinfile:
|
||||||
|
path: "{{ app_path }}/.env"
|
||||||
|
regexp: "{{ item.regexp }}"
|
||||||
|
line: "{{ item.line }}"
|
||||||
|
with_items:
|
||||||
|
- { regexp: '^DB_HOST=', line: 'DB_HOST=127.0.0.1'}
|
||||||
|
- { regexp: '^DB_DATABASE=', line: 'DB_DATABASE=snipeit' }
|
||||||
|
- { regexp: '^DB_USERNAME=', line: 'DB_USERNAME=vagrant' }
|
||||||
|
- { regexp: '^DB_PASSWORD=', line: 'DB_PASSWORD=vagrant' }
|
||||||
|
- { regexp: '^APP_URL=', line: "APP_URL=http://{{ fqdn }}" }
|
||||||
|
- { regexp: '^APP_ENV=', line: "APP_ENV=development" }
|
||||||
|
- { regexp: '^APP_DEBUG=', line: "APP_ENV=true" }
|
||||||
|
- name: Generate application key
|
||||||
|
shell: "php {{ app_path }}/artisan key:generate --force"
|
||||||
|
- name: Artisan Migrate
|
||||||
|
shell: "php {{ app_path }}/artisan migrate --force"
|
||||||
|
#
|
||||||
|
# Create Cron Job
|
||||||
|
#
|
||||||
|
- name: Create scheduler cron job
|
||||||
|
become: true
|
||||||
|
cron:
|
||||||
|
name: "Snipe-IT Artisan Scheduler"
|
||||||
|
job: "/usr/bin/php {{ app_path }}/artisan schedule:run"
|
||||||
|
handlers:
|
||||||
|
- name: restart apache2
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
name: apache2
|
||||||
|
state: restarted
|
||||||
|
- name: restart mysql
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
name: mysql
|
||||||
|
state: restarted
|
||||||
|
|
Loading…
Reference in a new issue