├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE ├── stale.yml └── workflows │ └── ci.yml ├── .gitignore ├── .yamllint ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── Vagrantfile ├── composer.json ├── default.config.yml ├── docs ├── configurations │ ├── base-os.md │ ├── databases-mariadb.md │ ├── databases-mysql.md │ ├── databases-postgresql.md │ ├── php.md │ ├── webservers-apache.md │ └── webservers-nginx.md ├── deployment │ ├── composer-dependency.md │ ├── composer-package.md │ ├── composer.md │ ├── drush-make.md │ ├── git.md │ ├── local-codebase.md │ └── multisite.md ├── extending │ ├── ansible-args.md │ ├── scripts.md │ └── vagrantfile.md ├── extras │ ├── adminer.md │ ├── blackfire.md │ ├── drupal-console.md │ ├── drush.md │ ├── elasticsearch.md │ ├── java.md │ ├── mailhog.md │ ├── memcached.md │ ├── newrelic.md │ ├── nodejs.md │ ├── redis.md │ ├── ruby.md │ ├── selenium.md │ ├── solr.md │ ├── tideways.md │ ├── upload-progress.md │ ├── varnish.md │ ├── xdebug.md │ └── xhprof.md ├── getting-started │ ├── configure-drupalvm.md │ ├── installation-linux.md │ ├── installation-macos.md │ ├── installation-windows.md │ └── syncing-folders.md ├── images │ └── drupal-vm-logo.png ├── index.md ├── js │ └── fix_search.js └── other │ ├── acquia.md │ ├── bigpipe.md │ ├── custom-base-box.md │ ├── docker.md │ ├── drupal-6.md │ ├── management-tools.md │ ├── networking.md │ ├── performance.md │ ├── production.md │ ├── vagrant-lxc.md │ └── wordpress-other-applications.md ├── example.docker-compose.yml ├── example.drupal.composer.json ├── example.drupal.make.yml ├── examples └── scripts │ ├── README.md │ ├── configure-solr.sh │ └── pareview.sh ├── lib └── drupalvm │ └── vagrant.rb ├── mkdocs.yml ├── molecule └── default │ ├── converge.yml │ ├── molecule.yml │ ├── ubuntu1804-php74.config.yml │ ├── ubuntu1804-postgresql.config.yml │ └── verify.yml └── provisioning ├── README.md ├── ansible.cfg ├── docker ├── bake.sh ├── bin │ └── install-drupal ├── load-image.sh ├── parse-yaml.sh ├── save-image.sh └── vars │ └── docker-hub-overrides.yml ├── playbook.yml ├── requirements.yml ├── roles ├── arknoll.selenium │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE.txt │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── templates │ │ ├── selenium-init-Debian.j2 │ │ ├── selenium-init-RedHat.j2 │ │ └── selenium-unit.j2 │ ├── tests │ │ ├── README.md │ │ ├── requirements.yml │ │ └── test.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── drupalvm.hostname │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ └── tasks │ │ └── main.yml ├── drupalvm.vagrant-nfs-fix │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ └── templates │ │ ├── vagrant-nfs-fix.j2 │ │ └── vagrant-nfs-fix.unit.j2 ├── drupalvm.www │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ └── tasks │ │ └── main.yml ├── geerlingguy.adminer │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── requirements.yml │ │ │ └── standalone.yml │ ├── tasks │ │ └── main.yml │ └── templates │ │ └── adminer.conf.j2 ├── geerlingguy.apache-php-fpm │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ └── tests │ │ └── test.yml ├── geerlingguy.apache │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── configure-Debian.yml │ │ ├── configure-RedHat.yml │ │ ├── configure-Solaris.yml │ │ ├── configure-Suse.yml │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ ├── setup-RedHat.yml │ │ ├── setup-Solaris.yml │ │ └── setup-Suse.yml │ ├── templates │ │ └── vhosts.conf.j2 │ └── vars │ │ ├── AmazonLinux.yml │ │ ├── Debian.yml │ │ ├── RedHat.yml │ │ ├── Solaris.yml │ │ ├── Suse.yml │ │ ├── apache-22.yml │ │ └── apache-24.yml ├── geerlingguy.blackfire │ ├── .ansible-lint │ ├── .github │ │ └── FUNDING.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ └── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml ├── geerlingguy.composer │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ ├── tasks │ │ ├── global-require.yml │ │ ├── main.yml │ │ └── project-bin.yml │ └── templates │ │ ├── auth.json.j2 │ │ ├── composer-project.sh.j2 │ │ └── composer.sh.j2 ├── geerlingguy.daemonize │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ └── tasks │ │ └── main.yml ├── geerlingguy.drupal-console │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ └── tests │ │ ├── README.md │ │ ├── requirements.yml │ │ ├── test-self-update.yml │ │ └── test.yml ├── geerlingguy.drupal │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── deploy.yml │ │ │ ├── molecule.yml │ │ │ ├── requirements.yml │ │ │ ├── test-setup.yml │ │ │ └── test-vars.yml │ └── tasks │ │ ├── backwards-compatibility.yml │ │ ├── build-composer-project.yml │ │ ├── build-composer.yml │ │ ├── build-makefile.yml │ │ ├── deploy.yml │ │ ├── install-site.yml │ │ ├── main.yml │ │ └── update.yml ├── geerlingguy.drush │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── composer.yml │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── requirements.yml │ │ │ └── source.yml │ └── tasks │ │ ├── install-drush-composer.yml │ │ ├── install-drush-launcher.yml │ │ ├── install-source.yml │ │ └── main.yml ├── geerlingguy.elasticsearch │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ └── templates │ │ ├── elasticsearch.repo.j2 │ │ ├── elasticsearch.yml.j2 │ │ ├── heap.options.j2 │ │ └── jvm.options.j2 ├── geerlingguy.firewall │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── disable-other-firewalls.yml │ │ └── main.yml │ └── templates │ │ ├── firewall.bash.j2 │ │ ├── firewall.init.j2 │ │ └── firewall.unit.j2 ├── geerlingguy.git │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── playbook-source.yml │ ├── tasks │ │ ├── install-from-source.yml │ │ └── main.yml │ └── vars │ │ ├── Debian.yml │ │ ├── Fedora.yml │ │ ├── RedHat.yml │ │ └── main.yml ├── geerlingguy.java │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ ├── setup-FreeBSD.yml │ │ └── setup-RedHat.yml │ ├── templates │ │ └── java_home.sh.j2 │ └── vars │ │ ├── Debian-10.yml │ │ ├── Debian-8.yml │ │ ├── Debian-9.yml │ │ ├── Fedora.yml │ │ ├── FreeBSD.yml │ │ ├── RedHat-6.yml │ │ ├── RedHat-7.yml │ │ ├── RedHat-8.yml │ │ ├── Ubuntu-12.yml │ │ ├── Ubuntu-14.yml │ │ ├── Ubuntu-16.yml │ │ ├── Ubuntu-18.yml │ │ └── Ubuntu-20.yml ├── geerlingguy.mailhog │ ├── .ansible-lint │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── test-message │ │ │ └── yaml-lint.yml │ ├── tasks │ │ └── main.yml │ └── templates │ │ ├── mailhog.init.j2 │ │ └── mailhog.unit.j2 ├── geerlingguy.memcached │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ └── main.yml │ ├── templates │ │ ├── memcached-Debian.conf.j2 │ │ └── memcached-RedHat.conf.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.mysql │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── configure.yml │ │ ├── databases.yml │ │ ├── main.yml │ │ ├── replication.yml │ │ ├── secure-installation.yml │ │ ├── setup-Archlinux.yml │ │ ├── setup-Debian.yml │ │ ├── setup-RedHat.yml │ │ ├── users.yml │ │ └── variables.yml │ ├── templates │ │ ├── my.cnf.j2 │ │ ├── root-my.cnf.j2 │ │ └── user-my.cnf.j2 │ └── vars │ │ ├── Archlinux.yml │ │ ├── Debian-10.yml │ │ ├── Debian.yml │ │ ├── RedHat-7.yml │ │ └── RedHat-8.yml ├── geerlingguy.nginx │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Archlinux.yml │ │ ├── setup-Debian.yml │ │ ├── setup-FreeBSD.yml │ │ ├── setup-OpenBSD.yml │ │ ├── setup-RedHat.yml │ │ ├── setup-Ubuntu.yml │ │ └── vhosts.yml │ ├── templates │ │ ├── nginx.conf.j2 │ │ ├── nginx.repo.j2 │ │ └── vhost.j2 │ └── vars │ │ ├── Archlinux.yml │ │ ├── Debian.yml │ │ ├── FreeBSD.yml │ │ ├── OpenBSD.yml │ │ ├── RedHat.yml │ │ └── Rocky.yml ├── geerlingguy.nodejs │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── playbook-latest.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ └── templates │ │ └── npm.sh.j2 ├── geerlingguy.php-memcached │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── memcached-test.php │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── tests │ │ │ └── test_default.py │ │ │ └── yaml-lint.yml │ ├── tasks │ │ └── main.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-mysql │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ ├── tasks │ │ └── main.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-pecl │ ├── .ansible-lint │ ├── .github │ │ └── FUNDING.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── pecl-test.php │ │ │ └── requirements.yml │ ├── tasks │ │ └── main.yml │ └── vars │ │ ├── Debian-8.yml │ │ ├── Debian.yml │ │ ├── RedHat.yml │ │ └── Ubuntu.yml ├── geerlingguy.php-pgsql │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── tests │ │ │ └── test_default.py │ │ │ └── yaml-lint.yml │ ├── tasks │ │ └── main.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-redis │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── redis.ini │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── redis-test.php │ │ │ ├── requirements.yml │ │ │ └── yaml-lint.yml │ ├── tasks │ │ ├── install-from-source.yml │ │ └── main.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-tideways │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── tests │ │ │ └── test_default.py │ │ │ ├── tideways-test.php │ │ │ └── yaml-lint.yml │ ├── tasks │ │ ├── configure.yml │ │ ├── main.yml │ │ └── xhprof.yml │ ├── templates │ │ └── tideways.ini.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-versions │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── 7.3.yml │ │ │ ├── 8.0.yml │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-xdebug │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── xdebug-test.php │ │ │ └── yaml-lint.yml │ ├── tasks │ │ ├── configure.yml │ │ └── main.yml │ ├── templates │ │ └── xdebug.ini.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php-xhprof │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── molecule.yml │ │ │ ├── playbook.yml │ │ │ ├── requirements.yml │ │ │ ├── xhprof-test.php │ │ │ └── yaml-lint.yml │ ├── tasks │ │ ├── configure.yml │ │ └── main.yml │ ├── templates │ │ └── xhprof.ini.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.php │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── requirements.yml │ │ │ └── source-install.yml │ ├── tasks │ │ ├── configure-apcu.yml │ │ ├── configure-fpm.yml │ │ ├── configure-opcache.yml │ │ ├── configure.yml │ │ ├── install-from-source.yml │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ ├── templates │ │ ├── apc.ini.j2 │ │ ├── fpm-init.j2 │ │ ├── opcache.ini.j2 │ │ ├── php-fpm.conf.j2 │ │ ├── php.ini.j2 │ │ └── www.conf.j2 │ └── vars │ │ ├── Debian-10.yml │ │ ├── Debian-11.yml │ │ ├── Debian-9.yml │ │ ├── Debian.yml │ │ ├── RedHat.yml │ │ ├── Ubuntu-16.yml │ │ ├── Ubuntu-18.yml │ │ └── Ubuntu-20.yml ├── geerlingguy.postfix │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ └── tests │ │ ├── README.md │ │ └── test.yml ├── geerlingguy.postgresql │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── configure.yml │ │ ├── databases.yml │ │ ├── initialize.yml │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ ├── setup-RedHat.yml │ │ ├── users.yml │ │ ├── users_props.yml │ │ └── variables.yml │ ├── templates │ │ ├── pg_hba.conf.j2 │ │ └── postgres.sh.j2 │ └── vars │ │ ├── Debian-10.yml │ │ ├── Debian-7.yml │ │ ├── Debian-8.yml │ │ ├── Debian-9.yml │ │ ├── Fedora-29.yml │ │ ├── Fedora-30.yml │ │ ├── Fedora-31.yml │ │ ├── Fedora-32.yml │ │ ├── RedHat-7.yml │ │ ├── RedHat-8.yml │ │ ├── Ubuntu-16.yml │ │ ├── Ubuntu-18.yml │ │ └── Ubuntu-20.yml ├── geerlingguy.redis │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Archlinux.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ ├── templates │ │ └── redis.conf.j2 │ └── vars │ │ ├── Archlinux.yml │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.repo-epel │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ └── tasks │ │ └── main.yml ├── geerlingguy.repo-remi │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── requirements.yml │ └── tasks │ │ └── main.yml ├── geerlingguy.ruby │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── rubygems.sh │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ └── source-install.yml │ ├── tasks │ │ ├── install-from-source.yml │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.security │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ └── molecule.yml │ ├── tasks │ │ ├── autoupdate-Debian.yml │ │ ├── autoupdate-RedHat.yml │ │ ├── fail2ban.yml │ │ ├── main.yml │ │ └── ssh.yml │ ├── templates │ │ ├── 10periodic.j2 │ │ ├── 50unattended-upgrades.j2 │ │ └── jail.local.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── geerlingguy.solr │ ├── .ansible-lint │ ├── .github │ │ ├── FUNDING.yml │ │ ├── stale.yml │ │ └── workflows │ │ │ ├── ci.yml │ │ │ └── release.yml │ ├── .gitignore │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── requirements.yml │ │ │ ├── solr-3.yml │ │ │ ├── solr-4.yml │ │ │ ├── solr-5.yml │ │ │ ├── solr-6.yml │ │ │ └── solr-7.yml │ ├── tasks │ │ ├── configure.yml │ │ ├── cores.yml │ │ ├── install-pre5.yml │ │ ├── install.yml │ │ ├── main.yml │ │ ├── trim-fat.yml │ │ └── user.yml │ └── templates │ │ ├── solr-init-Debian-pre5.j2 │ │ ├── solr-init-RedHat-pre5.j2 │ │ └── solr-pre5.unit.j2 ├── geerlingguy.varnish │ ├── .github │ │ ├── FUNDING.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .travis.yml │ ├── .yamllint │ ├── LICENSE │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── molecule │ │ └── default │ │ │ ├── converge.yml │ │ │ ├── molecule.yml │ │ │ ├── playbook-41.yml │ │ │ └── playbook-setup.yml │ ├── tasks │ │ ├── main.yml │ │ ├── setup-Debian.yml │ │ └── setup-RedHat.yml │ ├── templates │ │ ├── default.vcl.j2 │ │ ├── secret.j2 │ │ ├── varnish.j2 │ │ ├── varnish.params.j2 │ │ └── varnish.service.j2 │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml ├── thom8.php-upload-progress │ ├── .travis.yml │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── templates │ │ └── uploadprogress.ini.j2 │ ├── tests │ │ ├── Dockerfile.centos-7 │ │ ├── Dockerfile.ubuntu-12.04 │ │ ├── Dockerfile.ubuntu-14.04 │ │ ├── inventory │ │ ├── test-source.yml │ │ └── uploadprogress-test.php │ └── vars │ │ ├── Debian.yml │ │ └── RedHat.yml └── weareinteractive.newrelic │ ├── .ansible-lint │ ├── .clog.toml │ ├── .editorconfig │ ├── .gitignore │ ├── .travis.yml │ ├── CHANGELOG.md │ ├── LICENSE │ ├── Makefile │ ├── README.md │ ├── defaults │ └── main.yml │ ├── handlers │ └── main.yml │ ├── meta │ ├── main.yml │ └── readme.yml │ ├── tasks │ ├── config.yml │ ├── install.yml │ ├── install_debian.yml │ ├── install_redhat.yml │ ├── main.yml │ └── service.yml │ ├── templates │ └── etc │ │ └── newrelic │ │ └── nrsysmond.cfg.j2 │ └── tests │ └── main.yml ├── tasks ├── app-toggles.yml ├── apparmor.yml ├── backwards-compatibility.yml ├── config.yml ├── cron.yml ├── dashboard.yml ├── drush-aliases.yml ├── extras.yml ├── init-Debian.yml ├── init-RedHat.yml ├── php.yml └── sshd.yml ├── templates ├── dashboard.html.j2 ├── drupalvm-local.aliases.drushrc.php.j2 ├── drupalvm-local.aliases.yml.j2 ├── drupalvm.aliases.drushrc.php.j2 ├── drupalvm.aliases.yml.j2 ├── drupalvm.vcl.j2 ├── drush.yml ├── nginx-vhost.conf.j2 └── server-info.php.j2 └── vars ├── Debian.yml ├── RedHat.yml └── main.yml /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS-specific files. 2 | .DS_Store 3 | 4 | # Editor and language files. 5 | .idea/ 6 | .project/ 7 | .bundle/ 8 | 9 | # Ansible files. 10 | *.retry 11 | .galaxy_install_info 12 | 13 | # Vagrant files. 14 | .vagrant/ 15 | vagrant_ansible_inventory_default 16 | 17 | # Drupal VM specific files. 18 | drupal.composer.json 19 | local.config.yml 20 | Vagrantfile.local 21 | /config.yml 22 | /docker-compose.yml 23 | /drupal.make.yml 24 | /scripts/ 25 | /drupal/ 26 | -------------------------------------------------------------------------------- /.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 200 7 | level: warning 8 | truthy: 9 | allowed-values: ['true', 'false', 'yes', 'no'] 10 | braces: 11 | min-spaces-inside: 1 12 | max-spaces-inside: 1 13 | min-spaces-inside-empty: -1 14 | max-spaces-inside-empty: -1 15 | 16 | ignore: | 17 | */stale.yml 18 | provisioning/roles/ 19 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM geerlingguy/docker-debian10-ansible:latest 2 | LABEL maintainer="Jeff Geerling" 3 | 4 | # Copy provisioning directory, variable overrides, and scripts into container. 5 | COPY ./ /etc/ansible/drupal-vm 6 | COPY ./provisioning/docker/vars/docker-hub-overrides.yml /etc/ansible/drupal-vm/local.config.yml 7 | COPY ./provisioning/docker/bin/* /usr/local/bin 8 | 9 | # Provision Drupal VM inside Docker. 10 | RUN ansible-playbook /etc/ansible/drupal-vm/provisioning/playbook.yml \ 11 | -e "ansible_python_interpreter=/usr/bin/python3" \ 12 | # Enable FPM. See https://github.com/geerlingguy/drupal-vm/issues/1366. 13 | && systemctl enable php7.4-fpm.service 14 | 15 | EXPOSE 80 443 3306 8025 16 | 17 | CMD ["/lib/systemd/systemd"] 18 | -------------------------------------------------------------------------------- /docs/configurations/databases-postgresql.md: -------------------------------------------------------------------------------- 1 | Since Drupal VM is built in a modular fashion, you can swap out the database engine and use [PostgreSQL](https://www.postgresql.org/) instead of MySQL (as long as the version of Drupal you're using supports it!). 2 | 3 | To switch from MySQL to PostgreSQL, switch the `drupal_db_backend` setting in your local `config.yml` to `pgsql`: 4 | 5 | ```yaml 6 | drupal_db_backend: pgsql 7 | ``` 8 | 9 | For more PostgreSQL configuration options, see the [`geerlingguy.postgresql` Ansible role's README](https://github.com/geerlingguy/ansible-role-postgresql#readme). 10 | -------------------------------------------------------------------------------- /docs/extras/adminer.md: -------------------------------------------------------------------------------- 1 | If you have `adminer` listed as one of the `installed_extras` inside `config.yml`, you can use Adminer's web-based interface to interact with databases. With Drupal VM running, visit [http://adminer.drupalvm.test/](http://adminer.drupalvm.test/), and log in with `drupal` as the username and the password you set in `config.yml` (`drupal_db_password`). Leave the "Server" field blank. The "Database" field is optional. 2 | 3 | For a list of available role variables, see the [`geerlingguy.adminer` Ansible role's README](https://github.com/geerlingguy/ansible-role-adminer#readme). 4 | -------------------------------------------------------------------------------- /docs/extras/java.md: -------------------------------------------------------------------------------- 1 | Java will automatically be installed if you enabled any of the `installed_extras` that depend on it. 2 | If you have any other use case for installing it, just make sure `java` is in the list of `installed_extras` in your `config.yml`. 3 | 4 | For a list of available role variables, see the [`geerlingguy.java` Ansible role's README](https://github.com/geerlingguy/ansible-role-java#readme). 5 | -------------------------------------------------------------------------------- /docs/extras/ruby.md: -------------------------------------------------------------------------------- 1 | Ruby is used for many different purposes, but with Drupal, it is most often used as part of a toolset for Front End development or certain CI tasks. 2 | 3 | Drupal VM includes built-in support for Ruby—all you need to do is make sure `ruby` is listed in the list of `installed_extras` inside `config.yml` before your provision Drupal VM. 4 | 5 | ## Installing gems 6 | 7 | To install ruby gems, you can add them to the list of `ruby_install_gems` in `config.yml`. 8 | 9 | ```yaml 10 | ruby_install_gems: 11 | - sass 12 | - compass 13 | ``` 14 | 15 | For a list of available role variables, see the [`geerlingguy.ruby` Ansible role's README](https://github.com/geerlingguy/ansible-role-ruby#readme). 16 | -------------------------------------------------------------------------------- /docs/extras/upload-progress.md: -------------------------------------------------------------------------------- 1 | To enable the Upload progress PHP extension make sure `upload-progress` is listed in the list of `installed_extras` inside `config.yml` before your provision Drupal VM. 2 | 3 | For a list of available role variables, see the [`thom8.php-upload-progress` Ansible role's README](https://github.com/thom8/ansible-role-php-upload-progress#readme). 4 | -------------------------------------------------------------------------------- /docs/getting-started/installation-macos.md: -------------------------------------------------------------------------------- 1 | Please read through the [Quick Start Guide](https://github.com/geerlingguy/drupal-vm#quick-start-guide) to get started. 2 | 3 | 4 | 5 | _In this quick overview, Jeff Geerling will show you where you can learn more about Drupal VM, then show you a simple Drupal VM setup._ 6 | 7 | ## NFS Timeout on Big Sur 8 | 9 | If you are using NFS shares on macOS Big Sur, and you have problems with the NFS mount going away, please set `vagrant_nfs_fix_enabled: true` in your `config.yml`. 10 | -------------------------------------------------------------------------------- /docs/images/drupal-vm-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/drupal-vm/07289c8bf823604f8977bd4af0085a769f8db58f/docs/images/drupal-vm-logo.png -------------------------------------------------------------------------------- /docs/other/acquia.md: -------------------------------------------------------------------------------- 1 | To emulate the default Acquia Cloud environment with Drupal VM you should create a `config.yml` and override a few defaults from `default.config.yml`. For an up-to-date example, use [BLT's `config.yml`](https://github.com/acquia/blt/blob/9.x/scripts/drupal-vm/config.yml). Some of the variables in the BLT example are customized for BLT and you should be looking specifically at `vagrant_box`, `php_version`, and `php_packages_extra`. 2 | -------------------------------------------------------------------------------- /docs/other/drupal-6.md: -------------------------------------------------------------------------------- 1 | If you'd like to use the included configuration and Drush make file to install a Drupal 6 site using an older version of Drush (< 7.x), you may need to make some changes, namely: 2 | 3 | 1. Drush < 7.x does not support .yml makefiles; if using Drush 5.x or 6.x, you will need to create the make file in the INI-style format. 4 | 2. In your customized `config.yml` file, you will need to use the `default` installation profile instead of `standard` (for the `drupal_install_profile` variable). 5 | -------------------------------------------------------------------------------- /example.drupal.make.yml: -------------------------------------------------------------------------------- 1 | --- 2 | api: 2 3 | 4 | # Basic Drush Make file for Drupal. Be sure to update the drupal_major_version 5 | # variable inside config.yml if you change the major version in this file. 6 | 7 | # Drupal core (major version, e.g. 6.x, 7.x, 8.x). 8 | core: "8.x" 9 | 10 | projects: 11 | 12 | # Core. 13 | drupal: 14 | version: "8.4.0" 15 | # Use this if you need a working git repository of Drupal core instead of 16 | # the latest stable. 17 | # type: "core" 18 | # download: 19 | # # Drupal core branch (e.g. "6.x", "7.x", "8.3.x", "8.5.x"). 20 | # branch: "8.4.x" 21 | # working-copy: true 22 | 23 | # Other modules. 24 | devel: "1.x-dev" 25 | -------------------------------------------------------------------------------- /molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu1804}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /molecule/default/ubuntu1804-php74.config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | php_version: "7.4" 3 | php_sendmail_path: "/usr/sbin/sendmail -t -i" 4 | installed_extras: [] 5 | -------------------------------------------------------------------------------- /molecule/default/ubuntu1804-postgresql.config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | drupal_db_backend: pgsql 3 | php_sendmail_path: "/usr/sbin/sendmail -t -i" 4 | installed_extras: [] 5 | -------------------------------------------------------------------------------- /provisioning/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | roles_path = ./roles 3 | 4 | [ssh_connection] 5 | pipelining = True 6 | control_path = /tmp/ansible-ssh-%%h-%%p-%%r 7 | -------------------------------------------------------------------------------- /provisioning/docker/parse-yaml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Parse a YAML file. 4 | # 5 | # Usage: 6 | # parse_yaml [file-path] [variable-to-retrieve] 7 | # 8 | # Requires ruby. 9 | # @see https://coderwall.com/p/bm_tpa/reading-yaml-files-in-bash-with-ruby 10 | # @todo Consider using PHP so user doesn't need to install Ruby. 11 | 12 | function parse_yaml { 13 | ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@" 14 | } 15 | -------------------------------------------------------------------------------- /provisioning/docker/vars/docker-hub-overrides.yml: -------------------------------------------------------------------------------- 1 | --- 2 | hostname_configure: false 3 | firewall_enabled: false 4 | installed_extras: 5 | - adminer 6 | - drush 7 | - mailhog 8 | # - varnish 9 | 10 | # Don't build or install Drupal inside the container. 11 | drupal_build_makefile: false 12 | drupal_build_composer: false 13 | drupal_build_composer_project: false 14 | drupal_install_site: false 15 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/.gitignore: -------------------------------------------------------------------------------- 1 | # OS generated files # 2 | ###################### 3 | .DS_Store 4 | .DS_Store? 5 | ._* 6 | .Spotlight-V100 7 | .Trashes 8 | Icon? 9 | ehthumbs.db 10 | Thumbs.db 11 | 12 | # IDE files # 13 | ################# 14 | /.settings 15 | /.buildpath 16 | /.project 17 | /nbproject 18 | *.komodoproject 19 | *.kpf 20 | /.idea 21 | 22 | # Other files # 23 | ############### 24 | !empty 25 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: docker 3 | 4 | env: 5 | - distro: centos7 6 | - distro: centos6 7 | - distro: ubuntu1604 8 | - distro: debian8 9 | - distro: ubuntu1404 10 | - distro: ubuntu1204 11 | 12 | script: 13 | # Download test shim. 14 | - wget -O ${PWD}/tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/ 15 | - chmod +x ${PWD}/tests/test.sh 16 | 17 | # Run tests. 18 | - ${PWD}/tests/test.sh 19 | 20 | notifications: 21 | email: false 22 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 23 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) Alex Knoll 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for selenium 3 | selenium_install_dir: /opt 4 | selenium_version: "2.53.0" 5 | selenium_install_firefox: no 6 | selenium_install_chrome: yes 7 | selenium_display_id: "1" 8 | selenium_port: 4444 9 | selenium_xvfb_args: "--server-args='-screen 0, 1920x1080x24'" 10 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for selenium 3 | - name: restart selenium 4 | service: name=selenium state=restarted 5 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # meta file for selenium 3 | galaxy_info: 4 | author: Alex Knoll 5 | description: Set up selenium and Firefox for running selenium tests. 6 | license: Apache V2 7 | min_ansible_version: 2.0 8 | platforms: 9 | - name: EL 10 | versions: 11 | - 6 12 | - 7 13 | - name: Ubuntu 14 | versions: 15 | - all 16 | - name: Debian 17 | versions: 18 | - all 19 | categories: 20 | - web 21 | dependencies: [] 22 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/templates/selenium-unit.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=selenium test framework 3 | After=syslog.target network.target 4 | 5 | [Service] 6 | ExecStart=/usr/bin/xvfb-run {{ selenium_xvfb_args }} /usr/bin/java -client -jar {{ selenium_install_dir }}/selenium/selenium-server-standalone-{{ selenium_version }}.jar 7 | Restart=on-failure 8 | RestartSec=20s 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/tests/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Role tests 2 | 3 | To run the test playbook(s) in this directory: 4 | 5 | 1. Install and start Docker. 6 | 1. Download the test shim (see .travis.yml file for the URL) into `tests/test.sh`: 7 | - `wget -O tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/` 8 | 1. Make the test shim executable: `chmod +x tests/test.sh`. 9 | 1. Run (from the role root directory) `distro=[distro] playbook=[playbook] ./tests/test.sh` 10 | 11 | If you don't want the container to be automatically deleted after the test playbook is run, add the following environment variables: `cleanup=false container_id=$(date +%s)` 12 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/tests/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.java 3 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Test file for selenium 3 | - hosts: all 4 | 5 | pre_tasks: 6 | - name: Update apt cache. 7 | apt: update_cache=yes cache_valid_time=3600 8 | when: ansible_os_family == 'Debian' 9 | 10 | - name: Don't install Chrome on old OSes. 11 | set_fact: 12 | selenium_install_firefox: yes 13 | selenium_install_chrome: no 14 | when: > 15 | (ansible_distribution == 'Ubuntu' and ansible_distribution_version == '12.04') 16 | or (ansible_os_family == 'RedHat' and ansible_distribution_version.split('.')[0] == '6') 17 | 18 | roles: 19 | - geerlingguy.java 20 | - role_under_test 21 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | selenium_xvfb_package: xvfb 3 | -------------------------------------------------------------------------------- /provisioning/roles/arknoll.selenium/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | selenium_xvfb_package: xorg-x11-server-Xvfb 3 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.hostname/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | hostname_fqdn: "{{ inventory_hostname }}" 3 | hostname_short: "{{ hostname_fqdn|regex_replace('^([^.]+).*$', '\\1') }}" 4 | 5 | hostname_unsafe_writes: "{{ (ansible_virtualization_type == 'docker')|ternary('yes', 'no')|bool }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.hostname/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Jeff Geerling 4 | description: A role to set the hostname and FQDN on Drupal VM. 5 | company: Midwestern Mac, LLC 6 | issue_tracker_url: https://github.com/geerlingguy/drupal-vm/issues 7 | license: MIT 8 | min_ansible_version: 2.2 9 | 10 | platforms: 11 | - name: EL 12 | versions: 13 | - all 14 | - name: Debian 15 | versions: 16 | - all 17 | - name: Ubuntu 18 | versions: 19 | - all 20 | 21 | galaxy_tags: 22 | - drupal 23 | - vm 24 | - hostname 25 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.vagrant-nfs-fix/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | vagrant_nfs_fix_keepalive_file: "/vagrant/.vagrant-nfs-fix-keepalive.tmp" 3 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.vagrant-nfs-fix/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Copy Vagrant NFS fix script into place. 3 | template: 4 | src: vagrant-nfs-fix.j2 5 | dest: /usr/sbin/vagrant-nfs-fix 6 | owner: root 7 | group: root 8 | mode: 0755 9 | 10 | - name: Copy Vagrant NFS fix systemd unit file into place. 11 | template: 12 | src: vagrant-nfs-fix.unit.j2 13 | dest: /etc/systemd/system/vagrant-nfs-fix.service 14 | owner: root 15 | group: root 16 | mode: 0644 17 | 18 | - name: Configure the NFS fix service. 19 | service: 20 | name: vagrant-nfs-fix 21 | state: started 22 | enabled: true 23 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.vagrant-nfs-fix/templates/vagrant-nfs-fix.j2: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | while true; do 4 | touch {{ vagrant_nfs_fix_keepalive_file }} 5 | sleep 1 6 | rm {{ vagrant_nfs_fix_keepalive_file }} 7 | sleep 30 8 | done 9 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.vagrant-nfs-fix/templates/vagrant-nfs-fix.unit.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Workaround for vagrant NFS inactivity bug 3 | StartLimitIntervalSec=0 4 | 5 | [Service] 6 | Type=simple 7 | Restart=always 8 | RestartSec=1 9 | ExecStart=/usr/sbin/vagrant-nfs-fix 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /provisioning/roles/drupalvm.www/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | drupalvm_webserver: apache 3 | vagrant_user: vagrant 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | adminer_download_url: https://www.adminer.org/latest.php 3 | adminer_install_dir: /opt/adminer 4 | adminer_install_filename: adminer.php 5 | adminer_symlink_dirs: [] 6 | adminer_add_apache_config: false 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | adminer_add_apache_config: true 8 | 9 | pre_tasks: 10 | - name: Update apt cache. 11 | apt: update_cache=yes cache_valid_time=600 12 | when: ansible_os_family == 'Debian' 13 | changed_when: false 14 | 15 | roles: 16 | - role: geerlingguy.apache 17 | - role: geerlingguy.adminer 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.apache 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/molecule/default/standalone.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | adminer_install_dir: /opt/adminer 8 | adminer_add_apache_config: false 9 | 10 | pre_tasks: 11 | - name: Update apt cache. 12 | apt: update_cache=yes cache_valid_time=600 13 | when: ansible_os_family == 'Debian' 14 | changed_when: false 15 | 16 | roles: 17 | - role: geerlingguy.adminer 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.adminer/templates/adminer.conf.j2: -------------------------------------------------------------------------------- 1 | Alias /adminer "{{ adminer_install_dir }}/adminer.php" 2 | 3 | {% if apache_vhosts_version == "2.2" %} 4 | Order allow,deny 5 | Allow from all 6 | {% else %} 7 | Require all granted 8 | {% endif %} 9 | 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache-php-fpm/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - geerlingguy.apache 4 | 5 | galaxy_info: 6 | author: geerlingguy 7 | description: Apache 2.4+ PHP-FPM support for Linux. 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.0 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 6 15 | - 7 16 | - name: Debian 17 | versions: 18 | - wheezy 19 | - jessie 20 | - stretch 21 | - name: Ubuntu 22 | versions: 23 | - precise 24 | - trusty 25 | - xenial 26 | galaxy_tags: 27 | - web 28 | - apache 29 | - php 30 | - cgi 31 | - php-fpm 32 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache-php-fpm/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # For RedHat/CentOS, see notes in README. 3 | - name: Enable mod_proxy_fcgi. 4 | file: 5 | src: "{{ apache_server_root }}/mods-available/{{ item }}" 6 | dest: "{{ apache_server_root }}/mods-enabled/{{ item }}" 7 | state: link 8 | with_items: 9 | - proxy.load 10 | - proxy_fcgi.load 11 | notify: restart apache 12 | when: ansible_os_family == 'Debian' 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart apache 3 | service: 4 | name: "{{ apache_service }}" 5 | state: "{{ apache_restart_state }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | apache_listen_port_ssl: 443 8 | apache_create_vhosts: true 9 | apache_vhosts_filename: "vhosts.conf" 10 | apache_vhosts: 11 | - servername: "example.com" 12 | documentroot: "/var/www/vhosts/example_com" 13 | 14 | pre_tasks: 15 | - name: Update apt cache. 16 | apt: update_cache=yes cache_valid_time=600 17 | when: ansible_os_family == 'Debian' 18 | changed_when: false 19 | 20 | roles: 21 | - role: geerlingguy.apache 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/tasks/configure-Solaris.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Configure Apache. 3 | lineinfile: 4 | dest: "{{ apache_server_root }}/{{ apache_daemon }}.conf" 5 | regexp: "{{ item.regexp }}" 6 | line: "{{ item.line }}" 7 | state: present 8 | mode: 0644 9 | with_items: "{{ apache_ports_configuration_items }}" 10 | notify: restart apache 11 | 12 | - name: Add apache vhosts configuration. 13 | template: 14 | src: "{{ apache_vhosts_template }}" 15 | dest: "{{ apache_conf_path }}/{{ apache_vhosts_filename }}" 16 | owner: root 17 | group: root 18 | mode: 0644 19 | notify: restart apache 20 | when: apache_create_vhosts | bool 21 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=3600 4 | 5 | - name: Ensure Apache is installed on Debian. 6 | apt: "name={{ apache_packages }} state={{ apache_packages_state }}" 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure Apache is installed on RHEL. 3 | package: 4 | name: "{{ apache_packages }}" 5 | state: "{{ apache_packages_state }}" 6 | enablerepo: "{{ apache_enablerepo | default(omit, true) }}" 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/tasks/setup-Solaris.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure Apache is installed on Solaris. 3 | pkg5: 4 | name: "{{ apache_packages }}" 5 | state: "{{ apache_packages_state }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/tasks/setup-Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure Apache is installed on Suse. 3 | zypper: 4 | name: "{{ apache_packages }}" 5 | state: "{{ apache_packages_state }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/AmazonLinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_service: httpd 3 | apache_daemon: httpd 4 | apache_daemon_path: /usr/sbin/ 5 | apache_server_root: /etc/httpd 6 | apache_conf_path: /etc/httpd/conf.d 7 | 8 | apache_vhosts_version: "2.4" 9 | 10 | __apache_packages: 11 | - httpd24 12 | - httpd24-devel 13 | - mod24_ssl 14 | - openssh 15 | 16 | apache_ports_configuration_items: 17 | - regexp: "^Listen " 18 | line: "Listen {{ apache_listen_port }}" 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_service: apache2 3 | apache_daemon: apache2 4 | apache_daemon_path: /usr/sbin/ 5 | apache_server_root: /etc/apache2 6 | apache_conf_path: /etc/apache2 7 | 8 | __apache_packages: 9 | - apache2 10 | - apache2-utils 11 | 12 | apache_ports_configuration_items: 13 | - regexp: "^Listen " 14 | line: "Listen {{ apache_listen_port }}" 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_service: httpd 3 | apache_daemon: httpd 4 | apache_daemon_path: /usr/sbin/ 5 | apache_server_root: /etc/httpd 6 | apache_conf_path: /etc/httpd/conf.d 7 | 8 | apache_vhosts_version: "2.2" 9 | 10 | __apache_packages: 11 | - httpd 12 | - httpd-devel 13 | - mod_ssl 14 | - openssh 15 | 16 | apache_ports_configuration_items: 17 | - regexp: "^Listen " 18 | line: "Listen {{ apache_listen_port }}" 19 | - regexp: "^#?NameVirtualHost " 20 | line: "NameVirtualHost {{ apache_listen_ip }}:{{ apache_listen_port }}" 21 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/Solaris.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_service: apache24 3 | apache_daemon: httpd 4 | apache_daemon_path: /usr/apache2/2.4/bin/ 5 | apache_server_root: /etc/apache2/2.4/ 6 | apache_conf_path: /etc/apache2/2.4/conf.d 7 | 8 | apache_vhosts_version: "2.2" 9 | 10 | __apache_packages: 11 | - web/server/apache-24 12 | - web/server/apache-24/module/apache-ssl 13 | - web/server/apache-24/module/apache-security 14 | 15 | apache_ports_configuration_items: 16 | - regexp: "^Listen " 17 | line: "Listen {{ apache_listen_port }}" 18 | - regexp: "^#?NameVirtualHost " 19 | line: "NameVirtualHost {{ apache_listen_ip }}:{{ apache_listen_port }}" 20 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/Suse.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_service: apache2 3 | apache_daemon: httpd2 4 | apache_daemon_path: /usr/sbin/ 5 | apache_server_root: /etc/apache2 6 | apache_conf_path: /etc/apache2/conf.d 7 | 8 | apache_vhosts_version: "2.2" 9 | 10 | __apache_packages: 11 | - apache2 12 | - openssh 13 | 14 | apache_ports_configuration_items: 15 | - regexp: "^Listen " 16 | line: "Listen {{ apache_listen_port }}" 17 | - regexp: "^#?NameVirtualHost " 18 | line: "NameVirtualHost {{ apache_listen_ip }}:{{ apache_listen_port }}" 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/apache-22.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_vhosts_version: "2.2" 3 | apache_default_vhost_filename: 000-default 4 | apache_ports_configuration_items: 5 | - { 6 | regexp: "^Listen ", 7 | line: "Listen {{ apache_listen_port }}" 8 | } 9 | - { 10 | regexp: "^#?NameVirtualHost ", 11 | line: "NameVirtualHost {{ apache_listen_ip }}:{{ apache_listen_port }}" 12 | } 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.apache/vars/apache-24.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apache_vhosts_version: "2.4" 3 | apache_default_vhost_filename: 000-default.conf 4 | apache_ports_configuration_items: 5 | - { 6 | regexp: "^Listen ", 7 | line: "Listen {{ apache_listen_port }}" 8 | } 9 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '503' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | services: docker 4 | 5 | env: 6 | global: 7 | - ROLE_NAME: blackfire 8 | matrix: 9 | - MOLECULE_DISTRO: centos7 10 | - MOLECULE_DISTRO: ubuntu1804 11 | - MOLECULE_DISTRO: debian9 12 | 13 | install: 14 | # Install test dependencies. 15 | - pip install molecule yamllint ansible-lint docker 16 | 17 | before_script: 18 | # Use actual Ansible Galaxy role name for the project directory. 19 | - cd ../ 20 | - mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME 21 | - cd geerlingguy.$ROLE_NAME 22 | 23 | script: 24 | # Run tests. 25 | - molecule test 26 | 27 | notifications: 28 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 29 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | blackfire_packages: 3 | - blackfire-agent 4 | - blackfire-php 5 | 6 | blackfire_gpg_key_url: https://packages.blackfire.io/gpg.key 7 | blackfire_repo_url: http://packages.blackfire.io/fedora/blackfire.repo 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - geerlingguy.php 4 | 5 | galaxy_info: 6 | author: geerlingguy 7 | description: Blackfire installation for Linux 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 6 15 | - 7 16 | - name: Debian 17 | versions: 18 | - all 19 | - name: Ubuntu 20 | versions: 21 | - precise 22 | - raring 23 | - saucy 24 | - trusty 25 | - xenial 26 | - bionic 27 | galaxy_tags: 28 | - development 29 | - web 30 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | yamllint . 8 | ansible-lint 9 | platforms: 10 | - name: instance 11 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 12 | command: ${MOLECULE_DOCKER_COMMAND:-""} 13 | volumes: 14 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 15 | privileged: true 16 | pre_build_image: true 17 | provisioner: 18 | name: ansible 19 | playbooks: 20 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 21 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.php 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include_tasks: setup-RedHat.yml 3 | when: ansible_os_family == 'RedHat' 4 | 5 | - include_tasks: setup-Debian.yml 6 | when: ansible_os_family == 'Debian' 7 | 8 | - name: Ensure Blackfire packages are installed. 9 | package: 10 | name: "{{ blackfire_packages }}" 11 | state: present 12 | notify: 13 | - restart webserver 14 | - restart php-fpm 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure dirmngr is installed (gnupg dependency). 3 | apt: 4 | name: dirmngr 5 | state: present 6 | 7 | - name: Add packagecloud apt key. 8 | apt_key: 9 | url: "{{ blackfire_gpg_key_url }}" 10 | state: present 11 | 12 | - name: Add packagecloud repository. 13 | apt_repository: 14 | repo: "{{ item }}" 15 | state: present 16 | register: packagecloud_repos 17 | with_items: 18 | - "deb http://packages.blackfire.io/debian any main" 19 | 20 | - name: Update apt caches after repo is added. 21 | apt: update_cache=yes 22 | when: packagecloud_repos.changed 23 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.blackfire/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Check if Blackfire repository file exists. 3 | stat: path=/etc/yum.repos.d/blackfire.repo 4 | register: repo_file_stat 5 | 6 | - name: Add Blackfire repository. 7 | get_url: 8 | url: "{{ blackfire_repo_url }}" 9 | dest: /etc/yum.repos.d/blackfire.repo 10 | mode: 0644 11 | when: not repo_file_stat.stat.exists 12 | 13 | - name: Disable gpg_repocheck for non-bleeding-edge CentOS. 14 | lineinfile: 15 | dest: /etc/yum.repos.d/blackfire.repo 16 | regexp: "^repo_gpgcheck=" 17 | line: "repo_gpgcheck=0" 18 | state: present 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '106' 3 | - '204' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 140 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.ci 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.repo-remi 3 | - src: geerlingguy.repo-dotdeb 4 | - src: geerlingguy.git 5 | - src: geerlingguy.php 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/tasks/project-bin.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Add composer_project_path bin directory to global $PATH. 3 | template: 4 | src: composer-project.sh.j2 5 | dest: /etc/profile.d/composer-project.sh 6 | mode: 0644 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/templates/auth.json.j2: -------------------------------------------------------------------------------- 1 | { 2 | "github-oauth": { 3 | "github.com": "{{ composer_github_oauth_token }}" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/templates/composer-project.sh.j2: -------------------------------------------------------------------------------- 1 | export PATH={{ composer_project_path }}:$PATH 2 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.composer/templates/composer.sh.j2: -------------------------------------------------------------------------------- 1 | export PATH=$PATH:{{ composer_home_path }}/vendor/bin 2 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '106' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | workspace: /root 3 | 4 | daemonize_version: 1.7.7 5 | daemonize_install_path: "/usr" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: daemonize 6 | author: geerlingguy 7 | description: "Daemonize for Unix-like operating systems" 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.0 11 | platforms: 12 | - name: EL 13 | versions: 14 | - all 15 | - name: Ubuntu 16 | versions: 17 | - all 18 | - name: Debian 19 | versions: 20 | - all 21 | - name: GenericUNIX 22 | versions: 23 | - all 24 | - any 25 | galaxy_tags: 26 | - development 27 | - web 28 | - system 29 | - mail 30 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.daemonize/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | tests/test.sh 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | drupal_console_path: /usr/local/bin/drupal 3 | drupal_console_keep_updated: false 4 | drupal_console_config: ~/.console 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/tests/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Role tests 2 | 3 | To run the test playbook(s) in this directory: 4 | 5 | 1. Install and start Docker. 6 | 1. Download the test shim (see .travis.yml file for the URL) into `tests/test.sh`: 7 | - `wget -O tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/` 8 | 1. Make the test shim executable: `chmod +x tests/test.sh`. 9 | 1. Run (from the role root directory) `distro=[distro] playbook=[playbook] ./tests/test.sh` 10 | 11 | If you don't want the container to be automatically deleted after the test playbook is run, add the following environment variables: `cleanup=false container_id=$(date +%s)` 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/tests/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.php 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/tests/test-self-update.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: all 3 | 4 | vars: 5 | php_enable_webserver: false 6 | drupal_console_keep_updated: true 7 | 8 | pre_tasks: 9 | - name: Update apt cache. 10 | apt: update_cache=yes cache_valid_time=600 11 | when: ansible_os_family == 'Debian' 12 | changed_when: false 13 | 14 | roles: 15 | - geerlingguy.php 16 | - role_under_test 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal-console/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: all 3 | 4 | vars: 5 | php_enable_webserver: false 6 | 7 | pre_tasks: 8 | - name: Update apt cache. 9 | apt: update_cache=yes cache_valid_time=600 10 | when: ansible_os_family == 'Debian' 11 | changed_when: false 12 | 13 | - name: Add repository for PHP 7.0 (Ubuntu). 14 | apt_repository: repo='ppa:ondrej/php' 15 | when: ansible_distribution == "Ubuntu" and ansible_distribution_version != "16.04" 16 | 17 | roles: 18 | - geerlingguy.php 19 | - role_under_test 20 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'no-handler' 4 | - 'role-name' 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 160 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: clear opcache 3 | shell: > 4 | cd {{ drupal_core_path }} && 5 | {{ drush_path }} eval "if (function_exists('apc_clear_cache')) { apc_clear_cache(); }; if (function_exists('opcache_reset')) { opcache_reset(); }" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: drupal 6 | author: geerlingguy 7 | description: Deploy or install Drupal on your servers. 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - all 15 | - name: Ubuntu 16 | versions: 17 | - all 18 | - name: Debian 19 | versions: 20 | - all 21 | galaxy_tags: 22 | - development 23 | - web 24 | - drupal 25 | - cms 26 | - php 27 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.repo-remi 3 | - src: geerlingguy.repo-dotdeb 4 | - src: geerlingguy.apache 5 | - src: geerlingguy.apache-php-fpm 6 | - src: geerlingguy.nginx 7 | - src: geerlingguy.mysql 8 | - src: geerlingguy.postgresql 9 | - src: geerlingguy.php-versions 10 | - src: geerlingguy.php 11 | - src: geerlingguy.php-mysql 12 | - src: geerlingguy.php-pgsql 13 | - src: geerlingguy.git 14 | - src: geerlingguy.composer 15 | - src: geerlingguy.drush 16 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/molecule/default/test-setup.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=600 4 | when: ansible_os_family == 'Debian' 5 | 6 | - name: Install dependencies. 7 | package: 8 | name: 9 | - curl 10 | - unzip 11 | - sendmail 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drupal/tasks/update.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Run database updates. 3 | command: "{{ drush_path }} updatedb -y" 4 | args: 5 | chdir: "{{ drupal_core_path }}" 6 | register: drush_database_updates 7 | changed_when: "'No database updates required.' not in drush_database_updates.stdout" 8 | 9 | # TODO: Import configuration if configured? 10 | # TODO: Other commands if configured? 11 | 12 | - name: Rebuild Drupal caches. 13 | command: "{{ drush_path }} cache-rebuild --quiet" 14 | args: 15 | chdir: "{{ drupal_core_path }}" 16 | tags: ['skip_ansible_lint'] 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '503' 3 | - '106' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | php_enable_webserver: false 8 | php_opcache_enable: "0" 9 | 10 | pre_tasks: 11 | - name: Update apt cache. 12 | apt: update_cache=true cache_valid_time=600 13 | when: ansible_os_family == 'Debian' 14 | 15 | - name: Ensure unzip is installed. 16 | package: name=unzip state=present 17 | 18 | roles: 19 | - role: geerlingguy.repo-remi 20 | when: ansible_os_family == 'RedHat' 21 | - role: geerlingguy.php-versions 22 | - role: geerlingguy.php 23 | - role: geerlingguy.composer 24 | - role: geerlingguy.drush 25 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.repo-remi 3 | - src: geerlingguy.php-versions 4 | - src: geerlingguy.php 5 | - src: geerlingguy.composer 6 | - src: geerlingguy.git 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.drush/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - include_tasks: install-drush-launcher.yml 3 | when: drush_launcher_install 4 | 5 | - include_tasks: install-drush-composer.yml 6 | when: drush_composer_global_install 7 | 8 | - include_tasks: install-source.yml 9 | when: drush_install_from_source 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | elasticsearch_version: '7.x' 3 | elasticsearch_package: elasticsearch 4 | elasticsearch_package_state: present 5 | 6 | elasticsearch_service_state: started 7 | elasticsearch_service_enabled: true 8 | 9 | elasticsearch_network_host: localhost 10 | elasticsearch_http_port: 9200 11 | 12 | elasticsearch_heap_size_min: 1g 13 | elasticsearch_heap_size_max: 2g 14 | 15 | elasticsearch_extra_options: '' 16 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart elasticsearch 3 | service: name=elasticsearch state=restarted 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: elasticsearch 6 | author: geerlingguy 7 | description: Elasticsearch for Linux. 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - all 15 | - name: Debian 16 | versions: 17 | - all 18 | - name: Ubuntu 19 | versions: 20 | - all 21 | galaxy_tags: 22 | - web 23 | - system 24 | - monitoring 25 | - logging 26 | - lucene 27 | - elk 28 | - efk 29 | - elasticsearch 30 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | pre_tasks: 7 | - name: Update apt cache. 8 | apt: update_cache=true cache_valid_time=600 9 | when: ansible_os_family == 'Debian' 10 | changed_when: false 11 | 12 | roles: 13 | - role: geerlingguy.java 14 | - role: geerlingguy.elasticsearch 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.java 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Add required dependencies. 3 | apt: 4 | name: 5 | - apt-transport-https 6 | - gnupg2 7 | state: present 8 | 9 | - name: Add Elasticsearch apt key. 10 | apt_key: 11 | url: https://artifacts.elastic.co/GPG-KEY-elasticsearch 12 | state: present 13 | 14 | - name: Add Elasticsearch repository. 15 | apt_repository: 16 | repo: 'deb https://artifacts.elastic.co/packages/{{ elasticsearch_version }}/apt stable main' 17 | state: present 18 | update_cache: true 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Add Elasticsearch GPG key. 3 | rpm_key: 4 | key: https://artifacts.elastic.co/GPG-KEY-elasticsearch 5 | state: present 6 | 7 | - name: Add Elasticsearch repository. 8 | template: 9 | src: elasticsearch.repo.j2 10 | dest: /etc/yum.repos.d/elasticsearch.repo 11 | mode: 0644 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.elasticsearch/templates/elasticsearch.repo.j2: -------------------------------------------------------------------------------- 1 | [elasticsearch-{{ elasticsearch_version }}] 2 | name=Elasticsearch repository for {{ elasticsearch_version }} packages 3 | baseurl=https://artifacts.elastic.co/packages/{{ elasticsearch_version }}/yum 4 | gpgcheck=1 5 | gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch 6 | enabled=1 7 | autorefresh=1 8 | type=rpm-md 9 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | firewall_state: started 3 | firewall_enabled_at_boot: true 4 | 5 | firewall_flush_rules_and_chains: true 6 | 7 | firewall_allowed_tcp_ports: 8 | - "22" 9 | - "25" 10 | - "80" 11 | - "443" 12 | firewall_allowed_udp_ports: [] 13 | firewall_forwarded_tcp_ports: [] 14 | firewall_forwarded_udp_ports: [] 15 | firewall_additional_rules: [] 16 | firewall_enable_ipv6: true 17 | firewall_ip6_additional_rules: [] 18 | firewall_log_dropped_packets: true 19 | 20 | # Set to true to ensure other firewall management software is disabled. 21 | firewall_disable_firewalld: false 22 | firewall_disable_ufw: false 23 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart firewall 3 | service: name=firewall state=restarted 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | author: geerlingguy 6 | description: Simple iptables firewall for most Unix-like systems. 7 | company: "Midwestern Mac, LLC" 8 | license: "license (BSD, MIT)" 9 | min_ansible_version: 2.4 10 | platforms: 11 | - name: EL 12 | versions: 13 | - all 14 | - name: Debian 15 | versions: 16 | - all 17 | - name: Ubuntu 18 | versions: 19 | - all 20 | galaxy_tags: 21 | - networking 22 | - system 23 | - security 24 | - firewall 25 | - iptables 26 | - tcp 27 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | # Added to prevent test failures in CI. 8 | firewall_enable_ipv6: false 9 | 10 | # Added for a test. 11 | firewall_allowed_tcp_ports: 12 | - "9123" 13 | 14 | pre_tasks: 15 | - name: Update apt cache. 16 | apt: update_cache=true cache_valid_time=1200 17 | when: ansible_os_family == 'Debian' 18 | changed_when: false 19 | 20 | roles: 21 | - role: geerlingguy.firewall 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.firewall/templates/firewall.unit.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Firewall 3 | After=syslog.target network.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/etc/firewall.bash 8 | ExecStop=/sbin/iptables -F 9 | RemainAfterExit=yes 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '204' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 160 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | author: geerlingguy 6 | description: Git version control software 7 | company: "Midwestern Mac, LLC" 8 | license: "license (BSD, MIT)" 9 | min_ansible_version: 2.5 10 | platforms: 11 | - name: EL 12 | versions: 13 | - all 14 | - name: Fedora 15 | versions: 16 | - all 17 | - name: Debian 18 | versions: 19 | - all 20 | - name: Ubuntu 21 | versions: 22 | - all 23 | galaxy_tags: 24 | - development 25 | - system 26 | - git 27 | - vcs 28 | - source 29 | - code 30 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | git_install_from_source: false 8 | git_install_path: /usr/local 9 | 10 | pre_tasks: 11 | - name: Update apt cache. 12 | apt: update_cache=true cache_valid_time=600 13 | when: ansible_os_family == 'Debian' 14 | changed_when: false 15 | 16 | roles: 17 | - role: geerlingguy.git 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/molecule/default/playbook-source.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | git_install_from_source: true 8 | git_install_from_source_force_update: true 9 | git_version: "2.26.0" 10 | 11 | pre_tasks: 12 | - name: Update apt cache. 13 | apt: update_cache=true cache_valid_time=600 14 | when: ansible_os_family == 'Debian' 15 | changed_when: false 16 | 17 | roles: 18 | - role: geerlingguy.git 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | git_install_from_source_dependencies: 3 | - libcurl4-gnutls-dev 4 | - libexpat1-dev 5 | - gettext 6 | - libssl-dev 7 | - zlib1g-dev 8 | - build-essential 9 | - gcc 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/vars/Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | git_install_from_source_dependencies: 3 | - gettext-devel 4 | - expat-devel 5 | - curl-devel 6 | - zlib-devel 7 | - perl-devel 8 | - openssl-devel 9 | - subversion-perl 10 | - make 11 | - gcc 12 | - tar 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | git_install_from_source_dependencies: 3 | - gettext-devel 4 | - expat-devel 5 | - curl-devel 6 | - zlib-devel 7 | - perl-devel 8 | - openssl-devel 9 | - subversion-perl 10 | - make 11 | - gcc 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.git/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This space intentionally left blank. 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Set java_packages if you would like to use a different version than the 3 | # default for the OS (see defaults per OS in `vars` directory). 4 | # java_packages: [] 5 | 6 | java_home: "" 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | pre_tasks: 7 | - name: Update apt cache. 8 | apt: update_cache=true cache_valid_time=600 9 | when: ansible_os_family == 'Debian' 10 | changed_when: false 11 | 12 | roles: 13 | - role: geerlingguy.java 14 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199 and 3 | # https://github.com/geerlingguy/ansible-role-java/issues/64 4 | - name: Ensure 'man' directory exists. 5 | file: 6 | path: /usr/share/man/man1 7 | state: directory 8 | recurse: true 9 | when: 10 | - ansible_distribution == 'Ubuntu' 11 | - ansible_distribution_major_version | int >= 18 12 | 13 | - name: Ensure Java is installed. 14 | apt: 15 | name: "{{ java_packages }}" 16 | state: present 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/tasks/setup-FreeBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure Java is installed. 3 | pkgng: 4 | name: "{{ java_packages }}" 5 | state: present 6 | 7 | - name: ensure proc is mounted 8 | mount: name=/proc fstype=procfs src=proc opts=rw state=mounted 9 | 10 | - name: ensure fdesc is mounted 11 | mount: name=/dev/fd fstype=fdescfs src=fdesc opts=rw state=mounted 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure Java is installed. 3 | package: 4 | name: "{{ java_packages }}" 5 | state: present 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/templates/java_home.sh.j2: -------------------------------------------------------------------------------- 1 | export JAVA_HOME={{ java_home }} 2 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Debian-10.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-11-jdk 5 | __java_packages: 6 | - openjdk-11-jdk 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Debian-8.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-6-jdk 5 | # - openjdk-7-jdk 6 | __java_packages: 7 | - openjdk-7-jdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Debian-9.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-8-jdk 5 | __java_packages: 6 | - openjdk-8-jdk 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - java-1.8.0-openjdk 5 | __java_packages: 6 | - java-1.8.0-openjdk 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/FreeBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options for FreeBSD include: 3 | # - openjdk 4 | # - openjdk6 5 | # - openjdk8 6 | __java_packages: 7 | - openjdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/RedHat-6.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - java-1.6.0-openjdk 5 | # - java-1.7.0-openjdk 6 | __java_packages: 7 | - java-1.7.0-openjdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/RedHat-7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - java-1.6.0-openjdk 5 | # - java-1.7.0-openjdk 6 | # - java-1.8.0-openjdk 7 | __java_packages: 8 | - java-1.8.0-openjdk 9 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/RedHat-8.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java-1.8.0-openjdk 4 | # - java-11-openjdk 5 | # - java-latest-openjdk 6 | __java_packages: 7 | - java-11-openjdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Ubuntu-12.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-6-jdk 5 | # - openjdk-7-jdk 6 | __java_packages: 7 | - openjdk-7-jdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Ubuntu-14.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-6-jdk 5 | # - openjdk-7-jdk 6 | __java_packages: 7 | - openjdk-7-jdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Ubuntu-16.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-8-jdk 5 | # - openjdk-9-jdk 6 | __java_packages: 7 | - openjdk-8-jdk 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Ubuntu-18.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-11-jdk 5 | __java_packages: 6 | - openjdk-11-jdk 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.java/vars/Ubuntu-20.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # JDK version options include: 3 | # - java 4 | # - openjdk-11-jdk 5 | __java_packages: 6 | - openjdk-11-jdk 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '306' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | services: docker 4 | 5 | env: 6 | global: 7 | - ROLE_NAME: mailhog 8 | matrix: 9 | - MOLECULE_DISTRO: centos7 10 | - MOLECULE_DISTRO: ubuntu1804 11 | - MOLECULE_DISTRO: debian9 12 | 13 | install: 14 | # Install test dependencies. 15 | - pip install molecule docker 16 | 17 | before_script: 18 | # Use actual Ansible Galaxy role name for the project directory. 19 | - cd ../ 20 | - mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME 21 | - cd geerlingguy.$ROLE_NAME 22 | 23 | script: 24 | # Run tests. 25 | - molecule test 26 | 27 | notifications: 28 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 29 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | mailhog_install_dir: /opt/mailhog 3 | mailhog_version: 1.0.0 4 | mailhog_binary_url: "https://github.com/mailhog/MailHog/releases/download/v{{ mailhog_version }}/MailHog_linux_amd64" 5 | mhsendmail_version: 0.2.0 6 | mhsendmail_binary_url: "https://github.com/mailhog/mhsendmail/releases/download/v{{ mhsendmail_version }}/mhsendmail_linux_amd64" 7 | 8 | # Path to daemonize, which is used to launch MailHog via init script. 9 | mailhog_daemonize_bin_path: /usr/sbin/daemonize 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - geerlingguy.daemonize 4 | 5 | galaxy_info: 6 | author: geerlingguy 7 | description: "MailHog for Linux" 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 1.8 11 | platforms: 12 | - name: EL 13 | versions: 14 | - all 15 | - name: Ubuntu 16 | versions: 17 | - all 18 | - name: Debian 19 | versions: 20 | - all 21 | galaxy_tags: 22 | - development 23 | - web 24 | - system 25 | - mail 26 | - mailhog 27 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.daemonize 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/molecule/default/test-message: -------------------------------------------------------------------------------- 1 | From: johndoe@example.com 2 | To: janedoe@example.com 3 | Subject: Test email 4 | 5 | Hello world! -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/molecule/default/yaml-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 160 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mailhog/templates/mailhog.unit.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=MailHog Email Catcher 3 | After=syslog.target network.target 4 | 5 | [Service] 6 | Type=simple 7 | ExecStart={{ mailhog_install_dir }}/mailhog 8 | StandardOutput=journal 9 | Restart=on-failure 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | memcached_port: 11211 3 | memcached_listen_ip: 127.0.0.1 4 | 5 | memcached_memory_limit: 64 6 | memcached_connections: 1024 7 | 8 | memcached_log_file: /var/log/memcached.log 9 | memcached_log_verbosity: "" 10 | 11 | memcached_max_item_size: 1m 12 | 13 | memcached_threads: 4 14 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart memcached 3 | service: name=memcached state=restarted 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: memcached 6 | author: geerlingguy 7 | description: Memcached for Linux 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 7 15 | - 8 16 | - name: Ubuntu 17 | versions: 18 | - precise 19 | - trusty 20 | - xenial 21 | - bionic 22 | - name: Debian 23 | versions: 24 | - all 25 | galaxy_tags: 26 | - web 27 | - database 28 | - memcached 29 | - keyvalue 30 | - kv 31 | - cache 32 | - caching 33 | - performance 34 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | pre_tasks: 7 | - name: Update apt cache. 8 | apt: update_cache=yes cache_valid_time=600 9 | when: ansible_os_family == 'Debian' 10 | 11 | roles: 12 | - role: geerlingguy.memcached 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __memcached_user: memcache 3 | memcached_config_file: /etc/memcached.conf 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.memcached/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __memcached_user: memcached 3 | memcached_config_file: /etc/sysconfig/memcached 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 160 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart mysql 3 | service: "name={{ mysql_daemon }} state=restarted sleep=5" 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: mysql 6 | author: geerlingguy 7 | description: MySQL server for RHEL/CentOS and Debian/Ubuntu. 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 7 15 | - 8 16 | - name: Ubuntu 17 | versions: 18 | - all 19 | - name: Debian 20 | versions: 21 | - all 22 | - name: Archlinux 23 | versions: 24 | - all 25 | galaxy_tags: 26 | - database 27 | - mysql 28 | - mariadb 29 | - db 30 | - sql 31 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | roles: 7 | - role: geerlingguy.mysql 8 | 9 | post_tasks: 10 | - name: Make sure we can connect to MySQL via Unix socket. 11 | command: "mysql -u root -proot -e 'show databases;'" 12 | changed_when: false 13 | 14 | - name: Make sure we can connect to MySQL via TCP. 15 | command: "mysql -u root -proot -h 127.0.0.1 -e 'show databases;'" 16 | changed_when: false 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/tasks/databases.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure MySQL databases are present. 3 | mysql_db: 4 | name: "{{ item.name }}" 5 | collation: "{{ item.collation | default('utf8_general_ci') }}" 6 | encoding: "{{ item.encoding | default('utf8') }}" 7 | state: "{{ item.state | default('present') }}" 8 | with_items: "{{ mysql_databases }}" 9 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/tasks/setup-Archlinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure MySQL Python libraries are installed. 3 | pacman: "name=mysql-python state=present" 4 | 5 | - name: Ensure MySQL packages are installed. 6 | pacman: "name={{ mysql_packages }} state=present" 7 | register: arch_mysql_install_packages 8 | 9 | - name: Run mysql_install_db if MySQL packages were changed. 10 | command: mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql 11 | when: arch_mysql_install_packages.changed 12 | tags: ['skip_ansible_lint'] 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure MySQL packages are installed. 3 | yum: 4 | name: "{{ mysql_packages }}" 5 | state: present 6 | enablerepo: "{{ mysql_enablerepo | default(omit, true) }}" 7 | register: rh_mysql_install_packages 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/tasks/users.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure MySQL users are present. 3 | mysql_user: 4 | name: "{{ item.name }}" 5 | host: "{{ item.host | default('localhost') }}" 6 | password: "{{ item.password }}" 7 | priv: "{{ item.priv | default('*.*:USAGE') }}" 8 | state: "{{ item.state | default('present') }}" 9 | append_privs: "{{ item.append_privs | default('no') }}" 10 | encrypted: "{{ item.encrypted | default('no') }}" 11 | with_items: "{{ mysql_users }}" 12 | no_log: true 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/templates/root-my.cnf.j2: -------------------------------------------------------------------------------- 1 | {{ ansible_managed | comment }} 2 | 3 | [client] 4 | user="{{ mysql_root_username }}" 5 | password="{{ mysql_root_password }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/templates/user-my.cnf.j2: -------------------------------------------------------------------------------- 1 | {{ ansible_managed | comment }} 2 | 3 | [client] 4 | user="{{ mysql_user_name }}" 5 | password="{{ mysql_user_password }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/vars/Archlinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __mysql_daemon: mariadb 3 | __mysql_packages: 4 | - mariadb 5 | __mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log 6 | __mysql_log_error: /var/log/mysql.err 7 | __mysql_syslog_tag: mysql 8 | __mysql_pid_file: /run/mysqld/mysqld.pid 9 | __mysql_config_file: /etc/mysql/my.cnf 10 | __mysql_config_include_dir: /etc/mysql/conf.d 11 | __mysql_socket: /run/mysqld/mysqld.sock 12 | __mysql_supports_innodb_large_prefix: true 13 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/vars/Debian-10.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __mysql_daemon: mariadb 3 | __mysql_packages: 4 | - default-mysql-server 5 | mysql_log_file_group: adm 6 | __mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log 7 | __mysql_log_error: /var/log/mysql/mysql.log 8 | __mysql_syslog_tag: mariadb 9 | __mysql_pid_file: /run/mysqld/mysqld.pid 10 | __mysql_config_file: /etc/mysql/my.cnf 11 | __mysql_config_include_dir: /etc/mysql/conf.d 12 | __mysql_socket: /run/mysqld/mysqld.sock 13 | __mysql_supports_innodb_large_prefix: true 14 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __mysql_daemon: mysql 3 | __mysql_packages: 4 | - mysql-common 5 | - mysql-server 6 | mysql_log_file_group: adm 7 | __mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log 8 | __mysql_log_error: /var/log/mysql/mysql.err 9 | __mysql_syslog_tag: mysql 10 | __mysql_pid_file: /var/run/mysqld/mysqld.pid 11 | __mysql_config_file: /etc/mysql/my.cnf 12 | __mysql_config_include_dir: /etc/mysql/conf.d 13 | __mysql_socket: /var/run/mysqld/mysqld.sock 14 | __mysql_supports_innodb_large_prefix: true 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.mysql/vars/RedHat-7.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __mysql_daemon: mariadb 3 | __mysql_packages: 4 | - mariadb 5 | - mariadb-server 6 | - mariadb-libs 7 | - MySQL-python 8 | - perl-DBD-MySQL 9 | __mysql_slow_query_log_file: /var/log/mysql-slow.log 10 | __mysql_log_error: /var/log/mariadb/mariadb.log 11 | __mysql_syslog_tag: mariadb 12 | __mysql_pid_file: /var/run/mariadb/mariadb.pid 13 | __mysql_config_file: /etc/my.cnf 14 | __mysql_config_include_dir: /etc/my.cnf.d 15 | __mysql_socket: /var/lib/mysql/mysql.sock 16 | __mysql_supports_innodb_large_prefix: true 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart nginx 3 | service: name=nginx state=restarted 4 | 5 | - name: validate nginx configuration 6 | command: nginx -t -c /etc/nginx/nginx.conf 7 | changed_when: false 8 | 9 | - name: reload nginx 10 | service: name=nginx state=reloaded 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | 5 | vars: 6 | nginx_use_ppa: true 7 | nginx_remove_default_vhost: true 8 | nginx_vhosts: 9 | - server_name: "test.dev" 10 | root: "/var/www/test" 11 | 12 | pre_tasks: 13 | - name: Update apt cache. 14 | apt: update_cache=yes cache_valid_time=600 15 | when: ansible_os_family == 'Debian' 16 | changed_when: false 17 | 18 | roles: 19 | - role: geerlingguy.nginx 20 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-Archlinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure nginx is installed. 3 | pacman: 4 | name: "{{ nginx_package_name }}" 5 | state: present 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | changed_when: false 5 | 6 | - name: Ensure nginx is installed. 7 | apt: 8 | name: "{{ nginx_package_name }}" 9 | state: present 10 | default_release: "{{ nginx_default_release }}" 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-FreeBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update pkg cache. 3 | command: pkg update -f 4 | environment: 5 | ASSUME_ALWAYS_YES: "yes" 6 | tags: ['skip_ansible_lint'] 7 | 8 | - name: Ensure nginx is installed. 9 | pkgng: 10 | name: "{{ nginx_package_name }}" 11 | state: present 12 | 13 | - name: Create logs directory. 14 | file: 15 | path: /var/log/nginx 16 | state: directory 17 | mode: 0755 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-OpenBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure nginx is installed. 3 | openbsd_pkg: 4 | name: "{{ nginx_package_name }}" 5 | state: present 6 | 7 | - name: Create logs directory. 8 | file: 9 | path: /var/log/nginx 10 | state: directory 11 | mode: 0755 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Enable nginx repo. 3 | template: 4 | src: nginx.repo.j2 5 | dest: /etc/yum.repos.d/nginx.repo 6 | owner: root 7 | group: "{{ root_group }}" 8 | mode: 0644 9 | when: nginx_yum_repo_enabled | bool 10 | 11 | - name: Ensure nginx is installed. 12 | package: 13 | name: "{{ nginx_package_name }}" 14 | state: present 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/tasks/setup-Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure dirmngr is installed (gnupg dependency). 3 | apt: 4 | name: dirmngr 5 | state: present 6 | 7 | - name: Add PPA for Nginx (if configured). 8 | apt_repository: 9 | repo: 'ppa:nginx/{{ nginx_ppa_version }}' 10 | state: present 11 | update_cache: true 12 | register: nginx_ppa_added 13 | when: nginx_ppa_use | bool 14 | 15 | - name: Ensure nginx will reinstall if the PPA was just added. 16 | apt: 17 | name: nginx 18 | state: absent 19 | when: nginx_ppa_added is changed 20 | tags: ['skip_ansible_lint'] 21 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/templates/nginx.repo.j2: -------------------------------------------------------------------------------- 1 | [nginx] 2 | name=nginx repo 3 | baseurl=http://nginx.org/packages/centos/{{ ansible_distribution_major_version }}/$basearch/ 4 | gpgcheck=0 5 | enabled=1 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/Archlinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: root 3 | nginx_conf_path: /etc/nginx/conf.d 4 | nginx_conf_file_path: /etc/nginx/nginx.conf 5 | nginx_mime_file_path: /etc/nginx/mime.types 6 | nginx_pidfile: /run/nginx.pid 7 | nginx_vhost_path: /etc/nginx/sites-enabled 8 | nginx_default_vhost_path: /etc/nginx/sites-enabled/default 9 | __nginx_user: "http" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: root 3 | nginx_conf_path: /etc/nginx/conf.d 4 | nginx_conf_file_path: /etc/nginx/nginx.conf 5 | nginx_mime_file_path: /etc/nginx/mime.types 6 | nginx_pidfile: /run/nginx.pid 7 | nginx_vhost_path: /etc/nginx/sites-enabled 8 | nginx_default_vhost_path: /etc/nginx/sites-enabled/default 9 | __nginx_user: "www-data" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/FreeBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: wheel 3 | nginx_conf_path: /usr/local/etc/nginx/conf.d 4 | nginx_conf_file_path: /usr/local/etc/nginx/nginx.conf 5 | nginx_mime_file_path: /usr/local/etc/nginx/mime.types 6 | nginx_pidfile: /var/run/nginx.pid 7 | nginx_vhost_path: /usr/local/etc/nginx/sites-enabled 8 | nginx_default_vhost_path: /usr/local/etc/nginx/sites-enabled/default 9 | __nginx_user: "www" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/OpenBSD.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: wheel 3 | nginx_conf_path: /etc/nginx/conf.d 4 | nginx_conf_file_path: /etc/nginx/nginx.conf 5 | nginx_mime_file_path: /etc/nginx/mime.types 6 | nginx_pidfile: /var/run/nginx.pid 7 | nginx_vhost_path: /etc/nginx/sites-enabled 8 | nginx_default_vhost_path: /etc/nginx/sites-enabled/default 9 | nginx_package_name: "nginx--" 10 | __nginx_user: "www" 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: root 3 | nginx_conf_path: /etc/nginx/conf.d 4 | nginx_conf_file_path: /etc/nginx/nginx.conf 5 | nginx_mime_file_path: /etc/nginx/mime.types 6 | nginx_pidfile: /var/run/nginx.pid 7 | nginx_vhost_path: /etc/nginx/conf.d 8 | nginx_default_vhost_path: /etc/nginx/conf.d/default.conf 9 | __nginx_user: "nginx" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nginx/vars/Rocky.yml: -------------------------------------------------------------------------------- 1 | --- 2 | root_group: root 3 | nginx_conf_path: /etc/nginx/conf.d 4 | nginx_conf_file_path: /etc/nginx/nginx.conf 5 | nginx_mime_file_path: /etc/nginx/mime.types 6 | nginx_pidfile: /var/run/nginx.pid 7 | nginx_vhost_path: /etc/nginx/conf.d 8 | nginx_default_vhost_path: /etc/nginx/conf.d/default.conf 9 | __nginx_user: "nginx" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 220 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: nodejs 6 | author: geerlingguy 7 | description: Node.js installation for Linux 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 7 15 | - 8 16 | - name: Debian 17 | versions: 18 | - all 19 | - name: Ubuntu 20 | versions: 21 | - trusty 22 | - xenial 23 | - bionic 24 | galaxy_tags: 25 | - development 26 | - web 27 | - javascript 28 | - js 29 | - node 30 | - npm 31 | - nodejs 32 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/molecule/default/converge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | nodejs_install_npm_user: root 8 | npm_config_prefix: /root/.npm-global 9 | npm_config_unsafe_perm: "true" 10 | nodejs_npm_global_packages: 11 | - node-sass 12 | - name: jslint 13 | version: 0.12.0 14 | - name: yo 15 | 16 | pre_tasks: 17 | - name: Update apt cache. 18 | apt: update_cache=true cache_valid_time=600 19 | when: ansible_os_family == 'Debian' 20 | 21 | roles: 22 | - role: geerlingguy.nodejs 23 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/molecule/default/playbook-latest.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | nodejs_version: "13.x" 8 | nodejs_install_npm_user: root 9 | npm_config_prefix: /root/.npm-global 10 | npm_config_unsafe_perm: "true" 11 | nodejs_npm_global_packages: 12 | - slugify 13 | - name: jslint 14 | version: 0.12.0 15 | - name: yo 16 | 17 | pre_tasks: 18 | - name: Update apt cache. 19 | apt: update_cache=true cache_valid_time=600 20 | when: ansible_os_family == 'Debian' 21 | 22 | roles: 23 | - role: geerlingguy.nodejs 24 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.nodejs/templates/npm.sh.j2: -------------------------------------------------------------------------------- 1 | export PATH=$PATH:{{ npm_config_prefix }}/bin 2 | export NPM_CONFIG_PREFIX={{ npm_config_prefix }} 3 | export NODE_PATH=$NODE_PATH:{{ npm_config_prefix }}/lib/node_modules 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Pass in a comma-separated list of repos to use (e.g. "remi,epel"). 3 | php_enablerepo: "" 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - geerlingguy.php 4 | 5 | galaxy_info: 6 | author: geerlingguy 7 | description: PHP Memcached support for Linux 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 1.8 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 6 15 | - 7 16 | - name: Debian 17 | versions: 18 | - all 19 | - name: Ubuntu 20 | versions: 21 | - all 22 | galaxy_tags: 23 | - database 24 | - web 25 | - php 26 | - memcached 27 | - cache 28 | - performance 29 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: 7 | name: yamllint 8 | options: 9 | config-file: molecule/default/yaml-lint.yml 10 | platforms: 11 | - name: instance 12 | image: geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible 13 | command: ${MOLECULE_DOCKER_COMMAND:-"sleep infinity"} 14 | privileged: true 15 | pre_build_image: true 16 | provisioner: 17 | name: ansible 18 | lint: 19 | name: ansible-lint 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-playbook.yml} 22 | scenario: 23 | name: default 24 | verifier: 25 | name: testinfra 26 | lint: 27 | name: flake8 28 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/molecule/default/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | php_enable_webserver: false 8 | 9 | roles: 10 | - role: geerlingguy.memcached 11 | - role: geerlingguy.php 12 | - role: geerlingguy.php-memcached 13 | 14 | post_tasks: 15 | - name: Run test script to confirm Memcached is reachable via PHP. 16 | script: memcached-test.php 17 | args: 18 | executable: php 19 | changed_when: false 20 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.memcached 3 | - src: geerlingguy.php 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/molecule/default/tests/test_default.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import testinfra.utils.ansible_runner 4 | 5 | testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( 6 | os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') 7 | 8 | 9 | def test_hosts_file(host): 10 | f = host.file('/etc/hosts') 11 | 12 | assert f.exists 13 | assert f.user == 'root' 14 | assert f.group == 'root' 15 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/molecule/default/yaml-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __php_memcached_package: php-memcached 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-memcached/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __php_memcached_package: php-pecl-memcached 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | services: docker 4 | 5 | env: 6 | global: 7 | - ROLE_NAME: php-mysql 8 | matrix: 9 | - MOLECULE_DISTRO: centos7 10 | - MOLECULE_DISTRO: ubuntu2004 11 | - MOLECULE_DISTRO: debian10 12 | 13 | install: 14 | # Install test dependencies. 15 | - pip install molecule yamllint ansible-lint docker 16 | 17 | before_script: 18 | # Use actual Ansible Galaxy role name for the project directory. 19 | - cd ../ 20 | - mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME 21 | - cd geerlingguy.$ROLE_NAME 22 | 23 | script: 24 | # Run tests. 25 | - molecule test 26 | 27 | notifications: 28 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 29 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Pass in a comma-separated list of repos to use (e.g. "remi,epel"). 3 | php_enablerepo: "" 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - geerlingguy.php 4 | 5 | galaxy_info: 6 | # See: https://github.com/ansible/galaxy/issues/2393 7 | # role_name: php-mysql 8 | author: geerlingguy 9 | description: PHP MySQL support for Linux. 10 | company: "Midwestern Mac, LLC" 11 | license: "license (BSD, MIT)" 12 | min_ansible_version: 2.4 13 | platforms: 14 | - name: EL 15 | versions: 16 | - all 17 | - name: Debian 18 | versions: 19 | - all 20 | - name: Ubuntu 21 | versions: 22 | - all 23 | galaxy_tags: 24 | - database 25 | - web 26 | - mysql 27 | - php 28 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.repo-remi 3 | - src: geerlingguy.apache 4 | - src: geerlingguy.mysql 5 | - src: geerlingguy.php 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __php_mysql_package: php{{ php_default_version_debian | default("7.4") }}-mysql 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-mysql/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __php_mysql_package: php-mysql 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '306' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | services: docker 4 | 5 | env: 6 | global: 7 | - ROLE_NAME: php-pecl 8 | matrix: 9 | - MOLECULE_DISTRO: centos8 10 | - MOLECULE_DISTRO: ubuntu1804 11 | - MOLECULE_DISTRO: debian10 12 | 13 | install: 14 | # Install test dependencies. 15 | - pip install molecule yamllint ansible-lint docker 16 | 17 | before_script: 18 | # Use actual Ansible Galaxy role name for the project directory. 19 | - cd ../ 20 | - mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME 21 | - cd geerlingguy.$ROLE_NAME 22 | 23 | script: 24 | # Run tests. 25 | - molecule test 26 | 27 | notifications: 28 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 29 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 120 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | php_pecl_install_pecl: false 3 | 4 | php_pecl_install_command: "pecl install" 5 | 6 | # Add extensions to this list to have them installed with this role. 7 | php_pecl_extensions: [] 8 | # - xdebug 9 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.php-pecl/molecule/default/pecl-test.php: -------------------------------------------------------------------------------- 1 | /dev/null && which gem >/dev/null; then 2 | PATH="$(ruby -e 'puts Gem.user_dir')/bin:$PATH" 3 | fi 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/molecule/default/source-install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | ruby_install_from_source: true 8 | ruby_install_gems_user: root 9 | ruby_install_gems: 10 | - sass 11 | 12 | pre_tasks: 13 | - name: Update apt cache. 14 | apt: update_cache=true cache_valid_time=600 15 | when: ansible_os_family == 'Debian' 16 | 17 | roles: 18 | - role: geerlingguy.ruby 19 | 20 | post_tasks: 21 | - name: Verify Ruby is installed. 22 | command: ruby --version 23 | changed_when: false 24 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/tasks/setup-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Update apt cache. 3 | apt: update_cache=yes cache_valid_time=86400 4 | 5 | - name: Set rubygems package name for Ubuntu 14.04. 6 | set_fact: 7 | ruby_rubygems_package_name: rubygems-integration 8 | when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty' 9 | 10 | - name: Install ruby and other required dependencies. 11 | apt: 12 | name: "{{ ruby_packages }}" 13 | state: present 14 | 15 | - name: Install rubygems. 16 | apt: 17 | name: "{{ ruby_rubygems_package_name }}" 18 | state: present 19 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/tasks/setup-RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install ruby, rubygems, and development tools. 3 | yum: 4 | name: "{{ ruby_packages }}" 5 | state: present 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __ruby_packages: 3 | - ruby-full 4 | - ruby-dev 5 | - build-essential 6 | - autogen 7 | - autoconf 8 | - libtool 9 | __ruby_build_packages: 10 | - build-essential 11 | - zlib1g-dev 12 | - libssl-dev 13 | - libyaml-dev 14 | - libreadline6-dev 15 | - libncurses5-dev 16 | - libffi-dev 17 | - libgdbm-dev 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.ruby/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | __ruby_packages: 3 | - ruby 4 | - ruby-devel 5 | - "{{ ruby_rubygems_package_name }}" 6 | - '@development' 7 | __ruby_build_packages: 8 | - '@development' 9 | - zlib-devel 10 | - openssl-static 11 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - '106' 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart ssh 3 | service: 4 | name: "{{ security_sshd_name }}" 5 | state: "{{ security_ssh_restart_handler_state }}" 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/tasks/autoupdate-Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install unattended upgrades package. 3 | package: 4 | name: unattended-upgrades 5 | state: present 6 | 7 | - name: Copy unattended-upgrades configuration files in place. 8 | template: 9 | src: "{{ item }}.j2" 10 | dest: "/etc/apt/apt.conf.d/{{ item }}" 11 | owner: root 12 | group: root 13 | mode: 0644 14 | with_items: 15 | - 10periodic 16 | - 50unattended-upgrades 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Include OS-specific variables. 3 | include_vars: "{{ ansible_os_family }}.yml" 4 | 5 | # Fail2Ban 6 | - include_tasks: fail2ban.yml 7 | when: security_fail2ban_enabled | bool 8 | 9 | # SSH 10 | - include_tasks: ssh.yml 11 | 12 | # Autoupdate 13 | - include_tasks: autoupdate-RedHat.yml 14 | when: 15 | - ansible_os_family == 'RedHat' 16 | - security_autoupdate_enabled | bool 17 | 18 | - include_tasks: autoupdate-Debian.yml 19 | when: 20 | - ansible_os_family == 'Debian' 21 | - security_autoupdate_enabled | bool 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/templates/10periodic.j2: -------------------------------------------------------------------------------- 1 | APT::Periodic::Update-Package-Lists "1"; 2 | APT::Periodic::Download-Upgradeable-Packages "1"; 3 | APT::Periodic::AutocleanInterval "7"; 4 | APT::Periodic::Unattended-Upgrade "1"; 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/templates/jail.local.j2: -------------------------------------------------------------------------------- 1 | [sshd] 2 | enabled = true 3 | port = {{ security_ssh_port }} 4 | filter = sshd 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | security_ssh_config_path: /etc/ssh/sshd_config 3 | security_sshd_name: ssh 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.security/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | security_ssh_config_path: /etc/ssh/sshd_config 3 | security_sshd_name: sshd 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - 'yaml' 3 | - 'role-name' 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | .cache 5 | 6 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | line-length: 6 | max: 120 7 | level: warning 8 | 9 | ignore: | 10 | .github/stale.yml 11 | .travis.yml 12 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart solr 3 | service: 4 | name: "{{ solr_service_name }}" 5 | state: restarted 6 | sleep: 5 7 | when: solr_restart_handler_enabled 8 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: [] 3 | 4 | galaxy_info: 5 | role_name: solr 6 | author: geerlingguy 7 | description: Apache Solr for Linux. 8 | company: "Midwestern Mac, LLC" 9 | license: "license (BSD, MIT)" 10 | min_ansible_version: 2.4 11 | platforms: 12 | - name: EL 13 | versions: 14 | - 7 15 | - 8 16 | - name: Debian 17 | versions: 18 | - all 19 | - name: Ubuntu 20 | versions: 21 | - all 22 | galaxy_tags: 23 | - development 24 | - solr 25 | - search 26 | - lucene 27 | - container 28 | - apache 29 | - text 30 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | platforms: 7 | - name: instance 8 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 9 | command: ${MOLECULE_DOCKER_COMMAND:-""} 10 | volumes: 11 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 12 | privileged: true 13 | pre_build_image: true 14 | provisioner: 15 | name: ansible 16 | playbooks: 17 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/molecule/default/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - src: geerlingguy.java 3 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/molecule/default/solr-3.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | solr_version: "3.6.2" 8 | 9 | pre_tasks: 10 | - name: Update apt cache. 11 | apt: update_cache=true cache_valid_time=600 12 | when: ansible_os_family == "Debian" 13 | 14 | roles: 15 | - role: geerlingguy.java 16 | - role: geerlingguy.solr 17 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/molecule/default/solr-4.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | solr_version: "4.10.4" 8 | solr_remove_cruft: true 9 | 10 | pre_tasks: 11 | - name: Update apt cache. 12 | apt: update_cache=true cache_valid_time=600 13 | when: ansible_os_family == "Debian" 14 | 15 | roles: 16 | - role: geerlingguy.java 17 | - role: geerlingguy.solr 18 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/molecule/default/solr-5.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | become: true 5 | 6 | vars: 7 | solr_version: "5.5.5" 8 | solr_remove_cruft: true 9 | java_packages: 10 | - openjdk-8-jdk 11 | 12 | pre_tasks: 13 | - name: Update apt cache. 14 | apt: update_cache=true cache_valid_time=600 15 | when: ansible_os_family == "Debian" 16 | 17 | roles: 18 | - role: geerlingguy.java 19 | - role: geerlingguy.solr 20 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/tasks/trim-fat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Remove the downloaded Solr archive. 3 | file: 4 | path: "{{ item }}" 5 | state: absent 6 | with_items: 7 | - "{{ solr_workspace }}/{{ solr_filename }}.tgz" 8 | - "{{ solr_workspace }}/{{ solr_filename }}" 9 | 10 | - name: Remove docs, if not needed. 11 | file: 12 | path: "{{ solr_install_path }}/docs" 13 | state: absent 14 | when: solr_remove_cruft 15 | 16 | - name: Remove example dir, if not needed. 17 | file: 18 | path: "{{ solr_install_path }}/example" 19 | state: absent 20 | when: 21 | - solr_remove_cruft 22 | - solr_version.split('.')[0] >= '5' 23 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/tasks/user.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Ensure solr_group exists. 3 | group: "name={{ solr_group }} state=present" 4 | 5 | - name: Ensure solr_user exists. 6 | user: 7 | name: "{{ solr_user }}" 8 | state: present 9 | group: "{{ solr_group }}" 10 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.solr/templates/solr-pre5.unit.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Apache SOLR 3 | After=syslog.target network.target remote-fs.target nss-lookup.target 4 | 5 | [Service] 6 | Type=simple 7 | WorkingDirectory={{ solr_install_path }}/example 8 | ExecStart=/usr/bin/java -jar -Dsolr.solr.home={{ solr_home }} -Djetty.host={{ solr_host }} -Djetty.port={{ solr_port }} -Xms{{ solr_xms }} -Xmx{{ solr_xmx }} start.jar 9 | Restart=on-failure 10 | User={{ solr_user }} 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/.gitignore: -------------------------------------------------------------------------------- 1 | *.retry 2 | */__pycache__ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | max: 180 6 | level: warning 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: reload systemd 3 | systemd: daemon-reload=true 4 | 5 | - name: restart varnish 6 | service: name=varnish state=restarted 7 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | driver: 5 | name: docker 6 | lint: | 7 | set -e 8 | yamllint . 9 | ansible-lint 10 | platforms: 11 | - name: instance 12 | image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" 13 | command: ${MOLECULE_DOCKER_COMMAND:-""} 14 | volumes: 15 | - /sys/fs/cgroup:/sys/fs/cgroup:ro 16 | privileged: true 17 | pre_build_image: true 18 | provisioner: 19 | name: ansible 20 | playbooks: 21 | converge: ${MOLECULE_PLAYBOOK:-converge.yml} 22 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/templates/secret.j2: -------------------------------------------------------------------------------- 1 | {{ varnish_secret }} 2 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | varnish_sysvinit_config_path: /etc/default 3 | varnish_systemd_config_path: /lib/systemd/system 4 | -------------------------------------------------------------------------------- /provisioning/roles/geerlingguy.varnish/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | varnish_sysvinit_config_path: /etc/sysconfig 3 | varnish_systemd_config_path: /usr/lib/systemd/system 4 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | workspace: /root 3 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/templates/uploadprogress.ini.j2: -------------------------------------------------------------------------------- 1 | ; activate and configurate for php uploadprogress module 2 | extension={{ php_uploadprogress_module_path }}/uploadprogress.so 3 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/tests/Dockerfile.ubuntu-12.04: -------------------------------------------------------------------------------- 1 | FROM ubuntu:12.04 2 | RUN apt-get update 3 | 4 | # Install Ansible 5 | RUN apt-get install -y software-properties-common python-software-properties git 6 | RUN apt-add-repository -y ppa:ansible/ansible 7 | RUN apt-get update 8 | RUN apt-get install -y ansible 9 | 10 | RUN apt-get install -y unzip 11 | 12 | # Install Ansible inventory file 13 | RUN echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts 14 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/tests/Dockerfile.ubuntu-14.04: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | RUN apt-get update 3 | 4 | # Install Ansible 5 | RUN apt-get install -y software-properties-common git 6 | RUN apt-add-repository -y ppa:ansible/ansible 7 | RUN apt-get update 8 | RUN apt-get install -y ansible 9 | 10 | RUN apt-get install -y unzip 11 | 12 | # Install Ansible inventory file 13 | RUN echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts 14 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/tests/inventory: -------------------------------------------------------------------------------- 1 | localhost 2 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/tests/test-source.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: all 3 | 4 | vars: 5 | php_enable_webserver: false 6 | php_enablerepo: "remi,remi-php70" 7 | 8 | pre_tasks: 9 | - name: Ensure build dependencies are installed (RedHat). 10 | yum: name=which state=present 11 | when: ansible_os_family == 'RedHat' 12 | 13 | - name: Add repository for PHP 7.0. 14 | apt_repository: repo='ppa:ondrej/php' 15 | when: ansible_os_family == 'Debian' 16 | 17 | roles: 18 | - { role: geerlingguy.repo-remi, when: ansible_os_family == 'RedHat' } 19 | - geerlingguy.php 20 | - role_under_test 21 | -------------------------------------------------------------------------------- /provisioning/roles/thom8.php-upload-progress/tests/uploadprogress-test.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /provisioning/vars/Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | -------------------------------------------------------------------------------- /provisioning/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Defaults set by `ansible-role-php` with the addition of `php-pecl-yaml` and `php-mcrypt`. 3 | php_packages: 4 | - php 5 | - php-cli 6 | - php-common 7 | - php-devel 8 | - php-fpm 9 | - php-gd 10 | - php-imap 11 | - php-ldap 12 | - php-mbstring 13 | - php-mcrypt 14 | - php-opcache 15 | - php-pdo 16 | - php-pear 17 | - php-pecl-apcu 18 | - php-xml 19 | - php-xmlrpc 20 | - php-pecl-yaml 21 | -------------------------------------------------------------------------------- /provisioning/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | _devtool_docroots: 3 | - "{{ adminer_install_dir }}" 4 | - "{{ php_xhprof_html_dir }}" 5 | - "{{ dashboard_install_dir|default('') }}" 6 | 7 | drupalvm_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}" 8 | --------------------------------------------------------------------------------