Compare commits
6 commits
9aeedc3e78
...
5787a9d792
| Author | SHA1 | Date | |
|---|---|---|---|
|
5787a9d792 |
|||
|
4f2d0ad75b |
|||
|
1f339db312 |
|||
|
c5951647cf |
|||
|
20b24f6df7 |
|||
|
447e87961b |
13 changed files with 124 additions and 56 deletions
|
|
@ -1,6 +1,9 @@
|
||||||
- name: ensure dependencies are installed
|
---
|
||||||
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure dependencies are installed
|
||||||
block:
|
block:
|
||||||
- name: ensure apt dependencies are installed
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure apt dependencies are installed
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
- python3-pip
|
- python3-pip
|
||||||
|
|
@ -9,13 +12,15 @@
|
||||||
state: present
|
state: present
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure SOPS is installed
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure SOPS is installed
|
||||||
ansible.builtin.include_role:
|
ansible.builtin.include_role:
|
||||||
name: community.sops.install
|
name: community.sops.install
|
||||||
|
|
||||||
# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-and-upgrading-ansible-with-pip
|
# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-and-upgrading-ansible-with-pip
|
||||||
# https://www.redhat.com/en/blog/python-venv-ansible
|
# https://www.redhat.com/en/blog/python-venv-ansible
|
||||||
- name: ensure Ansible installation exists
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure Ansible installation exists
|
||||||
ansible.builtin.pip:
|
ansible.builtin.pip:
|
||||||
name:
|
name:
|
||||||
- ansible
|
- ansible
|
||||||
|
|
@ -24,7 +29,8 @@
|
||||||
virtualenv: /usr/local/lib/ansible_pull_venv
|
virtualenv: /usr/local/lib/ansible_pull_venv
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure ansible-pull-failure-notify script installation exists
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure ansible-pull-failure-notify script installation exists
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: ansible-pull-failure-notify.sh.j2
|
src: ansible-pull-failure-notify.sh.j2
|
||||||
dest: /usr/local/sbin/ansible-pull-failure-notify.sh
|
dest: /usr/local/sbin/ansible-pull-failure-notify.sh
|
||||||
|
|
@ -33,7 +39,8 @@
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure secrets directory exists
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure secrets directory exists
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /etc/ansible_pull_secrets
|
path: /etc/ansible_pull_secrets
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -42,7 +49,8 @@
|
||||||
group: "{{ ansible_pull__user }}"
|
group: "{{ ansible_pull__user }}"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure age private key is deployed
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure age private key is deployed
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ ansible_pull__age_private_key }}"
|
content: "{{ ansible_pull__age_private_key }}"
|
||||||
dest: /etc/ansible_pull_secrets/age_private_key
|
dest: /etc/ansible_pull_secrets/age_private_key
|
||||||
|
|
@ -51,7 +59,8 @@
|
||||||
group: "{{ ansible_pull__user }}"
|
group: "{{ ansible_pull__user }}"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure systemd services exists
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure systemd services exists
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: "{{ item }}.j2"
|
src: "{{ item }}.j2"
|
||||||
dest: "/etc/systemd/system/{{ item }}"
|
dest: "/etc/systemd/system/{{ item }}"
|
||||||
|
|
@ -65,7 +74,8 @@
|
||||||
notify:
|
notify:
|
||||||
- systemd daemon reload
|
- systemd daemon reload
|
||||||
|
|
||||||
- name: ensure systemd timer exists
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure systemd timer exists
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: ansible-pull.timer.j2
|
src: ansible-pull.timer.j2
|
||||||
dest: /etc/systemd/system/ansible-pull.timer
|
dest: /etc/systemd/system/ansible-pull.timer
|
||||||
|
|
@ -76,7 +86,8 @@
|
||||||
notify:
|
notify:
|
||||||
- systemd daemon reload
|
- systemd daemon reload
|
||||||
|
|
||||||
- name: ensure systemd timer is started and enabled
|
- tags: ["ansible_pull"]
|
||||||
|
name: ensure systemd timer is started and enabled
|
||||||
ansible.builtin.systemd_service:
|
ansible.builtin.systemd_service:
|
||||||
name: ansible-pull.timer
|
name: ansible-pull.timer
|
||||||
state: started
|
state: started
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
# Ensure the ssh module is disabled, so a cloud-init config change doesn't regenerate the host keys for no reason.
|
# Ensure the ssh module is disabled, so a cloud-init config change doesn't regenerate the host keys for no reason.
|
||||||
- name: check if cloud-init config file exists
|
- tags: ["base_config"]
|
||||||
|
name: check if cloud-init config file exists
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
path: /etc/cloud/cloud.cfg
|
path: /etc/cloud/cloud.cfg
|
||||||
register: base_config__stat_cloud_cfg
|
register: base_config__stat_cloud_cfg
|
||||||
|
|
||||||
- name: ensure the cloud-init ssh module is disabled
|
- tags: ["base_config"]
|
||||||
|
name: ensure the cloud-init ssh module is disabled
|
||||||
ansible.builtin.replace:
|
ansible.builtin.replace:
|
||||||
path: /etc/cloud/cloud.cfg
|
path: /etc/cloud/cloud.cfg
|
||||||
regexp: " - ssh$"
|
regexp: " - ssh$"
|
||||||
|
|
@ -13,7 +15,8 @@
|
||||||
when: base_config__stat_cloud_cfg.stat.exists
|
when: base_config__stat_cloud_cfg.stat.exists
|
||||||
|
|
||||||
# Ensure a base set of admin tools is installed.
|
# Ensure a base set of admin tools is installed.
|
||||||
- name: ensure a base set of admin tools is installed
|
- tags: ["base_config"]
|
||||||
|
name: ensure a base set of admin tools is installed
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
- vim
|
- vim
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
- name: ensure certbot installation
|
---
|
||||||
|
- tags: ["certbot"]
|
||||||
|
name: ensure certbot installation
|
||||||
ansible.builtin.import_tasks:
|
ansible.builtin.import_tasks:
|
||||||
file: main/install.yaml
|
file: main/install.yaml
|
||||||
|
|
||||||
- name: ensure new cert commands
|
- tags: ["certbot"]
|
||||||
|
name: ensure new cert commands
|
||||||
ansible.builtin.import_tasks:
|
ansible.builtin.import_tasks:
|
||||||
file: main/new_cert_commands.yaml
|
file: main/new_cert_commands.yaml
|
||||||
|
|
||||||
- name: ensure certificates
|
- tags: ["certbot"]
|
||||||
|
name: ensure certificates
|
||||||
ansible.builtin.import_tasks:
|
ansible.builtin.import_tasks:
|
||||||
file: main/certs.yaml
|
file: main/certs.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
- name: get expiry date before
|
---
|
||||||
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: get expiry date before
|
||||||
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item.commonName }}/fullchain.pem
|
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item.commonName }}/fullchain.pem
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
register: certbot__cert_expiry_before
|
register: certbot__cert_expiry_before
|
||||||
|
|
||||||
- name: ensure directory for cert configs exists
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: ensure directory for cert configs exists
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/etc/ansible_certbot/cert_configs/"
|
path: "/etc/ansible_certbot/cert_configs/"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -14,7 +17,8 @@
|
||||||
mode: "0750"
|
mode: "0750"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure cert config is stored
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: ensure cert config is stored
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ cert_config_defaults[item.challengeType] | combine(item, recursive=True) | ansible.builtin.to_nice_json }}"
|
content: "{{ cert_config_defaults[item.challengeType] | combine(item, recursive=True) | ansible.builtin.to_nice_json }}"
|
||||||
dest: "/etc/ansible_certbot/cert_configs/{{ item.commonName }}.json"
|
dest: "/etc/ansible_certbot/cert_configs/{{ item.commonName }}.json"
|
||||||
|
|
@ -29,18 +33,21 @@
|
||||||
serverUrl: "https://acmedns.hamburg.ccc.de"
|
serverUrl: "https://acmedns.hamburg.ccc.de"
|
||||||
|
|
||||||
# # https://eff-certbot.readthedocs.io/en/stable/using.html#manual
|
# # https://eff-certbot.readthedocs.io/en/stable/using.html#manual
|
||||||
- name: obtain the certificate using certbot and the manual auth hook
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: obtain the certificate using certbot and the manual auth hook
|
||||||
ansible.builtin.command: /usr/bin/certbot certonly --keep-until-expiring --agree-tos --non-interactive --email "{{ certbot__acme_account_email_address }}" --no-eff-email --manual --preferred-challenge dns --manual-auth-hook "/usr/local/lib/ansible_certbot/manual_auth_scripts/{{ item.challengeType }}.sh" -d "{{ item.commonName }}"
|
ansible.builtin.command: /usr/bin/certbot certonly --keep-until-expiring --agree-tos --non-interactive --email "{{ certbot__acme_account_email_address }}" --no-eff-email --manual --preferred-challenge dns --manual-auth-hook "/usr/local/lib/ansible_certbot/manual_auth_scripts/{{ item.challengeType }}.sh" -d "{{ item.commonName }}"
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
- name: get expiry date after
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: get expiry date after
|
||||||
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item.commonName }}/fullchain.pem
|
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item.commonName }}/fullchain.pem
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
register: certbot__cert_expiry_after
|
register: certbot__cert_expiry_after
|
||||||
|
|
||||||
- name: potentially report changed
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: potentially report changed
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
msg: "If this reports changed, then the certificate expiry date and therefore the certificate changed."
|
msg: "If this reports changed, then the certificate expiry date and therefore the certificate changed."
|
||||||
changed_when: certbot__cert_expiry_before.stdout != certbot__cert_expiry_after.stdout
|
changed_when: certbot__cert_expiry_before.stdout != certbot__cert_expiry_after.stdout
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
- name: obtain http-01 challenge certificates
|
---
|
||||||
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: obtain http-01 challenge certificates
|
||||||
loop: "{{ certbot__certificate_domains }}"
|
loop: "{{ certbot__certificate_domains }}"
|
||||||
ansible.builtin.include_tasks:
|
ansible.builtin.include_tasks:
|
||||||
file: main/http_01_cert.yaml
|
file: main/http_01_cert.yaml
|
||||||
|
|
||||||
- name: validate certs config
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: validate certs config
|
||||||
loop: "{{ certbot__certs }}"
|
loop: "{{ certbot__certs }}"
|
||||||
ansible.builtin.include_tasks:
|
ansible.builtin.include_tasks:
|
||||||
file: main/validate_cert.yaml
|
file: main/validate_cert.yaml
|
||||||
|
|
||||||
- name: obtain certs
|
- tags: ["certbot", "certbot-cert"]
|
||||||
|
name: obtain certs
|
||||||
loop: "{{ certbot__certs }}"
|
loop: "{{ certbot__certs }}"
|
||||||
ansible.builtin.include_tasks:
|
ansible.builtin.include_tasks:
|
||||||
file: main/cert.yaml
|
file: main/cert.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
- name: get expiry date before
|
---
|
||||||
|
- tags: ["certbot", "certbot-http-01-cert"]
|
||||||
|
name: get expiry date before
|
||||||
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item }}/fullchain.pem
|
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item }}/fullchain.pem
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
register: certbot__cert_expiry_before
|
register: certbot__cert_expiry_before
|
||||||
|
|
||||||
- name: obtain the certificate using certbot
|
- tags: ["certbot", "certbot-http-01-cert"]
|
||||||
|
name: obtain the certificate using certbot
|
||||||
ansible.builtin.command: /usr/bin/certbot certonly --keep-until-expiring --agree-tos --non-interactive --email "{{ certbot__acme_account_email_address }}" --no-eff-email --standalone --http-01-port "{{ certbot__http_01_port }}" -d "{{ item }}"
|
ansible.builtin.command: /usr/bin/certbot certonly --keep-until-expiring --agree-tos --non-interactive --email "{{ certbot__acme_account_email_address }}" --no-eff-email --standalone --http-01-port "{{ certbot__http_01_port }}" -d "{{ item }}"
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
- name: get expiry date after
|
- tags: ["certbot", "certbot-http-01-cert"]
|
||||||
|
name: get expiry date after
|
||||||
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item }}/fullchain.pem
|
ansible.builtin.command: /usr/bin/openssl x509 -enddate -noout -in /etc/letsencrypt/live/{{ item }}/fullchain.pem
|
||||||
become: true
|
become: true
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
- name: ensure relevant packages are installed
|
---
|
||||||
|
- tags: ["certbot", "certbot-install"]
|
||||||
|
name: ensure relevant packages are installed
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
- openssl
|
- openssl
|
||||||
|
|
@ -7,9 +9,11 @@
|
||||||
state: present
|
state: present
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure manual auth scripts are deployed
|
- tags: ["certbot", "certbot-install"]
|
||||||
|
name: ensure manual auth scripts are deployed
|
||||||
block:
|
block:
|
||||||
- name: ensure manual auth scripts directory exists
|
- tags: ["certbot", "certbot-install"]
|
||||||
|
name: ensure manual auth scripts directory exists
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/usr/local/lib/ansible_certbot/manual_auth_scripts"
|
path: "/usr/local/lib/ansible_certbot/manual_auth_scripts"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -18,7 +22,8 @@
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure manual auth scripts are deployed
|
- tags: ["certbot", "certbot-install"]
|
||||||
|
name: ensure manual auth scripts are deployed
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: "manual_auth_scripts/{{ item }}.sh"
|
src: "manual_auth_scripts/{{ item }}.sh"
|
||||||
dest: "/usr/local/lib/ansible_certbot/manual_auth_scripts/{{ item }}.sh"
|
dest: "/usr/local/lib/ansible_certbot/manual_auth_scripts/{{ item }}.sh"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
- name: ensure existence of renewal deploy hooks directory
|
---
|
||||||
|
- tags: ["certbot", "certbot-new_cert_commands"]
|
||||||
|
name: ensure existence of renewal deploy hooks directory
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /etc/letsencrypt/renewal-hooks/deploy
|
path: /etc/letsencrypt/renewal-hooks/deploy
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -7,7 +9,8 @@
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure renewal deploy hook commands
|
- tags: ["certbot", "certbot-new_cert_commands"]
|
||||||
|
name: ensure renewal deploy hook commands
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: renewal_deploy_hook_commands.sh.j2
|
src: renewal_deploy_hook_commands.sh.j2
|
||||||
dest: /etc/letsencrypt/renewal-hooks/deploy/ansible_commands.sh
|
dest: /etc/letsencrypt/renewal-hooks/deploy/ansible_commands.sh
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
- name: validate dns-01-acme-dns challenge type config
|
---
|
||||||
|
- tags: ["certbot", "certbot-validate_cert"]
|
||||||
|
name: validate dns-01-acme-dns challenge type config
|
||||||
when: item.challengeType == "dns-01-acme-dns"
|
when: item.challengeType == "dns-01-acme-dns"
|
||||||
block:
|
block:
|
||||||
- name: assert dns_01_acme_dns config exists
|
- tags: ["certbot", "certbot-validate_cert"]
|
||||||
|
name: assert dns_01_acme_dns config exists
|
||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that: item.dns_01_acme_dns is defined
|
that: item.dns_01_acme_dns is defined
|
||||||
|
|
||||||
- name: assert dns_01_acme_dns config is valid
|
- tags: ["certbot", "certbot-validate_cert"]
|
||||||
|
name: assert dns_01_acme_dns config is valid
|
||||||
ansible.builtin.validate_argument_spec:
|
ansible.builtin.validate_argument_spec:
|
||||||
argument_spec: "{{ required_data }}"
|
argument_spec: "{{ required_data }}"
|
||||||
provided_arguments:
|
provided_arguments:
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
- name: docker compose down
|
---
|
||||||
|
- tags: ["docker_compose"]
|
||||||
|
name: docker compose down
|
||||||
community.docker.docker_compose_v2:
|
community.docker.docker_compose_v2:
|
||||||
project_src: /ansible_docker_compose
|
project_src: /ansible_docker_compose
|
||||||
state: absent
|
state: absent
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: docker compose restart
|
- tags: ["docker_compose"]
|
||||||
|
name: docker compose restart
|
||||||
community.docker.docker_compose_v2:
|
community.docker.docker_compose_v2:
|
||||||
project_src: /ansible_docker_compose
|
project_src: /ansible_docker_compose
|
||||||
state: restarted
|
state: restarted
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
- name: make sure the `/ansible_docker_compose` directory exists
|
---
|
||||||
|
- tags: ["docker_compose"]
|
||||||
|
name: make sure the `/ansible_docker_compose` directory exists
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /ansible_docker_compose
|
path: /ansible_docker_compose
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -7,7 +9,8 @@
|
||||||
group: root
|
group: root
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: deploy the Compose file
|
- tags: ["docker_compose"]
|
||||||
|
name: deploy the Compose file
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ docker_compose__compose_file_content }}"
|
content: "{{ docker_compose__compose_file_content }}"
|
||||||
dest: /ansible_docker_compose/compose.yaml
|
dest: /ansible_docker_compose/compose.yaml
|
||||||
|
|
@ -17,7 +20,8 @@
|
||||||
become: true
|
become: true
|
||||||
notify: docker compose down
|
notify: docker compose down
|
||||||
|
|
||||||
- name: deploy the .env file
|
- tags: ["docker_compose"]
|
||||||
|
name: deploy the .env file
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ docker_compose__env_file_content }}"
|
content: "{{ docker_compose__env_file_content }}"
|
||||||
dest: /ansible_docker_compose/.env
|
dest: /ansible_docker_compose/.env
|
||||||
|
|
@ -28,7 +32,8 @@
|
||||||
when: docker_compose__env_file_content is defined
|
when: docker_compose__env_file_content is defined
|
||||||
notify: docker compose down
|
notify: docker compose down
|
||||||
|
|
||||||
- name: make sure the `/ansible_docker_compose/configs` directory exists
|
- tags: ["docker_compose"]
|
||||||
|
name: make sure the `/ansible_docker_compose/configs` directory exists
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /ansible_docker_compose/configs
|
path: /ansible_docker_compose/configs
|
||||||
state: directory
|
state: directory
|
||||||
|
|
@ -37,25 +42,29 @@
|
||||||
group: root
|
group: root
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: set `docker_compose__config_files_to_exist` fact initially to an empty list
|
- tags: ["docker_compose"]
|
||||||
|
name: set `docker_compose__config_files_to_exist` fact initially to an empty list
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
docker_compose__config_files_to_exist: [ ]
|
docker_compose__config_files_to_exist: [ ]
|
||||||
|
|
||||||
- name: add names from `docker_compose__configuration_files` to `docker_compose__config_files_to_exist` fact
|
- tags: ["docker_compose"]
|
||||||
|
name: add names from `docker_compose__configuration_files` to `docker_compose__config_files_to_exist` fact
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
docker_compose__config_files_to_exist: "{{ docker_compose__config_files_to_exist + [ item.name ] }}" # noqa: jinja[spacing]
|
docker_compose__config_files_to_exist: "{{ docker_compose__config_files_to_exist + [ item.name ] }}" # noqa: jinja[spacing]
|
||||||
loop: "{{ docker_compose__configuration_files }}"
|
loop: "{{ docker_compose__configuration_files }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.name }}"
|
label: "{{ item.name }}"
|
||||||
|
|
||||||
- name: find configuration files to remove
|
- tags: ["docker_compose"]
|
||||||
|
name: find configuration files to remove
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
paths: /ansible_docker_compose/configs/
|
paths: /ansible_docker_compose/configs/
|
||||||
recurse: false
|
recurse: false
|
||||||
excludes: "{{ docker_compose__config_files_to_exist }}"
|
excludes: "{{ docker_compose__config_files_to_exist }}"
|
||||||
register: docker_compose__config_files_to_remove
|
register: docker_compose__config_files_to_remove
|
||||||
|
|
||||||
- name: remove all configuration files, which should be removed
|
- tags: ["docker_compose"]
|
||||||
|
name: remove all configuration files, which should be removed
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ item.path }}"
|
path: "{{ item.path }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
|
@ -63,7 +72,8 @@
|
||||||
loop: "{{ docker_compose__config_files_to_remove.files }}"
|
loop: "{{ docker_compose__config_files_to_remove.files }}"
|
||||||
notify: docker compose restart
|
notify: docker compose restart
|
||||||
|
|
||||||
- name: make sure all given configuration files are deployed
|
- tags: ["docker_compose"]
|
||||||
|
name: make sure all given configuration files are deployed
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ item.content }}"
|
content: "{{ item.content }}"
|
||||||
dest: "/ansible_docker_compose/configs/{{ item.name }}"
|
dest: "/ansible_docker_compose/configs/{{ item.name }}"
|
||||||
|
|
@ -76,7 +86,8 @@
|
||||||
label: "{{ item.name }}"
|
label: "{{ item.name }}"
|
||||||
notify: docker compose restart
|
notify: docker compose restart
|
||||||
|
|
||||||
- name: Sync files
|
- tags: ["docker_compose"]
|
||||||
|
name: Sync files
|
||||||
ansible.posix.synchronize:
|
ansible.posix.synchronize:
|
||||||
src: "{{ docker_compose__files }}/"
|
src: "{{ docker_compose__files }}/"
|
||||||
dest: "/ansible_docker_compose/files"
|
dest: "/ansible_docker_compose/files"
|
||||||
|
|
@ -87,10 +98,12 @@
|
||||||
notify: docker compose restart
|
notify: docker compose restart
|
||||||
when: docker_compose__files != ""
|
when: docker_compose__files != ""
|
||||||
|
|
||||||
- name: Flush handlers to make "docker compose down" and "docker compose restart" handlers run now
|
- tags: ["docker_compose"]
|
||||||
|
name: Flush handlers to make "docker compose down" and "docker compose restart" handlers run now
|
||||||
ansible.builtin.meta: flush_handlers
|
ansible.builtin.meta: flush_handlers
|
||||||
|
|
||||||
- name: docker compose up
|
- tags: ["docker_compose"]
|
||||||
|
name: docker compose up
|
||||||
community.docker.docker_compose_v2:
|
community.docker.docker_compose_v2:
|
||||||
project_src: /ansible_docker_compose
|
project_src: /ansible_docker_compose
|
||||||
state: present
|
state: present
|
||||||
|
|
@ -99,13 +112,15 @@
|
||||||
remove_orphans: true
|
remove_orphans: true
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Make sure anacron is installed
|
- tags: ["docker_compose"]
|
||||||
|
name: Make sure anacron is installed
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.package:
|
ansible.builtin.package:
|
||||||
name: anacron
|
name: anacron
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: ensure automatic update cron job is present
|
- tags: ["docker_compose"]
|
||||||
|
name: ensure automatic update cron job is present
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.cron:
|
ansible.builtin.cron:
|
||||||
name: 'ansible docker compose auto update'
|
name: 'ansible docker compose auto update'
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
- name: deploy infrastructure authorized keys
|
---
|
||||||
|
- tags: ["infrastructure_authorized_keys"]
|
||||||
|
name: deploy infrastructure authorized keys
|
||||||
ansible.posix.authorized_key:
|
ansible.posix.authorized_key:
|
||||||
state: present
|
state: present
|
||||||
user: chaos
|
user: chaos
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
- name: ensure msmtp is installed
|
---
|
||||||
|
- tags: ["msmtp"]
|
||||||
|
name: ensure msmtp is installed
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name: msmtp
|
name: msmtp
|
||||||
state: present
|
state: present
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: ensure msmtp config for root user
|
- tags: ["msmtp"]
|
||||||
|
name: ensure msmtp config for root user
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: msmtprc.j2
|
src: msmtprc.j2
|
||||||
dest: /root/.msmtprc
|
dest: /root/.msmtprc
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue