mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-29 23:08:06 +02:00
renamed and optimized homepage role
This commit is contained in:
33
roles/nginx-homepage/Readme.md
Normal file
33
roles/nginx-homepage/Readme.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Nginx Homepage Role
|
||||
|
||||
This Ansible role configures an Nginx server to serve a static homepage. It handles domain configuration, SSL certificate retrieval with Let's Encrypt, and cloning the homepage content from a Git repository.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Ansible 2.9 or higher
|
||||
- Nginx installed on the target machine
|
||||
- Git installed on the target machine (if cloning a repo)
|
||||
- `https-server` and `git` roles available or configured if they are used as dependencies
|
||||
|
||||
## Role Variables
|
||||
|
||||
- `nginx_homepage_root`: The directory where the homepage content will be stored (default: `/usr/share/nginx/homepage`)
|
||||
- `domain`: The domain name for the Nginx server configuration
|
||||
- `administrator_email`: The email used for SSL certificate registration with Let's Encrypt
|
||||
- `nginx_homepage_repository_address`: The Git repository address containing the homepage content
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `https-server`: A role for setting up an HTTPS server
|
||||
- `git`: A role for installing Git
|
||||
|
||||
## Example Playbook
|
||||
|
||||
```yaml
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: nginx-homepage, domain: 'example.com', administrator_email: 'admin@example.com' }
|
||||
```
|
||||
|
||||
## Author Information
|
||||
This role was created in 2023 by Kevin Veen Birkenbach.
|
3
roles/nginx-homepage/meta/main.yml
Normal file
3
roles/nginx-homepage/meta/main.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
dependencies:
|
||||
- https-server
|
||||
- git
|
19
roles/nginx-homepage/tasks/main.yml
Normal file
19
roles/nginx-homepage/tasks/main.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
- name: configure {{domain}}.conf
|
||||
template: src=homepage.nginx.conf.j2 dest=/etc/nginx/conf.d/{{domain}}.conf
|
||||
notify: restart nginx
|
||||
|
||||
- name: recieve {{domain}} certificate
|
||||
command: certbot certonly --agree-tos --email {{administrator_email}} --non-interactive --webroot -w /var/lib/letsencrypt/ -d {{domain}}
|
||||
|
||||
- name: nginx-homepage repo git
|
||||
git:
|
||||
repo: "{{nginx_homepage_repository_address}}"
|
||||
dest: "{{nginx_homepage_root}}"
|
||||
update: yes
|
||||
register: git_result
|
||||
ignore_errors: true
|
||||
|
||||
- name: Warn if repo is not reachable
|
||||
debug:
|
||||
msg: "Warning: Repository is not reachable."
|
||||
when: git_result.failed
|
15
roles/nginx-homepage/templates/homepage.nginx.conf.j2
Normal file
15
roles/nginx-homepage/templates/homepage.nginx.conf.j2
Normal file
@@ -0,0 +1,15 @@
|
||||
#default
|
||||
server
|
||||
{
|
||||
server_name {{domain}};
|
||||
|
||||
{% include 'roles/letsencrypt/templates/ssl_header.j2' %}
|
||||
|
||||
charset utf-8;
|
||||
|
||||
location /
|
||||
{
|
||||
root /usr/share/nginx/homepage;
|
||||
index index.html index.htm;
|
||||
}
|
||||
}
|
1
roles/nginx-homepage/vars/main.yml
Normal file
1
roles/nginx-homepage/vars/main.yml
Normal file
@@ -0,0 +1 @@
|
||||
nginx_homepage_root: /usr/share/nginx/homepage
|
Reference in New Issue
Block a user