On Mon, Sep 16, 2013 at 11:05:34AM +0200, David Caro wrote:
On Fri 13 Sep 2013 09:24:24 PM CEST, Ewoud Kohl van Wijngaarden
wrote:
> On Fri, Sep 13, 2013 at 11:00:27AM +0200, David Caro wrote:
>> On Wed 11 Sep 2013 04:09:17 PM CEST, Ewoud Kohl van Wijngaarden wrote:
>>> For
https://fedorahosted.org/ovirt/ticket/71 I submitted
>>>
http://gerrit.ovirt.org/19141 to use r10k for module deployment.
>>>
>>> I do have some concerns for further deployment. Until now I've assumed
>>> that we want jenkins to build on new git versions (possibly via the
>>> jenkins patch merged trigger) and then push that to
foreman.ovirt.org.
>>> However, that means we give jenkins implicit root on all of our infra
>>> which is a bad thing.
>>>
>>> Some solutions I can think of:
>>>
>>> 1. Set up a cronjob on foreman to poll git
>>> 1.1. Run make as the current patch
>>> 1.2. Change the patch and switch to dynamic environment support[1]
>>> 2. Set up an infra jenkins to automate this
>>
>> We can also restrict the ssh commands that the user can run, and
>> restrict it to the script that updates the manifests. That will avoid
>> having to give root access to the puppetmaster, that said, the
>> manifests that will be applied have implicit root access everywhere
>> too, but if we want automatic deployments that's what you get (only
>> maintainers should have merge access, meaning that anything that goes
>> through has been reviewed, so what we are really doing is reducing the
>> manual steps to one, when the reviewer merges the patch).
>
> I like this solution. It would remove the polling from foreman and give
> us logging in jenkins. I'd prefer if foreman retrieves the sources
> straight from gerrit so jenkins is more like a glorified cron. I think
> that's less insecure ;)
Agree, so what we need then is:
* Create update scripts
* Set up restricted shell account to only run that script
* Create jenkins job
So I was looking into installing r10k. First of all, I don't like
installing through gem. So my next try was using fpm to package it, but
it needs rubygem(systemu) >= 2.5.2 and 1.2.0 is in epel. Some options:
* Create a newer rubygem(systemu) and hope nothing needs < 2.5.2.
* Install through gem and hope nothing breaks
* Set up a user with minimal privileges, install it to its homedir.
I'm toward the last option, but would love to hear a better alternative.