Skip to content
Snippets Groups Projects
Commit e64e0346 authored by Michiel de Jong's avatar Michiel de Jong
Browse files

Add multi-user and nginx support (closes #4 and #5)

parent 49e1a26a
No related branches found
No related tags found
No related merge requests found
...@@ -12,10 +12,9 @@ vagrant up ...@@ -12,10 +12,9 @@ vagrant up
Wait for the provisioning to finish (~40mins), and go to your browser: http://coreos.dev Wait for the provisioning to finish (~40mins), and go to your browser: http://coreos.dev
### If you want to start another wordpress: ### If you want to add another wordpress instance:
```bash ```bash
vagrant ssh vagrant ssh
sudo systemctl start wordpress@myuser.service sudo sh /data/infrastructure/scripts/adduser.sh example.dev wordpress
``` ```
Update haproxy configuration in ``/data/server-wide/haproxy/haproxy.cfg`. Check http://example.dev in your bowser!
Check in your bowser!
...@@ -17,6 +17,7 @@ $vb_memory = 1024 ...@@ -17,6 +17,7 @@ $vb_memory = 1024
$vb_cpus = 1 $vb_cpus = 1
BASE_IP_ADDR = ENV['BASE_IP_ADDR'] || "192.168.65" BASE_IP_ADDR = ENV['BASE_IP_ADDR'] || "192.168.65"
HOSTNAME = ENV['HOSTNAME'] || "coreos.dev"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "coreos-%s" % $update_channel config.vm.box = "coreos-%s" % $update_channel
...@@ -30,11 +31,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ...@@ -30,11 +31,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
vb.cpus = $vb_cpus vb.cpus = $vb_cpus
end end
core.vm.hostname = "coreos.dev" core.vm.hostname = HOSTNAME
core.vm.network :private_network, ip: "#{BASE_IP_ADDR}.#{i+1}" core.vm.network :private_network, ip: "#{BASE_IP_ADDR}.#{i+1}"
config.vm.synced_folder ".", "/data/infrastructure" config.vm.synced_folder ".", "/data/infrastructure"
core.vm.provision :file, source: "./config/user-data", destination: "/tmp/vagrantfile-user-data" core.vm.provision :file, source: "./config/user-data", destination: "/var/lib/coreos-vagrant/vagrantfile-user-data"
core.vm.provision :shell, path: "./scripts/vagrant.sh" core.vm.provision :shell, path: "./scripts/setup.sh"
core.vm.provision :shell, path: "./scripts/adduser.sh", args: [HOSTNAME, "wordpress"]
end end
end end
end end
#!/bin/bash
if [ ! -d "/data/per-user/$USER/nginx/data" ]; then
mkdir -p /data/per-user/$USER/nginx/data/www-content
echo Hello $USER > /data/per-user/$USER/nginx/data/www-content/index.html
touch /data/per-user/$USER/nginx/.env
fi
#!/bin/bash -eux
# Start service for new site (and create the user)
systemctl enable $2@$1.service
systemctl start $2@$1.service
sleep 10
# Configure new site in HAproxy
IP=`docker inspect --format '{{.NetworkSettings.IPAddress}}' $2-$1`
echo IP address of new container \'$2-$1\' is \'$IP\'
sed s/%HOSTNAME%/$1/g /data/infrastructure/templates/haproxy-frontend.part | sed s/%IP%/$IP/g >> /data/server-wide/haproxy/frontends.part
sed s/%HOSTNAME%/$1/g /data/infrastructure/templates/haproxy-backend.part | sed s/%IP%/$IP/g >> /data/server-wide/haproxy/backends.part
cat /data/server-wide/haproxy/haproxy-main.part /data/server-wide/haproxy/frontends.part /data/server-wide/haproxy/backends.part > /data/server-wide/haproxy/haproxy.cfg
systemctl reload haproxy.service
#!/bin/bash -eux #!/bin/bash -eux
# Install cloud-config file
mv /tmp/vagrantfile-user-data /var/lib/coreos-vagrant/
# Install unit-files # Install unit-files
cp /data/infrastructure/unit-files/* /etc/systemd/system cp /data/infrastructure/unit-files/* /etc/systemd/system
systemctl daemon-reload systemctl daemon-reload
...@@ -10,15 +7,13 @@ systemctl daemon-reload ...@@ -10,15 +7,13 @@ systemctl daemon-reload
# Pull relevant docker images # Pull relevant docker images
docker pull tutum/mysql docker pull tutum/mysql
docker pull tutum/wordpress-stackable docker pull tutum/wordpress-stackable
docker pull tutum/nginx
# Start wordpress service for user coreos (and create the user)
systemctl enable wordpress@coreos.service
systemctl start wordpress@coreos.service
# Configure and start HAproxy # Configure and start HAproxy
docker pull dockerfile/haproxy docker pull dockerfile/haproxy
mkdir -p /data/server-wide/haproxy mkdir -p /data/server-wide/haproxy
IP=`docker inspect --format {{.NetworkSettings.IPAddress}} wordpress-coreos` cp /data/infrastructure/templates/haproxy-main.part /data/server-wide/haproxy/haproxy-main.part
sed s/%IP%/$IP/ /data/infrastructure/templates/haproxy.cfg > /data/server-wide/haproxy/haproxy.cfg rm /data/server-wide/haproxy/frontends.part
rm /data/server-wide/haproxy/backends.part
systemctl enable haproxy.service systemctl enable haproxy.service
systemctl start haproxy.service systemctl start haproxy.service
# %HOSTNAME%:
backend %HOSTNAME%
cookie SERVERID insert nocache indirect
option httpclose
option forwardfor
server Server %IP%:80 cookie Server
# %HOSTNAME%:
acl is_%HOSTNAME% hdr_end(host) -i %HOSTNAME%
use_backend %HOSTNAME% if is_%HOSTNAME%
...@@ -11,18 +11,9 @@ defaults ...@@ -11,18 +11,9 @@ defaults
option httplog option httplog
option dontlognull option dontlognull
retries 3 retries 3
contimeout 5000 timeout connect 5000
clitimeout 50000 timeout client 50000
srvtimeout 50000 timeout server 50000
frontend http-in frontend http-in
bind *:80 bind *:80
acl is_core hdr_end(host) -i coreos.dev
use_backend core if is_core
backend core
cookie SERVERID insert nocache indirect
option httpclose
option forwardfor
server Server %IP%:80 cookie Server
[Unit]
Description=nginx importer
Before=nginx@%i.service
[Service]
Type=oneshot
RemainAfterExit=yes
Environment=USER=%i
ExecStart=/data/infrastructure/importers/nginx.sh
[Install]
WantedBy=nginx@%i.service
[Unit]
Description=%p-%i
After=docker.service
Requires=docker.service
Requires=%p-importer@%i.service
After=%p-importer@%i.service
[Service]
Restart=always
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill %p-%i
ExecStartPre=-/usr/bin/docker rm %p-%i
ExecStart=/usr/bin/docker run\
--name %p-%i\
-v /data/per-user/%i/%p/data/www-content:/app\
--env-file /data/per-user/%i/%p/.env\
tutum/nginx
ExecReload=/usr/bin/docker restart %p-%i
ExecStop=/usr/bin/docker stop %p-%i
[Install]
WantedBy=multi-user.target
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment