update
This commit is contained in:
parent
8a7c4f3724
commit
6a2fbcee07
11
Playbooks/servers/install-core.yml
Normal file
11
Playbooks/servers/install-core.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
- hosts: "{{ hosts }}"
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: install core packages
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- prometheus-node-exporter
|
||||||
|
- nfs-common
|
||||||
|
update_cache: yes
|
29
Playbooks/servers/install-docker.yml
Normal file
29
Playbooks/servers/install-docker.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
- hosts:
|
||||||
|
- srv-prod-1.home.clcreative.de
|
||||||
|
- srv-prod-2.home.clcreative.de
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
# Breaks existing Docker Servers!
|
||||||
|
# Change Tasks for separate group!
|
||||||
|
|
||||||
|
# Install Docker
|
||||||
|
# - name: install prerequisites
|
||||||
|
# apt:
|
||||||
|
# name:
|
||||||
|
# - docker.io
|
||||||
|
# update_cache: yes
|
||||||
|
|
||||||
|
# - name: add user permissions
|
||||||
|
# shell: "usermod -aG docker {{ ansible_env.SUDO_USER }}"
|
||||||
|
|
||||||
|
# - name: Reset ssh connection for changes to take effect
|
||||||
|
# meta: "reset_connection"
|
||||||
|
|
||||||
|
# Install Docker Compose
|
||||||
|
- name: install docker-compose
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- docker-compose
|
||||||
|
update_cache: yes
|
23
Playbooks/servers/install-sshauth.yml
Normal file
23
Playbooks/servers/install-sshauth.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
- hosts: all
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
# Deploy SSH Key
|
||||||
|
# --
|
||||||
|
- name: install public keys
|
||||||
|
ansible.posix.authorized_key:
|
||||||
|
user: "{{ lookup('env','USER') }}"
|
||||||
|
state: present
|
||||||
|
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
|
||||||
|
|
||||||
|
|
||||||
|
# Set all sudoers to no password
|
||||||
|
# --
|
||||||
|
- name: change sudoers file
|
||||||
|
lineinfile:
|
||||||
|
path: /etc/sudoers
|
||||||
|
state: present
|
||||||
|
regexp: '^%sudo'
|
||||||
|
line: '%sudo ALL=(ALL) NOPASSWD: ALL'
|
||||||
|
validate: /usr/sbin/visudo -cf %s
|
19
Playbooks/servers/install-vm-core.yml
Normal file
19
Playbooks/servers/install-vm-core.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
- hosts: "{{ hosts }}"
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: install core packages
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- prometheus-node-exporter
|
||||||
|
- nfs-common
|
||||||
|
- qemu-guest-agent
|
||||||
|
- unzip
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: start guest qemu-guest-agent
|
||||||
|
service:
|
||||||
|
name: qemu-guest-agent
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
29
Playbooks/servers/update-aptpackages.yml
Normal file
29
Playbooks/servers/update-aptpackages.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
- hosts: "{{ hosts }}"
|
||||||
|
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
# Upgrade packages
|
||||||
|
- name: upgrade apt packages
|
||||||
|
become: true
|
||||||
|
apt:
|
||||||
|
upgrade: yes
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
# Check if reboot is required
|
||||||
|
- name: check if system reboot is required
|
||||||
|
become: true
|
||||||
|
stat:
|
||||||
|
path: /var/run/reboot-required
|
||||||
|
register: reboot_required
|
||||||
|
|
||||||
|
# Send Discord message when reboot is required
|
||||||
|
- name: Send Discord message
|
||||||
|
uri:
|
||||||
|
url: "{{ discord_webhook_url }}"
|
||||||
|
method: POST
|
||||||
|
body_format: json
|
||||||
|
body: '{"content": "Reboot required on {{ inventory_hostname }}"}'
|
||||||
|
headers:
|
||||||
|
Content-Type: application/json
|
||||||
|
status_code: 204
|
||||||
|
when: reboot_required.stat.exists
|
23
Playbooks/servers/update-diskspace.yml
Normal file
23
Playbooks/servers/update-diskspace.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
- hosts: "{{ hosts }}"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Get disk usage
|
||||||
|
command: df -h
|
||||||
|
register: disk_usage
|
||||||
|
|
||||||
|
- name: Check disk space available
|
||||||
|
shell: df -h / | awk 'NR==2 {print $5}'
|
||||||
|
register: disk_usage
|
||||||
|
|
||||||
|
# Send Discord message when disk space is over 80%
|
||||||
|
- name: Send Discord message
|
||||||
|
uri:
|
||||||
|
url: "{{ discord_webhook_url }}"
|
||||||
|
method: POST
|
||||||
|
body_format: json
|
||||||
|
body: '{"content": "Disk space on {{ inventory_hostname }} is above 80%!"}'
|
||||||
|
headers:
|
||||||
|
Content-Type: application/json
|
||||||
|
status_code: 204
|
||||||
|
when: disk_usage.stdout[:-1]|int > 80
|
13
Playbooks/servers/update-dockercleanup.yml
Normal file
13
Playbooks/servers/update-dockercleanup.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
- hosts: "{{ hosts }}"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Prune non-dangling, and dangling images
|
||||||
|
community.docker.docker_prune:
|
||||||
|
containers: false
|
||||||
|
images: true
|
||||||
|
images_filters:
|
||||||
|
dangling: false
|
||||||
|
networks: false
|
||||||
|
volumes: false
|
||||||
|
builder_cache: false
|
42
ansiblesemaphore-prod-1/docker-compose.yaml
Normal file
42
ansiblesemaphore-prod-1/docker-compose.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
networks:
|
||||||
|
frontend:
|
||||||
|
external: true
|
||||||
|
backend:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
semaphore:
|
||||||
|
container_name: ansiblesemaphore-prod-1
|
||||||
|
image: semaphoreui/semaphore:v2.9.64
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 3000:3000
|
||||||
|
environment:
|
||||||
|
- SEMAPHORE_DB_USER=ansiblesemaphore-prod-1-user
|
||||||
|
- SEMAPHORE_DB_PASS=${SEMAPHORE_DB_PASS:?error}
|
||||||
|
- SEMAPHORE_DB_HOST=db-prod-1.home.clcreative.de
|
||||||
|
- SEMAPHORE_DB_PORT=3306
|
||||||
|
- SEMAPHORE_DB_DIALECT=mysql
|
||||||
|
- SEMAPHORE_DB=ansiblesemaphore_prod_1_db
|
||||||
|
- SEMAPHORE_PLAYBOOK_PATH=/tmp/semaphore/
|
||||||
|
- SEMAPHORE_ADMIN_PASSWORD=${SEMAPHORE_ADMIN_PASSWORD-}
|
||||||
|
- SEMAPHORE_ADMIN_NAME=admin
|
||||||
|
- SEMAPHORE_ADMIN_EMAIL=admin@localhost
|
||||||
|
- SEMAPHORE_ADMIN=${SEMAPHORE_ADMIN:-admin}
|
||||||
|
- SEMAPHORE_ACCESS_KEY_ENCRYPTION=${SEMAPHORE_ACCESS_KEY_ENCRYPTION:?error}
|
||||||
|
- ANSIBLE_HOST_KEY_CHECKING=false
|
||||||
|
volumes:
|
||||||
|
- ./inventory/:/inventory:ro
|
||||||
|
- ./authorized-keys/:/authorized-keys:ro
|
||||||
|
- ./config/:/etc/semaphore:rw
|
||||||
|
labels:
|
||||||
|
traefik.enable: "true"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-http.entrypoints: "web"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-http.rule: "Host(`ansiblesemaphore-prod-1.srv-prod-1.home.clcreative.de`)"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-https.entrypoints: "websecure"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-https.rule: "Host(`ansiblesemaphore-prod-1.srv-prod-1.home.clcreative.de`)"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-https.tls: "true"
|
||||||
|
traefik.http.routers.ansiblesemaphore-prod-1-https.tls.certresolver: "cloudflare"
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- backend
|
30
inventory/clcreative
Normal file
30
inventory/clcreative
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
[srv-prod]
|
||||||
|
srv-prod-1.home.clcreative.de
|
||||||
|
srv-prod-2.home.clcreative.de
|
||||||
|
srv-prod-3.home.clcreative.de
|
||||||
|
srv-prod-4.home.clcreative.de
|
||||||
|
srv-prod-5.home.clcreative.de
|
||||||
|
srv-prod-6.home.clcreative.de
|
||||||
|
srv-prod-7.home.clcreative.de
|
||||||
|
|
||||||
|
[srv-demo]
|
||||||
|
srv-demo-1.home.clcreative.de
|
||||||
|
srv-demo-2.home.clcreative.de
|
||||||
|
srv-demo-3.home.clcreative.de
|
||||||
|
srv-demo-4.home.clcreative.de
|
||||||
|
srv-demo-5.home.clcreative.de
|
||||||
|
|
||||||
|
[vm-prod]
|
||||||
|
srv-prod-1.home.clcreative.de
|
||||||
|
srv-prod-2.home.clcreative.de
|
||||||
|
srv-prod-3.home.clcreative.de
|
||||||
|
srv-prod-4.home.clcreative.de
|
||||||
|
srv-prod-5.home.clcreative.de
|
||||||
|
srv-prod-6.home.clcreative.de
|
||||||
|
|
||||||
|
[vm-demo]
|
||||||
|
srv-demo-1.home.clcreative.de
|
||||||
|
srv-demo-2.home.clcreative.de
|
||||||
|
srv-demo-3.home.clcreative.de
|
||||||
|
srv-demo-4.home.clcreative.de
|
||||||
|
srv-demo-5.home.clcreative.de
|
Loading…
x
Reference in New Issue
Block a user