[Deployment] API server package postinst sets up git_internal_dir
The API server has code to try to set this up itself, but it frequently fails because the parent directory doesn't exist, or the API server can't write to it. Doing it from the package is much less error-prone.
When crunch-dispatch inits the repository, it frequently has wrong ownerships (root:root instead of www-data:www-data).
- Take the git init code out of crunch-dispatch.
- After config:check succeeds, grab the value of git_internal_dir. If it doesn't exist, set up all directories as necessary as www-data:root 0770, then
su -c "git init …" www-data. Make sure to follow symlinks all the way through, from the existence check to the final init.
- Make sure Puppet isn't going to thrash on these changes.
- Test on a test cluster to make sure it doesn't make any changes.
#10 Updated by Nico César almost 5 years ago
the testing was done the following way:
docker run -ti -v arvados/packages/ubuntu1404/arvados-api-server_0.1.20160104193447.3344f5b-3_amd64.deb:/root/a.deb ubuntu bash
apt-get install curl sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \curl -sSL https://get.rvm.io | sudo bash -s stable --ruby=2.1 source /usr/local/rvm/scripts/rvm export WEB_SERVICE=nginx apt-get install postgresql-server-dev-9.3 nginx libcurl4-gnutls-dev gem install curb -v '0.8.8' gem install pg -v '0.17.1' dpkg -i /root/a.deb