# Split between CI on our servers, and releases to clients

**URL:** <https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585>\
**Category:** Ansible Project\
**Created:** [October 22, 2014, 9:38pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585 "2014-10-22T21:38:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kuli\_Singh](https://avatars.discourse-cdn.com/v4/letter/k/82dd89/32.png) [@Kuli\_Singh](https://forum.ansible.com/u/Kuli_Singh)\
**Post date:** [October 22, 2014, 9:38pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585/1 "2014-10-22T21:38:01Z")

</div>

Hi

Our software is created using our CI processes: we build and deploy artefacts of multiple technologies and test in the cloud.

However, when we come to deliver the s/w to the customer, we end up having zip files which are self contained: this contains scripts which can work standalone to deploy the same artefacts to the customer in a similar (but not exactly the same way) as our CI setup. This is of course because we can’t ssh over to our customers: they have separate networks and would not allow us to continuously deliver to them!

Can Ansible be used to create standalone packages to a customer site?

Kuli

---

<div class="post-metadata">

**Author:** ![jorginator74](https://avatars.discourse-cdn.com/v4/letter/j/f19dbf/32.png) [@jorginator74](https://forum.ansible.com/u/jorginator74)\
**Post date:** [October 22, 2014, 9:57pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585/2 "2014-10-22T21:57:17Z")

</div>

Hi

---

<div class="post-metadata">

**Author:** ![Kuli\_Singh](https://avatars.discourse-cdn.com/v4/letter/k/82dd89/32.png) [@Kuli\_Singh](https://forum.ansible.com/u/Kuli_Singh)\
**Post date:** [October 22, 2014, 10:02pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585/3 "2014-10-22T22:02:33Z")

</div>

Hey Karl

Absolutely: we are moving towards a single code base, but there will always be differences between our CI build and customer implementation ( we don’t want to blow away all the dbdbables at the customer but we will do before every CI build).

So the question is, can I use ansible locally at a customer to deploy artefacts in the package (apologies, I am quite new to all of this right now)?

---

<div class="post-metadata">

**Author:** ![jorginator74](https://avatars.discourse-cdn.com/v4/letter/j/f19dbf/32.png) [@jorginator74](https://forum.ansible.com/u/jorginator74)\
**Post date:** [October 22, 2014, 10:49pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585/4 "2014-10-22T22:49:32Z")

</div>

Hi

> Hey Karl
> 
> Absolutely: we are moving towards a single code base, but there will always be  
> differences between our CI build and customer implementation ( we don't want to  
> blow away all the dbdbables at the customer but we will do before every CI  
> build).

That sounds like a good candidate for an option in the installer -  
where the default is suitable for a customer.

It also implies that your CI builds actually do not test upgrades -  
just clean installs. Testing of upgrades has to be done separately then.

> So the question is, can I use ansible locally at a customer to deploy artefacts  
> in the package (apologies, I am quite new to all of this right now)?

Well - with different installation methods you will inevitably end up  
with \*some\* amount of duplication of functionality. The trick is to  
get it down to an acceptable level.

Perhaps you can embed ansible into the actual installation? Ansible  
doesn't \*have to\* use SSH - it can run locally too - e.g. in "pull  
mode". This should allow you to re-use a lot of the code...

Beware: I believe you can only redistribute ansible if the ansible  
license is compatible with the licence for your application. Since  
most of ansible is under GPL3+, this means you cannot embed it in your  
proprietary app without requiring the composite result to be GPL3+  
compatible...

According to the Debian packaging for Ansible 1.7, most bits of  
Ansible seem to be under GPL 3+, some bits are GPL2, OFL (new one on  
me), Apache-2.0 and even BSD-2.

Alternatively, you can package your app as a "proper" \*.deb or \*.rpm  
package, and let the scripts inside do most of the grunt work. This  
should reduce the ansible playbook to basically "apt:" or "yum:"  
tasks...

---

<div class="post-metadata">

**Author:** ![Kuli\_Singh](https://avatars.discourse-cdn.com/v4/letter/k/82dd89/32.png) [@Kuli\_Singh](https://forum.ansible.com/u/Kuli_Singh)\
**Post date:** [October 22, 2014, 11:26pm UTC](https://forum.ansible.com/t/split-between-ci-on-our-servers-and-releases-to-clients/16585/5 "2014-10-22T23:26:04Z")

</div>

Thanks Karl, makes sense.
