Initial version
This commit is contained in:
commit
32c209be71
18
README.md
Normal file
18
README.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Ansible role to launch a new container
|
||||
|
||||
To be used in the LXD host (currently **servidora1e0.bogota.agofer**), via
|
||||
`ansible-pull`.
|
||||
|
||||
```sh
|
||||
ansible-pull \
|
||||
-U ssh://git@gitea.agofer.net:22001/jegomez/ansible-role-launch-container.git \
|
||||
-e nombre=<newodoocontainer>
|
||||
```
|
||||
|
||||
* Launches a new container called **newodoocontainer**.
|
||||
* Creates a DNS alias for **externo.agofer.net** called
|
||||
**newodoocontainer.agofer.net**.
|
||||
* Registers this container in the existing Nginx Proxy container.
|
||||
* Requests an SSL certificate to _Let's Encrypt_ for the new domain, storing
|
||||
the certificates in the Nginx Proxy container.
|
||||
|
||||
2
hosts
Normal file
2
hosts
Normal file
@ -0,0 +1,2 @@
|
||||
localhost ansible_connection=local
|
||||
nginx ansible_connection=lxd
|
||||
12
local.yml
Normal file
12
local.yml
Normal file
@ -0,0 +1,12 @@
|
||||
- hosts: localhost
|
||||
gather_facts: yes
|
||||
user: sistemas
|
||||
roles:
|
||||
- lxchost
|
||||
vars:
|
||||
dominio: agofer.net
|
||||
|
||||
- hosts: nginx
|
||||
gather_facts: no
|
||||
roles:
|
||||
- nginxproxy
|
||||
46
roles/lxchost/tasks/lxd_profile.yml
Normal file
46
roles/lxchost/tasks/lxd_profile.yml
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
- name: Create or verify Odoo LXD profile
|
||||
lxd_profile:
|
||||
name: odoo
|
||||
description: LXD profile for Odoo v8
|
||||
config:
|
||||
user.vendor-data: |
|
||||
#cloud-config
|
||||
package_upgrade: true
|
||||
packages:
|
||||
- python3-pip
|
||||
users:
|
||||
- name: root
|
||||
ssh-import-id: gh:jorgeegomez
|
||||
write_files:
|
||||
- encoding: gzip
|
||||
owner: root:root
|
||||
path: /root/.ssh/id_ed25519
|
||||
permissions: '0600'
|
||||
content: !!binary |
|
||||
'{{ privkey | string | b64encode }}'
|
||||
- encoding: gzip
|
||||
owner: root:root
|
||||
path: /root/.ssh/id_ed25519.pub
|
||||
permissions: '0644'
|
||||
content: !!binary |
|
||||
'{{ pubkey | string | b64encode }}'
|
||||
- encoding: gzip
|
||||
owner: root:root
|
||||
path: /root/.ssh/known_hosts
|
||||
permissions: '0644'
|
||||
content: !!binary |
|
||||
'{{ known_hosts | string | b64encode }}'
|
||||
runcmd:
|
||||
- pip3 install ansible psycopg2-binary
|
||||
- [ ansible-pull, -U, "ssh://git@gitea.agofer.net:22001/jegomez/ansible-role-odoo8container.git" ]
|
||||
devices:
|
||||
nat01:
|
||||
nictype: bridged
|
||||
parent: nat01
|
||||
type: nic
|
||||
root:
|
||||
path: /
|
||||
pool: default
|
||||
type: disk
|
||||
|
||||
22
roles/lxchost/tasks/main.yml
Normal file
22
roles/lxchost/tasks/main.yml
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
|
||||
- set_fact:
|
||||
container: '{{ nombre | urlencode | lower | regex_replace('_', '-') }}'
|
||||
|
||||
# - import_playbook: lxd_profile.yml
|
||||
|
||||
- name: Launch LXD container
|
||||
lxd_container:
|
||||
name: '{{ container }}'
|
||||
ephemeral: no
|
||||
profiles: ['odoo']
|
||||
source:
|
||||
type: image
|
||||
mode: pull
|
||||
server: https://cloud-images.ubuntu.com/releases
|
||||
protocol: simplestreams
|
||||
alias: ubuntu/18.04
|
||||
|
||||
- name: Register DNS CNAME alias using Dreamhost API
|
||||
shell:
|
||||
cmd: curl "https://api.dreamhost.com/?key={{ apikey }}&cmd=dns-add_record&record={{ container }}.{{ dominio }}&type=CNAME&value=externo.{{ dominio }}."
|
||||
77
roles/lxchost/vars/main.yml
Normal file
77
roles/lxchost/vars/main.yml
Normal file
@ -0,0 +1,77 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
36353334653735326335326432396130633431376661626362653661383563653830633234333162
|
||||
3233303235333236313865316435336535333332303538660a623664646263383534313033633937
|
||||
63633231323539373062653632616631333136336332633739323163306533653330313664393230
|
||||
3834373434656162320a316462663631663231343834613639616461386666653963393334373231
|
||||
33316435383761363138626465316339386136386164393835633938666264313635663233373834
|
||||
38343731356436646132323165633065633135353936386464663436333964383834343563353563
|
||||
62653833306131363933366566353938613363666263363862646530383634313564633831323834
|
||||
34333431383232303631376430626461383835666635636630343036363435636133613734663937
|
||||
64356635613562333338383464326661646666633332393565303131626534353765616134613565
|
||||
36303137633135326666313133636636623931643433316239363135613063646163666636303536
|
||||
63613037646666666666646264366438633836346264636264356631353165656431396365356161
|
||||
30383635333966643535396163326635363764636437303530323537343066316133346539366238
|
||||
34363035306132343834643232323230623964356433623431373133613032396431326436363366
|
||||
64353064306230313634396335333633386264356237393537386133343939366664626466666533
|
||||
65333762356365396338666533616136303262373862383862323463326562623037323765633539
|
||||
63346262636638303238666363613064303734623662323462613866666132326262326138356338
|
||||
32636133383162633364343561663435393931353763646361336562346533616564326638646565
|
||||
61323962353661643637643437313164383832333133303965336132626665663962346237643334
|
||||
63666635393865336436353261626564326566333633373865303239653464326238633938393666
|
||||
62383033633633633033303331393132313732613336316661343763316139323731303665333535
|
||||
31343637646662643663326531366565616634346365356439313661383037346264653933376563
|
||||
61646630333330353636333038663332643366323132636366373537303533326663623330303830
|
||||
33316135343163343664643832393761373738633666656361343936393337623932343438316236
|
||||
62313130623939373865346665663331663238313961326265333235383739343934303538306462
|
||||
32346639383964666339393930326137623166386131616331626163313734656662636164333736
|
||||
35613564633761393866303132666134306436643933623138653337613432626631346632633364
|
||||
33313363656134363439633730343638646265323332373065323061623133393731316165663832
|
||||
62613834613936353637333637363163656430343364633165653030393931363838613566333934
|
||||
66323439376237383033626631633438393337336638633334343963613362353163353362656439
|
||||
66626233346230386138616565616437653131363431636438383462636665393265623261346363
|
||||
37636432386166393739323266303432383632323738666165623734306366376464363439353361
|
||||
66623062353461653462333966336166306334396564346364333537633134316666633032306433
|
||||
32326466643565323465303066383366323561386665373838366662376263343637663066663832
|
||||
31393333636437383133363932646433353932663336323634376564303338643461666130313738
|
||||
32656562306536393530326464633064613861663061316261613965663230393561346132383339
|
||||
39323837396439663432646665303731313561323762663236363936613834393463643531393338
|
||||
32623431663063393333353538656431343236626465613563326334656566656135343862656534
|
||||
37636165396337343538643238363461386331666133376632646639316461646539343066363835
|
||||
34626266303636613337663864313532663030646438356238396461613637316230316532643831
|
||||
35613033363933393337396236336265633930363766316463336432383161613338333166623933
|
||||
66646231626264323261353638653537356231343533373364346131346162356365633330636436
|
||||
36316562656461353335633939366537313433666230623939306331396236303833383337616162
|
||||
32616538393865363864663865316165306639393930316465626463326333306434303737303934
|
||||
36336131616163346438376264636234363566376436383938663830393932363436343065653539
|
||||
37353530623037666662396464653666353835393533643965343262323139356335646262613134
|
||||
64303832306536383861313232666531356233333138613635343036613139313330373832303464
|
||||
30383766623866356163643662663864343234663062323535383164323930323661376165643061
|
||||
37616430393035303730363562633935396633663966333963613665633332636230656432383961
|
||||
66323162303632663035376661376630346261663963396662396163306662363562313536303533
|
||||
65313263346431323530326562663761313164376366366532363965613930363562643464656265
|
||||
30393638373063636533346137663031363734343839346135613734666562623930643661323033
|
||||
35326238336330646466656431653930336263303630353237626432303763363265396433323965
|
||||
39353633663438313066306439666461386137346434363061636637393433343933356135346166
|
||||
65363635643962383039356563633635353063356637613030373831616662393032343063313530
|
||||
34343739643137623030643063343435633835303635613462323137373664653634366437636338
|
||||
66623237353861663539336234626436666664343663623135393033316464393761633733373834
|
||||
62616666363062363761373234376339663965343961373236333264636537326539623133333537
|
||||
61636437356431316339343738333663316432386661386235346361613539383237623565316531
|
||||
61656265366335663530373361666361666564346532343033663336303934613738373039663364
|
||||
64323837643131366561653566313766396365316130633531343436343061303661323031643161
|
||||
64306539616233666539623731666137666135643232326537396336393839646639306639643036
|
||||
33616639396333663262616661663465633035383965353832373837376164373661313632633434
|
||||
35366633633462333565353533386461396639373162306534313938653538633363393961323337
|
||||
66626662333531376135626266326131393639643831663738353936666536646366333638623561
|
||||
31636261356564396136383364396239643738376666313035353731346138313965626665633633
|
||||
65623364633733656135363233666461363965316235643838333564313838393964323539626366
|
||||
63626436623033616638633961323366613762333532396263346537343964316439356463316230
|
||||
36656138386333366265656132333937663330666562626138366234666236316438643763313935
|
||||
63643766323666633161386335643434386562346333643031323133356331346638633330326439
|
||||
61623039663638383033636138633665626438373633653639633338363966306166396662663865
|
||||
36376261353937353831616533653031643265633961386231343230616338366131646261666639
|
||||
34343334396166393563393339373062393932666138323865666433376462356663306333653831
|
||||
66663538653534326561306363303165356535353937333636623834323365366133333939336437
|
||||
66613633636566316535396131343035313265366266613436386363656339383839366330646330
|
||||
32616434653564363030393864613231363166353563386639666363616231303131323331633562
|
||||
37326361633937323239
|
||||
33
roles/nginxproxy/tasks/main.yml
Normal file
33
roles/nginxproxy/tasks/main.yml
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
# Tasks to be run inside the Nginx proxy container
|
||||
|
||||
- set_fact:
|
||||
container: '{{ nombre | urlencode | lower | regex_replace('_', '-') }}'
|
||||
|
||||
- name: Create basic Nginx config for new container
|
||||
template:
|
||||
src: newsite.conf.j2
|
||||
dest: '/etc/nginx/conf.d/{{ container }}.{{ dominio }}.conf'
|
||||
|
||||
- name: Create folder for Let's Encrypt files
|
||||
file:
|
||||
path: '/var/www/{{ container }}'
|
||||
state: directory
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: '0755'
|
||||
|
||||
- name: Restart Nginx
|
||||
systemd:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
||||
- name: Request Let's Encrypt certificate
|
||||
command:
|
||||
cmd: 'certbot --redirect --agree-tos -m {{ email }} --hsts --nginx -n -d {{ nombre | lower }}.{{ dominio }}'
|
||||
|
||||
- name: Restart Nginx again
|
||||
systemd:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
||||
22
roles/nginxproxy/templates/newsite.conf.j2
Normal file
22
roles/nginxproxy/templates/newsite.conf.j2
Normal file
@ -0,0 +1,22 @@
|
||||
server {
|
||||
listen 80 proxy_protocol;
|
||||
listen [::]:80 proxy_protocol;
|
||||
server_name {{ container }}.{{ dominio }};
|
||||
root /var/www/{{ container }};
|
||||
location / {
|
||||
resolver 10.0.3.1 valid=1h;
|
||||
set $container "http://{{ container }}.lxd";
|
||||
proxy_pass $container;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-Host $host:$server_port;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
location /.well-known {
|
||||
alias /var/www/{{ container }}/.well-known;
|
||||
}
|
||||
}
|
||||
|
||||
4
roles/nginxproxy/vars/main.yml
Normal file
4
roles/nginxproxy/vars/main.yml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
email: sistemas@agofer.com.co
|
||||
|
||||
dominio: agofer.net
|
||||
Reference in New Issue
Block a user