This page features an un-sorted list of examples, showcasing the sort of things you can do with freckles. I'll clean up and organize this at some point. Promise!

Setup a web-server to serve a static website.

Setup the Apache web-server with a vhost configuration that contains contains configuration to serve a folder of html files.

All content will be served via https, a redirect will be set up so that all http traffic will be forwarded to https. A Let's encrypt certificate will be requested, and a cron job will be set up to re-new that certificate before it expires.

As a second step, a single html file will be generated, with some custom content.

- webserver-static-site:
    hostname: example.com
    webserver: apache
    use_https: true
    server_admin: hello@example.com
- file-with-content:
    owner: www-data
    path: /var/www/html/index.html
    content: |
      <h1><i>freckles</i> says "hello", World!</h1>

Create a Python virtual environment using pyenv

Without freckles installed already on the local/control machine, bootstrap it and, on a remote target box, create a new user, then, for that user: install Pyenv if necessary, then install a specific version on Python with it. Create a virtualenv with this version of Python, and install a few packages into that virtualenv.

curl https://freckles.sh | bash -s -- frecklecute \
     -t admin@dev.frkl.io \
     python-virtualenv \
     --user my-python-user \
     --python-version 3.6.8 \
     --python-build-opts "--enable-shared" \
     --venv-name freckles \
     -p cookiecutter

Setup a Wordpress instance on a remote host

On a remote machine, setup the Apache web-server, MariaDB, PHP. Download Wordpress and configure everything so Apache serves the Wordpress instance via https (http redirects to https), using a Let's encrypt staging certificate. Asks for Wordpress admin & database passwords interactively.

frecklecute -t admin@dev.frkl.io wordpress-standalone \
      --wp-admin-email hello@frkl.io \
      --wp-title my-wordpress \
      --host dev.frkl.io \
      --use-https \