Skip to content

Commit 4200bf3

Browse files
committed
Merge pull request #26 from OpenGeoscience/fix_geoserver_permission
Fix geoserver permission
2 parents 87e2747 + 3bc4b39 commit 4200bf3

16 files changed

Lines changed: 124 additions & 47 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.vagrant

ansible/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.retry

ansible/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,48 @@ Note: You may need to bring the vagrant box down and up for geonode to work.
5353

5454
$ vagrant halt
5555
$ vagrant up
56+
57+
58+
## Deploying to ec2 (or other server)
59+
60+
Several variables have to be set correctly before deploying to a remote server. This can be achived by creating a custom inventory with the group ```[geoservices]``` and the host you will deploy too.
61+
62+
```
63+
[geoservices]
64+
XXX.XXX.XXX.XXX ansible_ssh_private_key_file=PATH_TO_PEM_FILE ansible_user=ubuntu deploy_user=ubuntu site_url=http://ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com/ server_name=XXX-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com
65+
```
66+
67+
Replace X's with the IP address of the remote server
68+
69+
* `ansible_user` - will be the user ansible SSHes in as
70+
* `deploy_user` - will be the user used to deploy and install all the software (usually the same as ansible_user)
71+
* `ansible_ssh_private_key_file` - the PEM file that corresponds to the ansible_user and provides passwordless ssh access
72+
* `site_url` - the url of the website - used by geonode to identify its base URL
73+
* `server_name` - the fully qualified domain name of the server
74+
75+
To deploy, run ```ansible-playbook -i /path/to/inventory playbook.yml``` From this directory.
76+
77+
Alternately, variables may be placed in a local variables file, e.g.:
78+
79+
/path/to/local_vars.yml
80+
```yaml
81+
ansible_ssh_private_key_file: PATH_TO_PEM_FILE
82+
ansible_user: ubuntu
83+
deploy_user: ubuntu
84+
site_url: http://ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com/
85+
server_name: ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com
86+
```
87+
88+
With an inventory:
89+
90+
/path/to/inventory
91+
```
92+
[geoservices]
93+
XXX.XXX.XXX.XXX
94+
```
95+
96+
To deploy, run:
97+
98+
```
99+
ansible-playbook -i /path/to/inventory -e @/path/to/local_vars.yml playbook.yml
100+
```

ansible/Vagrantfile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ Vagrant.configure("2") do |config|
1313
config.vm.network "private_network", ip: "192.168.33.12"
1414
geoservices.vm.provider :virtualbox do |vb|
1515
vb.customize [ "modifyvm", :id, "--name", "geoservices","--memory", 4096 ]
16-
end
16+
end
1717
geoservices.vm.provision "ansible" do |ansible|
18-
ansible.playbook = "playbook.yml"
19-
ansible.verbose = "vvvv"
20-
ansible.host_key_checking = false
18+
ansible.playbook = "playbook.yml"
19+
ansible.galaxy_role_file = "requirements.txt"
20+
ansible.verbose = "vv"
21+
ansible.host_key_checking = false
2122
end
2223
end
2324
end

ansible/ansible.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ host_key_checking=False
44
record_host_keys=False
55
ssh.insert_key=False
66
roles_path=roles
7+
ask_sudo_pass=True

ansible/playbook.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
- hosts: geoservices
2-
remote_user: vagrant
2+
remote_user: "{{ deploy_user }}"
33
roles:
44
- common
55
- {role: geerlingguy.redis, sudo: yes}
66
- zenoamaro.supervisord
77
- postgres_postgis
8+
- oracle_java
89
- geoserver
910
- nginx
1011
- uwsgi

ansible/roles/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
geerlingguy.redis
2+
zenoamaro.supervisord

ansible/roles/dataqs/templates/celery.conf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[program:celery_worker_high]
22
command={{virtualenv_bin}}/celery --app=geonode.celery_app:app worker -n gdworker1.%%h
33
directory=/home/{{deploy_user}}/epigeonode
4-
user=vagrant
4+
user={{ deploy_user }}
55
numprocs=1
66
stdout_logfile=/tmp/celery-worker-high.log
77
stderr_logfile=/tmp/celery-worker-high-error.log
@@ -28,7 +28,7 @@ priority=1
2828
[program:celery_worker_low]
2929
command={{virtualenv_bin}}/celery --app=geonode.celery_app:app worker -n gdworker2.%%h
3030
directory=/home/{{deploy_user}}/epigeonode
31-
user=vagrant
31+
user={{ deploy_user }}
3232
numprocs=1
3333
stdout_logfile=/tmp/celery-worker-low.log
3434
stderr_logfile=/tmp/celery-worker-low-error.log
@@ -52,7 +52,7 @@ priority=1
5252
[program:celerybeat]
5353
command={{virtualenv_bin}}/celery --app=geonode.celery_app:app beat --loglevel=INFO
5454
directory=/home/{{deploy_user}}/epigeonode
55-
user=vagrant
55+
user={{ deploy_user }}
5656
numprocs=1
5757
stdout_logfile=/tmp/celery-beat.log
5858
stderr_logfile=/tmp/celery-beat.log
@@ -76,7 +76,7 @@ priority=10
7676
[program:celery-flower]
7777
command={{virtualenv_bin}}/celery --app=geonode.celery_app:app flower --loglevel=INFO --persistent=True
7878
directory=/home/{{deploy_user}}/epigeonode
79-
user=vagrant
79+
user={{ deploy_user }}
8080
numprocs=1
8181
stdout_logfile=/tmp/celery-flower.log
8282
stderr_logfile=/tmp/celery-flower.log

ansible/roles/geonode/files/known_hosts

Lines changed: 0 additions & 1 deletion
This file was deleted.

ansible/roles/geonode/tasks/main.yml

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,9 @@
4040
- libxslt-dev
4141

4242

43-
- name: install known_hosts file to access GitHub
44-
copy: src=known_hosts dest={{ssh_dir}}/known_hosts
4543

4644
- name: checkout latest web app code
47-
git: repo={{code_repository}} version=2.4.x dest={{app_code_dir}}/{{app_name}} force=yes
45+
git: repo={{code_repository}} version=2.4.x dest={{app_code_dir}}/{{app_name}} force=yes accept_hostkey=yes
4846

4947
- name: copy the local_settings.py file in place
5048
template: src=local_settings.py.j2 dest={{geonode_root}}/local_settings.py
@@ -71,27 +69,27 @@
7169
extra_args='-e'
7270

7371
- name: create static directory for Django app if it does not exist
74-
file: path=/var/www/{{app_name}}/static state=directory mode=0777 owner=www-data group=www-data
72+
file: path=/var/www/{{app_name}}/static state=directory mode=0770 owner=www-data group={{ deploy_user }}
7573
sudo: yes
7674

7775
- name: create uploaded directory for Django app if it does not exist
78-
file: path=/var/www/{{app_name}}/uploaded state=directory mode=0777 owner=www-data group=www-data
76+
file: path=/var/www/{{app_name}}/uploaded state=directory mode=0770 owner=www-data group={{ deploy_user }}
7977
sudo: yes
8078

8179
- name: create uploaded/layers directory for Django app if it does not exist
82-
file: path=/var/www/{{app_name}}/uploaded/layers/ state=directory mode=0777 owner=www-data group=www-data
80+
file: path=/var/www/{{app_name}}/uploaded/layers/ state=directory mode=0770 owner=www-data group={{ deploy_user }}
8381
sudo: yes
8482

8583
- name: create uploaded/thumbs directory for Django app if it does not exist
86-
file: path=/var/www/{{app_name}}/uploaded/thumbs/ state=directory mode=0777 owner=www-data group=www-data
84+
file: path=/var/www/{{app_name}}/uploaded/thumbs/ state=directory mode=0770 owner=www-data group={{ deploy_user }}
8785
sudo: yes
8886

8987
- name: rename the vassals-default.ini file to the app name
90-
file: src=/etc/uwsgi/vassals-default.skel dest=/etc/uwsgi/{{app_name}}.ini owner=www-data group=www-data state=link
88+
file: src=/etc/uwsgi/vassals-default.skel dest=/etc/uwsgi/{{app_name}}.ini owner=www-data group={{ deploy_user }} state=link
9189
sudo: yes
9290

9391
- name: create uwsgi log directory
94-
file: path=/var/log/uwsgi state=directory mode=0777 owner=www-data group=www-data
92+
file: path=/var/log/uwsgi state=directory mode=0770 owner=www-data group={{ deploy_user }}
9593
sudo: yes
9694

9795
- name: create {{db_metadata_instance}} db
@@ -124,9 +122,18 @@
124122
sudo_user: postgres
125123

126124
- name: make manage executable for ansible >= 2.0
127-
file: path={{app_code_dir}}/{{app_name}}/manage.py mode=0777
125+
file: path={{app_code_dir}}/{{app_name}}/manage.py mode=0770
128126

129127

128+
- name: Set file permissions so we can generate state content
129+
file:
130+
state: directory
131+
owner: "{{ deploy_user }}"
132+
group: "{{ deploy_user }}"
133+
path: "/var/www/{{app_name}}"
134+
recurse: true
135+
sudo: yes
136+
130137
- name: Django collectstatic
131138
django_manage: command=collectstatic
132139
app_path={{app_code_dir}}/{{app_name}}
@@ -139,6 +146,18 @@
139146
virtualenv={{virtualenv_dir}}/{{app_name}}
140147
settings={{main_module}}.settings
141148

149+
150+
- name: Set file permissions so we can generate state content
151+
file:
152+
state: directory
153+
owner: www-data
154+
group: "{{ deploy_user }}"
155+
path: "/var/www/{{app_name}}"
156+
mode: 0775
157+
recurse: true
158+
sudo: yes
159+
160+
142161
- name: wait for geoserver to be up
143162
shell: curl --head --silent {{geoserver_root_url}}/web/
144163
register: result

0 commit comments

Comments
 (0)