Added all files
This commit is contained in:
BIN
examples/012_mysql_management/.clean-database.yml.swp
Normal file
BIN
examples/012_mysql_management/.clean-database.yml.swp
Normal file
Binary file not shown.
8
examples/012_mysql_management/control.yml
Normal file
8
examples/012_mysql_management/control.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- hosts: control
|
||||
become: true
|
||||
tasks:
|
||||
- name: install tools
|
||||
apt: name={{item}} state=present update_cache=yes
|
||||
with_items:
|
||||
- curl
|
||||
21
examples/012_mysql_management/database.yml
Normal file
21
examples/012_mysql_management/database.yml
Normal 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
|
||||
20
examples/012_mysql_management/demo/app/demo.py
Normal file
20
examples/012_mysql_management/demo/app/demo.py
Normal 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()
|
||||
10
examples/012_mysql_management/demo/app/demo.wsgi
Normal file
10
examples/012_mysql_management/demo/app/demo.wsgi
Normal 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
|
||||
9
examples/012_mysql_management/demo/app/requirements.txt
Normal file
9
examples/012_mysql_management/demo/app/requirements.txt
Normal 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
|
||||
11
examples/012_mysql_management/demo/demo.conf
Normal file
11
examples/012_mysql_management/demo/demo.conf
Normal 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>
|
||||
25
examples/012_mysql_management/loadbalancer.yml
Normal file
25
examples/012_mysql_management/loadbalancer.yml
Normal 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
|
||||
@@ -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
|
||||
5
examples/012_mysql_management/playbook/hostname.yml
Normal file
5
examples/012_mysql_management/playbook/hostname.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: get server hostname
|
||||
command: hostname
|
||||
28
examples/012_mysql_management/playbook/stack_restart.yml
Normal file
28
examples/012_mysql_management/playbook/stack_restart.yml
Normal 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
|
||||
13
examples/012_mysql_management/templates/nginx.conf.j2
Normal file
13
examples/012_mysql_management/templates/nginx.conf.j2
Normal file
@@ -0,0 +1,13 @@
|
||||
upstream demo {
|
||||
{% for server in groups.webserver %}
|
||||
server {{ server }};
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
proxy_pass http://demo;
|
||||
}
|
||||
}
|
||||
42
examples/012_mysql_management/webserver.yml
Normal file
42
examples/012_mysql_management/webserver.yml
Normal 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
|
||||
Reference in New Issue
Block a user