104 lines
2.8 KiB
YAML
104 lines
2.8 KiB
YAML
- name: Подготовка директории
|
|
become: true
|
|
ansible.builtin.file:
|
|
state: directory
|
|
path: /opt/nginx
|
|
mode: "0755"
|
|
|
|
- name: Проверка наличия сертификата
|
|
ansible.builtin.stat:
|
|
path: /opt/nginx/ssl/cert.pem
|
|
register: cert_file
|
|
|
|
- name: Проверка наличия приватного ключа
|
|
ansible.builtin.stat:
|
|
path: /opt/nginx/ssl/key.pem
|
|
register: key_file
|
|
|
|
- name: Создание директории для сертификатов
|
|
become: true
|
|
ansible.builtin.file:
|
|
path: /opt/nginx/ssl
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: '0755'
|
|
when: not cert_file.stat.exists or not key_file.stat.exists
|
|
|
|
- name: Генерация приватного ключа
|
|
become: true
|
|
community.crypto.openssl_privatekey:
|
|
path: /opt/nginx/ssl/key.pem
|
|
size: 2048
|
|
owner: root
|
|
group: 101
|
|
mode: '0640'
|
|
when: not cert_file.stat.exists or not key_file.stat.exists
|
|
|
|
- name: Генерация CSR
|
|
become: true
|
|
community.crypto.openssl_csr:
|
|
path: /opt/nginx/ssl/nginx.csr
|
|
privatekey_path: /opt/nginx/ssl/key.pem
|
|
common_name: nginx.local
|
|
subject_alt_name:
|
|
- "DNS:nginx.local"
|
|
- "DNS:localhost"
|
|
- "IP:{{ansible_facts['default_ipv4']['address']}}"
|
|
when: not cert_file.stat.exists or not key_file.stat.exists
|
|
|
|
- name: Генерация самоподписанного сертификата
|
|
become: true
|
|
community.crypto.x509_certificate:
|
|
path: /opt/nginx/ssl/cert.pem
|
|
privatekey_path: /opt/nginx/ssl/key.pem
|
|
csr_path: /opt/nginx/ssl/nginx.csr
|
|
provider: selfsigned
|
|
selfsigned_not_after: "+3650d"
|
|
when: not cert_file.stat.exists or not key_file.stat.exists
|
|
|
|
- name: Изменение прав на сертификат
|
|
become: true
|
|
ansible.builtin.file:
|
|
path: /opt/nginx/ssl/cert.pem
|
|
owner: root
|
|
group: "101"
|
|
mode: "0644"
|
|
|
|
- name: Копирование файлов конфигурации
|
|
become: true
|
|
ansible.builtin.copy:
|
|
src: "{{item}}"
|
|
dest: "/opt/nginx/{{item}}"
|
|
mode: "0755"
|
|
loop:
|
|
- nginx.conf
|
|
- Dockerfile
|
|
- index.html
|
|
- docker-compose.yaml
|
|
- backup.sh
|
|
|
|
- name: Подготовка директории бекапов
|
|
become: true
|
|
ansible.builtin.file:
|
|
state: directory
|
|
path: /opt/nginx/backups
|
|
mode: "0755"
|
|
|
|
- name: Настройка еженедельного резервного копирования Nginx
|
|
become: true
|
|
ansible.builtin.cron:
|
|
name: "nginx configuration backup"
|
|
minute: "0"
|
|
hour: "1"
|
|
weekday: "1"
|
|
job: "/opt/nginx/backup.sh"
|
|
env: false
|
|
|
|
- name: Сборка и запуск Docker Compose
|
|
community.docker.docker_compose_v2:
|
|
project_src: /opt/nginx
|
|
state: present
|
|
build: always
|
|
become: true
|