- name: "Create folder {{ sites_path }}/{{ item.slug }}" file: path: "{{ sites_path }}/{{ item.slug }}" state: directory mode: '750' - name: Render sexy Dockerfile template: src: Dockerfile.j2 dest: "{{ sites_path }}/{{ item.slug }}/Dockerfile" - name: Render marvelous docker-compose.yml template: src: docker-compose.yml.j2 dest: "{{ sites_path }}/{{ item.slug }}/docker-compose.yml" - name: Render swell nginx site config template: src: nginx-wordpress.j2 dest: "/etc/nginx/sites-available/{{ item.url }}" become: yes # - name: Create Let's Encrypt certificate # This seems hard, see: # https://docs.ansible.com/ansible/latest/modules/acme_certificate_module.html#acme-certificate-module # https://www.digitalocean.com/community/tutorials/how-to-acquire-a-let-s-encrypt-certificate-using-ansible-on-ubuntu-18-04 # Maybe using shell directly? e.g. # certbot certonly --webroot -w /var/www/letsencrypt -d # MySQL equivalent: # create user @ identified by ; # grant all on .* to @; - name: "Add database user {{ item.mysql_username }}@{{ item.subnet_site_ip }} and grant all privileges on {{ item.mysql_database }}" mysql_user: # Credentials to log in MySQL login_host: localhost login_user: root login_password: "{{ mysql_root_password }}" # Credentials of the new db user host: "{{ item.subnet_site_ip }}" name: "{{ item.mysql_username }}" password: "{{ item.mysql_password }}" # Grants priv: "{{ item.mysql_database }}.*:all" state: present