From e46df0928d984c0b3c5a1a9f7df4ec1eb78f9660 Mon Sep 17 00:00:00 2001 From: Mark Stenglein Date: Sun, 14 Apr 2019 11:31:07 -0400 Subject: [PATCH] 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 --- ansible/ubuntu/apachevirtualhost.conf.j2 | 10 ++ ansible/ubuntu/vagrant_playbook.yml | 194 +++++++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100755 ansible/ubuntu/apachevirtualhost.conf.j2 create mode 100755 ansible/ubuntu/vagrant_playbook.yml diff --git a/ansible/ubuntu/apachevirtualhost.conf.j2 b/ansible/ubuntu/apachevirtualhost.conf.j2 new file mode 100755 index 0000000000..c555ad9db7 --- /dev/null +++ b/ansible/ubuntu/apachevirtualhost.conf.j2 @@ -0,0 +1,10 @@ + + + Allow From All + AllowOverride All + Options -Indexes + + + DocumentRoot {{ app_path }}/public + ServerName {{ fqdn }} + diff --git a/ansible/ubuntu/vagrant_playbook.yml b/ansible/ubuntu/vagrant_playbook.yml new file mode 100755 index 0000000000..241336e2e7 --- /dev/null +++ b/ansible/ubuntu/vagrant_playbook.yml @@ -0,0 +1,194 @@ +--- +- 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 + handlers: + - name: restart apache2 + become: true + systemd: + name: apache2 + state: restarted + - name: restart mysql + become: true + systemd: + name: mysql + state: restarted +