recipes/ceph-radosgw-webservice-install.rb (74 lines of code) (raw):
#
# Author:: Hans Chris Jones <chris.jones@lambdastack.io>
# Cookbook Name:: cepheus
#
# Copyright 2018, LambdaStack
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This recipe installs everything needed for the RGW Admin Web Service...
# NB: *IMPORTANT* - You will need to choose how to implement in your environment. Some environments
# use Apache, some use NGINX and some use something different. This process uses Python Flask.
if node['ceph']['radosgw']['rgw_webservice']['enable']
package 'uwsgi' do
action :upgrade
end
package 'uwsgi-plugin-python' do
action :upgrade
end
package 'python-flask' do
action :upgrade
end
directory '/usr/local/lib/rgw_webservice' do
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
mode 00755
end
directory '/usr/local/lib/rgw_webservice/templates' do
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
mode 00755
end
directory '/var/log/rgw_webservice' do
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
mode 00755
end
file '/usr/local/lib/rgw_webservice/__init__.py' do
action :touch
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
mode 00644
end
cookbook_file '/usr/local/lib/rgw_webservice/rgw_webservice' do
source 'rgw_webservice.py'
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
mode 00755
end
# NB: May want to add a config file to hold admin user and keys etc.
# Link app to lib directory file
link '/usr/local/bin/rgw_webservice' do
to '/usr/local/lib/rgw_webservice/rgw_webservice.wsgi'
user "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
end
# Setup the uwsgi ini
template '/etc/rgw_webservice.ini' do
source 'rgw-webservice.ini.erb'
owner 'root'
group 'root'
end
# Add Unit file for service
template '/etc/systemd/system/rgw_webservice.service' do
source 'rgw-webservice.service.erb'
owner 'root'
group 'root'
end
# Add help file
template '/usr/local/lib/rgw_webservice/templates/rgw_webservice_help.html' do
source 'rgw-webservice-help.html.erb'
owner "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
group "#{node['ceph']['radosgw']['rgw_webservice']['user']}"
end
# NB: So rgw_webservice process can read ceph.conf
if node['ceph']['version'] != 'hammer'
# Add this so that the rgw_webservice (running as radosgw) called processes (radosgw-admin) can access ceph.conf
execute "add_radosgw_to_ceph" do
command "usermod -a -G ceph #{node['ceph']['radosgw']['rgw_webservice']['user']}"
ignore_failure true
end
# Add this so that the rgw_webservice (running as radosgw) called processes (radosgw-admin) can access ceph.conf
execute "add_ceph_to_radosgw" do
command "usermod -a -G #{node['ceph']['radosgw']['rgw_webservice']['user']} ceph"
ignore_failure true
end
end
# NB: This will change owner and group of radosgw-admin2 and rgw_s3_api.py that ceph-chef installed.
execute "change_owner_group_radosgw" do
command "chown #{node['ceph']['radosgw']['rgw_webservice']['user']}:#{node['ceph']['radosgw']['rgw_webservice']['user']} /usr/local/bin/radosgw-admin2"
end
execute "change_owner_group_rgw_s3_api" do
command "chown #{node['ceph']['radosgw']['rgw_webservice']['user']}:#{node['ceph']['radosgw']['rgw_webservice']['user']} /usr/local/bin/rgw_s3_api.*"
end
end