surok/docs/Templates.md

226 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2017-01-12 12:43:30 +03:00
# Templates
2017-01-12 13:11:01 +03:00
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
**Table of Contents**
- [Templates](#templates)
- [my dictionary in templates](#my-dictionary-in-templates)
2017-02-07 12:41:43 +03:00
- [0.8 version](#08-version)
- [Real template example](#real-template-example)
- [Checks in template](#checks-in-template)
- [0.7 version](#07-version)
- [Real template example](#real-template-example)
2017-01-12 13:11:01 +03:00
<!-- markdown-toc end -->
2017-01-12 12:43:30 +03:00
Surok using Jinja2 for templates. [Jinja2 documentation](http://jinja.pocoo.org/docs/dev/)
## my dictionary in templates
2017-02-07 12:41:43 +03:00
### 0.8 version
```
{
"services": {
"asterisk": [
{
"name": "nginx.testing-kl92-s0.marathon.mesos.",
"ip": [
"10.0.0.1",
"11.0.0.1"
],
"tcp": {
"rpc":31200,
"web":31201,
"sip":32000
},
"udp": {
"sip":31201
}
},
{
"name": "nginx.testing-kl123-s1.marathon.mesos.",
"ip": [
"10.0.0.2",
"11.0.0.2"
],
"tcp": {
"rpc":31210,
"web":31211,
"sip":32010
},
"udp": {
"sip":31211
}
}
],
"email": [
{
"name": "nginx.testing-kl92-s0.marathon.mesos.",
"ip": [
"10.0.0.1"
],
"tcp": {
"smtp":31200,
"pop":31201
}
}
],
"anyport": [
{
"name": "nginx.testing-kl92-s0.marathon.mesos.",
"ip": [
"10.0.0.1"
],
"tcp": [
31200,
31201
]
}
]
"env": {
"HOME": "/var/lib/nginx"
}
}
```
#### Real template example
nginx config
```
upstream matrix-http {
hash $remote_addr;
{% for server in my['services']['matrix']['http'] %}
server {{server['name']}}:{{server['port']}} max_fails=3;
{% endfor %}
}
upstream riot-http {
hash $remote_addr;
{% for server in my['services']['riot'] %}
server {{server['name']}}:{{server['port']}} max_fails=3;
{% endfor %}
}
server {
listen 10.15.56.157:80;
server_name matrix.example.com;
client_max_body_size 10m;
location / {
proxy_pass http://riot-http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /_matrix/ {
proxy_pass http://matrix-http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
#### Checks in template
_my['env']_ is a python os.environ class. Look bellow:
```
{% if my['env'].get('DB_HOST') %}
host = '{{my['env']['DB_HOST']}}'
{% else %}
host = 'localhost'
{% endif %}
```
### 0.7 version
my dictionary in template
2017-01-12 12:43:30 +03:00
```
{
"services": {
"nginx": [
{
"name": "nginx.testing-kl92-s0.marathon.mesos.",
2017-02-07 12:41:43 +03:00
"port": "31200"
2017-01-12 12:43:30 +03:00
},
{
"name": "nginx.testing-kl123-s1.marathon.mesos.",
2017-02-07 12:41:43 +03:00
"port": "32230"
2017-01-12 12:43:30 +03:00
}
],
"emailsender": [
{
"name": "emailsender.testing-kl92-s0.marathon.mesos.",
2017-02-07 12:41:43 +03:00
"port": "31201"
2017-01-12 12:43:30 +03:00
},
{
"name": "emailsender.testing-kl123-s1.marathon.mesos.",
2017-02-07 12:41:43 +03:00
"port": "32232"
2017-01-12 12:43:30 +03:00
}
],
"service-with-defined-ports": {
2017-02-07 12:41:43 +03:00
"name-of-port0": [
2017-01-12 12:43:30 +03:00
{
"name": "f.q.d.n",
"port": 12341
}
],
2017-02-07 12:41:43 +03:00
"name-of-port2": [
2017-01-12 12:43:30 +03:00
{
"name": "f.q.d.n",
"port": 12342
}
]
}
},
"env": {
"HOME": "/var/lib/nginx"
}
}
```
2017-02-07 12:41:43 +03:00
#### Real template example
2017-01-12 12:43:30 +03:00
```
upstream matrix-http {
hash $remote_addr;
{% for server in my['services']['matrix']['http'] %}
server {{server['name']}}:{{server['port']}} max_fails=3;
{% endfor %}
}
2017-02-07 12:41:43 +03:00
2017-01-12 12:43:30 +03:00
upstream riot-http {
hash $remote_addr;
{% for server in my['services']['riot'] %}
server {{server['name']}}:{{server['port']}} max_fails=3;
{% endfor %}
}
2017-02-07 12:41:43 +03:00
2017-01-12 12:43:30 +03:00
server {
listen 10.15.56.157:80;
server_name matrix.example.com;
2017-02-07 12:41:43 +03:00
2017-01-12 12:43:30 +03:00
client_max_body_size 10m;
2017-02-07 12:41:43 +03:00
2017-01-12 12:43:30 +03:00
location / {
proxy_pass http://riot-http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2017-02-07 12:41:43 +03:00
2017-01-12 12:43:30 +03:00
location /_matrix/ {
proxy_pass http://matrix-http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2017-02-07 12:41:43 +03:00
}
2017-01-12 12:43:30 +03:00
```