--- - name: Set up local server hosts: all remote_user: vagrant become_user: root become_method: sudo vars: - ansible_python_interpreter: /usr/local/bin/python2.7 gather_facts: no # Tasks tasks: # # Update the PKG database # - name: Upgrade PKG database raw: sudo pkg upgrade -y # # Mount the shared folders # - name: Update Vagrant Shared Folders command: "{{ item }}" with_items: - sysrc rpc_lockd_enable=YES - sysrc rpc_statd_enable=YES become: true # # Install required utilities # - name: Install Utilities pkgng: name: "{{ item }}" state: present with_items: - openssl - node - npm - git - nano - wget - bash become: true # # Install php and php dependancies # - name: Install PHP dependancies pkgng: name: "{{ item }}" state: present with_items: - php72 - php72-zip - php72-zlib - php72-extensions - php72-mbstring - php72-openssl # - php72-mysqli - php72-curl - php72-soap - php72-pdo_mysql # - php72-pdo_pgsql - php72-ldap - php72-curl - php72-fileinfo - php72-bcmath - php72-gd become: true # # Create a php.ini file # - name: PHP INI check stat: path: /usr/local/etc/php.ini register: php_ini_exits - name: Create PHP ini command: cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini become: true when: not php_ini_exits.stat.exists - name: Enable PHP-FPM auto-start command: sysrc php_fpm_enable=YES become: true - name: Start PHP-FPM service service: name: php-fpm state: started become: true # # 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 become: true # # Install MySQL Server - name: Install MySQL 5.7 pkgng: name: mysql57-server state: present become: true register: sql_server - name: Start MySQL server service: name: mysql-server state: started become: true - name: MySQL 5.7 auto-start command: sysrc mysql_enable=YES become: true when: sql_server.changed == true - name: Get MySQL root password command: tail -1 /root/.mysql_secret register: myql_root_pwd become: true when: sql_server.changed == true - name: Change MySQL root password command: mysqladmin -u root -p'{{myql_root_pwd.stdout}}' password vagrant when: sql_server.changed == true - name: Enable remote mysql replace: path: /usr/local/etc/mysql/my.cnf regexp: "127.0.0.1" replace: "0.0.0.0" become: true when: sql_server.changed == true - name: Grant user vagrant privelages shell: mysql -u root -pvagrant -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'vagrant' WITH GRANT OPTION; FLUSH PRIVILEGES;" become: true when: sql_server.changed == true ignore_errors: true - name: Restart MySQL server service: name: mysql-server state: restarted become: true # # Install Apache Web Server # - name: Install Apache 2.4 pkgng: name: apache24 state: present become: true register: apache24_server - name: Apache 2.4 auto-start command: sysrc apache24_enable=YES become: true when: apache24_server.changed == true - name: Enable Apache modules replace: path: /usr/local/etc/apache24/httpd.conf regexp: "#{{ item }}" replace: "{{ item }}" become: true with_items: - LoadModule rewrite_module libexec/apache24/mod_rewrite.so - LoadModule vhost_alias_module libexec/apache24/mod_vhost_alias.so - LoadModule deflate_module libexec/apache24/mod_deflate.so - LoadModule expires_module libexec/apache24/mod_expires.so - LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so - LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so - LoadModule proxy_module libexec/apache24/mod_proxy.so - Include etc/apache24/extra/httpd-vhosts.conf when: apache24_server.changed == true - name: Disable Apache modules replace: path: /usr/local/etc/apache24/httpd.conf regexp: "{{ item }}" replace: "#{{ item }}" become: true with_items: - LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so when: apache24_server.changed == true - name: Backup vhosts command: cp /usr/local/etc/apache24/extra/httpd-vhosts.conf /usr/local/etc/apache24/extra/httpd-vhosts.conf.bak become: true when: apache24_server.changed == true - name: Truncate vhosts command: truncate -s 0 /usr/local/etc/apache24/extra/httpd-vhosts.conf become: true when: apache24_server.changed == true - name: Set up vhost blockinfile: path: "/usr/local/etc/apache24/extra/httpd-vhosts.conf" block: | DocumentRoot /usr/local/www/apache24/data/public ServerName vagrant.app ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/local/www/apache24/data/public/$1 DirectoryIndex /index.php index.php Options -Indexes +FollowSymLinks AllowOverride All Require all granted become: true when: apache24_server.changed == true - name: Map apache dir to local folder shell: | if ! [ -L /var/www ]; then rm -rf /usr/local/www/apache24/data; ln -fs /vagrant /usr/local/www/apache24/data; fi become: true when: apache24_server.changed == true - name: Start Apache 2.4 server service: name: apache24 state: started become: true