- name: Deploy personal blog static site hosts: vipy become: yes vars_files: - ../../infra_vars.yml - ../../services_config.yml - ./personal_blog_vars.yml vars: personal_blog_subdomain: "{{ subdomains.personal_blog }}" caddy_sites_dir: "{{ caddy_sites_dir }}" personal_blog_domain: "{{ personal_blog_subdomain }}.{{ root_domain }}" tasks: - name: Install git apt: name: git state: present - name: Create source directory for blog file: path: "{{ personal_blog_source_dir }}" state: directory owner: root group: root mode: '0755' - name: Create webroot directory file: path: "{{ personal_blog_webroot }}" state: directory owner: www-data group: www-data mode: '0755' - name: Clone blog repository with token authentication git: repo: "https://{{ personal_blog_git_username }}:{{ lookup('env', 'PERSONAL_BLOG_DEPLOY_TOKEN') }}@forgejo.contrapeso.xyz/counterweight/pablohere.git" dest: "{{ personal_blog_source_dir }}" version: master force: yes become_user: root - name: Copy static files to webroot shell: | rsync -av --delete {{ personal_blog_source_dir }}/{{ personal_blog_source_folder }}/ {{ personal_blog_webroot }}/ args: creates: "{{ personal_blog_webroot }}/index.html" - name: Set ownership and permissions for webroot file: path: "{{ personal_blog_webroot }}" owner: www-data group: www-data recurse: yes state: directory - name: Ensure Caddy sites-enabled directory exists file: path: "{{ caddy_sites_dir }}" state: directory owner: root group: root mode: '0755' - name: Ensure Caddyfile includes import directive for sites-enabled lineinfile: path: /etc/caddy/Caddyfile line: 'import sites-enabled/*' insertafter: EOF state: present backup: yes - name: Create Caddy static site configuration copy: dest: "{{ caddy_sites_dir }}/personal-blog.conf" content: | {{ personal_blog_domain }} { root * {{ personal_blog_webroot }} file_server } owner: root group: root mode: '0644' - name: Reload Caddy to apply new config command: systemctl reload caddy - name: Create update script for blog copy: dest: /usr/local/bin/update-personal-blog.sh content: | #!/bin/bash cd {{ personal_blog_source_dir }} git pull https://{{ personal_blog_git_username }}:${PERSONAL_BLOG_DEPLOY_TOKEN}@forgejo.contrapeso.xyz/counterweight/pablohere.git master rsync -av --delete {{ personal_blog_source_dir }}/{{ personal_blog_source_folder }}/ {{ personal_blog_webroot }}/ chown -R www-data:www-data {{ personal_blog_webroot }} owner: root group: root mode: '0755' - name: Add cron job to update blog every hour cron: name: "Update personal blog" job: "0 * * * * PERSONAL_BLOG_DEPLOY_TOKEN={{ lookup('env', 'PERSONAL_BLOG_DEPLOY_TOKEN') }} /usr/local/bin/update-personal-blog.sh" user: root