Added all files

This commit is contained in:
2025-05-30 09:53:45 +02:00
commit e1e343667a
885 changed files with 22353 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,8 @@
---
- hosts: control
become: true
tasks:
- name: install tools
apt: name={{item}} state=present update_cache=yes
with_items:
- curl

View File

@@ -0,0 +1,21 @@
---
- hosts: database
become: true
tasks:
- name: install tools
apt: name={{item}} state=present update_cache=yes
with_items:
- python3-mysqldb
- mysql-server
- name: ensure mysql started
service: name=mysql state=started enabled=yes
- name: ensure mysql listening on all ports
lineinfile: dest=/etc/mysql/my.cnf regexp=^bind-address line="bind-address = 0.0.0.0"
- name: create demo database
mysql_db: name=demo state=present
- name: create demo user
mysql_user: name=demo password=demo priv=demo.*:ALL host='%' state=present

View File

@@ -0,0 +1,20 @@
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os, socket
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URI']
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
hostname = socket.gethostname()
@app.route('/')
def index():
return 'Hello, from sunny %s!\n' % hostname
@app.route('/db')
def dbtest():
return 'Database Connected from %s!\n' % hostname
if __name__ == '__main__':
app.run()

View File

@@ -0,0 +1,10 @@
activate_this = '/var/www/demo/.venv/bin/activate_this.py'
exec(open(activate_this).read(), {'__file__': activate_this})
import os
os.environ['DATABASE_URI'] = 'mysql://demo:demo@db01/demo'
import sys
sys.path.insert(0, '/var/www/demo')
from demo import app as application

View File

@@ -0,0 +1,9 @@
click==7.1.2
Flask==1.1.4
Flask-SQLAlchemy==2.5.1
greenlet==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==2.0.1
SQLAlchemy==1.4.32
Werkzeug==1.0.1

View File

@@ -0,0 +1,11 @@
<VirtualHost *>
WSGIDaemonProcess demo threads=5
WSGIScriptAlias / /var/www/demo/demo.wsgi
<Directory /var/www/demo>
WSGIProcessGroup demo
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>

View File

@@ -0,0 +1,25 @@
---
- hosts: loadbalancer
become: true
tasks:
- name: install nginx
apt: name=nginx state=present update_cache=yes
- name: ensure nginx started
service: name=nginx state=started enabled=yes
- name: configure nginx site
template: src=templates/nginx.conf.j2 dest=/etc/nginx/sites-available/demo mode=0644
notify: restart nginx
- name: de-activate default nginx site
file: path=/etc/nginx/sites-enabled/default state=absent
notify: restart nginx
- name: activate demo nginx site
file: src=/etc/nginx/sites-available/demo dest=/etc/nginx/sites-enabled/demo state=link
notify: restart nginx
handlers:
- name: restart nginx
service: name=nginx state=restarted

View File

@@ -0,0 +1,9 @@
---
- hosts: database
become: true
tasks:
- name: create demo database
mysql_db: name=demo state=absent
- name: create demo user
mysql_user: name=demo password=demo priv=demo.*:ALL host='%' state=absent

View File

@@ -0,0 +1,5 @@
---
- hosts: all
tasks:
- name: get server hostname
command: hostname

View File

@@ -0,0 +1,28 @@
---
# Bring stack down
- hosts: loadbalancer
become: true
tasks:
- service: name=nginx state=stopped
- hosts: webserver
become: true
tasks:
- service: name=apache2 state=stopped
# Restart mysql - commented problem with the VMs
- hosts: database
become: true
tasks:
- service: name=mysql state=restarted
# Bring stack up
- hosts: webserver
become: true
tasks:
- service: name=apache2 state=started
- hosts: loadbalancer
become: true
tasks:
- service: name=nginx state=started

View File

@@ -0,0 +1,13 @@
upstream demo {
{% for server in groups.webserver %}
server {{ server }};
{% endfor %}
}
server {
listen 80;
location / {
proxy_pass http://demo;
}
}

View File

@@ -0,0 +1,42 @@
---
- hosts: webserver
become: true
tasks:
- name: install web components
apt: name={{item}} state=present update_cache=yes
with_items:
- apache2
- libapache2-mod-wsgi-py3
- python-pip-whl
- python3-virtualenv
- name: ensure apache2 started
service: name=apache2 state=started enabled=yes
- name: ensure mod_wsgi enabled
apache2_module: state=present name=wsgi
notify: restart apache2
- name: copy demo app source
copy: src=demo/app/ dest=/var/www/demo mode=0755
notify: restart apache2
- name: copy apache virtual host config
copy: src=demo/demo.conf dest=/etc/apache2/sites-available mode=0755
notify: restart apache2
- name: setup python virtualenv
pip: requirements=/var/www/demo/requirements.txt virtualenv=/var/www/demo/.venv
notify: restart apache2
- name: de-activate default apache site
file: path=/etc/apache2/sites-enabled/000-default.conf state=absent
notify: restart apache2
- name: activate demo apache site
file: src=/etc/apache2/sites-available/demo.conf dest=/etc/apache2/sites-enabled/demo.conf state=link
notify: restart apache2
handlers:
- name: restart apache2
service: name=apache2 state=restarted