
AnsibleWorks Raises $6M - tomaac
http://techcrunch.com/2013/08/12/ansibleworks-raises-6m-for-popular-open-source-and-easy-to-use-it-automation-framework/
======
grey-area
I tried Ansible just last week for automating server config and setup as it
happens and was really impressed.

I was using shell scripts previously but like the idea I can just spin up a
server and from the base OS, run a deploy which will install everything I need
from a local recipe, including configuring and restarting services, and have
the server ready to use in a few minutes. It took a few hours to learn the ins
and outs of their concept of playbooks (just simple recipes for deployment),
but I liked the way you can nest these so once you have a setup for say
Postgresql that you like it is usable in any other recipes combined with other
components.

The best bit is that it can be run multiple times when new configs are added -
this means any config changes to say nginx can be done on the playbook and
then replayed to send them to the server(s), over and over till the recipe is
right. This avoids the biggest problem with fragile servers which is an
agglomeration of config changes and ad-hoc installations over original setup
scripts. The playbook becomes your server config documentation.

It'd be great if VPS providers had a library of Ansible playbooks - perhaps
AnsibleWorks should consider having a library of playbooks which they manage
on their website for common OS/setups and are downloadable from there? Their
examples don't really cover all the bases as yet (I wanted Nginx/Postgresql
for example), and it'd be nice if whatever setup you want there's already a
playbook ready for.

I'm sure similar things are possible in other comparable tools like Chef and
Puppet, but I liked that Ansible requires nothing on the server, doesn't
require git etc. and has a simple declarative language rather than a dsl to
learn - the configuration language is very simple - you can start just by
executing commands and installing packages and build up from there.

Would anyone care to compare to Chef/Puppet for those who haven't used them?

~~~
INTPenis
I've used Puppet in a network of a few hundred hosts, mixed Linux and FreeBSD,
and I can't complain.

However, I also started using ansible shortly after it came out and I much
prefer their push model.

One sad note about the fast open source development we all love so much
though, I setup ansible when it was still in 0.x, everything worked fine.

Just a couple of weeks ago I had to modify that ansible configuration for the
first time since the setup so I pulled a fresh copy. Everything had changed
and I couldn't even get it to work. Not even after purging all the installed
files of ansible. So now I have some studying to do. :)

~~~
adient
Puppet supports a push model using mcollective. You can also just use ssh the
same as ansible and use any CF tool to "push" changes.

~~~
mpdehaan2
Well, it's a message bus, and requires initial setup, so you don't get the
zero-boostrapping capability, and require the agent to stay running and have
an open port continuously open to the server.

Yes, you can initiate local runs on other CM tools, but with ansible the
multi-tier orchestration and rolling updates can be accomplished from the
central server without it -- just set it up and run from a laptop.

------
txutxu
Hello, one question:

How it's going to affect, this raising, to the ansible project?

I mean, I like what I've used until now of ansible. I currently do not need
the GUI. Is the ansible project going to continue it's development and
licensing model? is there any possibility on ansible (without GUI) going
"fremium" or any other functionality limitation with the time?

I just ask because I know that funds does not use to come for free and there
use to be directives and guidelines which may affect a project...

I wish ansible is unaffected by the funders thoughts, even if I wish all the
best for the ansibleWorks products too.

Congrats for the fund!

~~~
mpdehaan2
We're following exactly the same track record as before, and this was
important in finding the right people to work with in the VC community.

We have already announced AWX, which is commercial software, and you can read
about it at [http://www.ansibleworks.com/ansibleworks-
awx/](http://www.ansibleworks.com/ansibleworks-awx/) \-- it's downloadable now
and you can use it for up to 10 nodes free.

Basically the cutoff is ansible and ansible-playbook should be completely
usable for all kinds of teams, but if you find the GUI useful, or want the
REST API, or role based access control -- typically things enterprise
companies do want, you have a product you can buy that adds a lot of value add
on top.

We're going to continue merging in all kinds of great pull requests and
features, and continue to expand the language where we need to, and modules.

One example of this is we recently were able to hire James Cammarata, who has
been maintaining Cobbler, to work full time on just the OSS bits!

Another example of this is all of our support guys are also helping out on
things like IRC, and helping with producing new example content and modules.
All the recent modules for OpenStack are an example of one of these things.

Nothing is going to change in terms of licensing or the community at all, if
anything, it allows us to have a lot more resources, help promote Ansible
more, and move faster.

But yes, we're going to have a really awesome product as well, and I think
lots of Ansible users are going to be quite interested in taking a look at it.

~~~
giulianob
I love Ansible but I have a little bit of a complaint with the new website.
The website used to be very focused on the product and how to get going fast.
Now it seems more enterprisey with all of the major links on the frontpage
linking to the solutions page which have way too much content for someone who
isn't attached to the product yet. It seems almost more geared towards the
business folks rather than the devops people like before. What I like about
Ansible is that it gets you up running fast. Now, I have to spend a lot more
time digging through the website to figure out what Ansible actually is. Even
under Products, Ansible isn't there there. Instead, it lists Ansible AWX which
makes very little sense w/o knowing Ansible first.

The documentation is still great and gets you going fast. I think the focus on
the website with the Technology vs Solutions vs Products categories is
uninviting to your core audience. Perhaps the reason for all of this is
because Ansible != AnsibleWorks which makes sense. If that's the case though,
I would recommend splitting up the two websites like 10gen did with Mongo (
[http://www.10gen.com/](http://www.10gen.com/) vs
[http://www.mongodb.org/](http://www.mongodb.org/) ). If you look at Mongo's
site, it's very much straight to the point. However, 10gen's site is more
focused on the business side of things.

Anyways, you guys are doing a great job with the actual project. See you
around.

------
gosub
The two things that makes me prefer ansible over chef/puppet/cfengine are:

1) being push based

2) working via shell over ssh.

There is a definite vantage, with a small install base, in not having to setup
a server on either side and being able to control the process from the "admin"
machine. What would make ansible perfect for me would be ditching yaml and use
python directly. It would be easier to extend and control programmatically,
without the awkward variables and looping constructs it uses in yaml.

~~~
adient
You can use any CF tool over ssh, this is not unique to ansible. In doing so,
you can also "push" to any CF tool. You can also push by using more integrated
tools, such as mcollective with puppet.

~~~
pessimizer
You don't push to ansible, you push from ansible to a server that has never
heard of ansible.

------
giulianob
Good for them! Ansible is amazing and everyone I've shown it to so far love it
because it's just so much simpler to use than the alternatives. As soon as I
found out about the project (before AnsibleWorks was even founded) I knew
these guys were gonna be well off.

------
purephase
I love the concept, but I couldn't figure out how to make the server inventory
dynamic. I tag a lot of instances and want to use the AWS API to grab a list
of tagged instances to automatically build the server inventory on execution.

Since the instances are so variable (auto-scaling etc.) I see that as a killer
feature. Maybe I have to dig deeper, but I spent some time evaluating it
against Chef/Puppet etc. and I couldn't find anything.

~~~
susi22
Don't call it "server manifest". It'll confuse people. You mean "inventory".
You can dynamically populate "facts" and "inventory". See:

[https://github.com/ansible-provisioning/ansible-
provisioning](https://github.com/ansible-provisioning/ansible-provisioning)

[http://jpmens.net/2013/06/18/adapting-inventory-for-
ansible/](http://jpmens.net/2013/06/18/adapting-inventory-for-ansible/)

Especially for ec2 there is many modules that allows you to do that too. You
can easily specify an inventory file which you populates dynamically.

There is also a lot being done about this in v1.3.

HTH

~~~
mpdehaan2
Yeah check out the API chapter of the docs, there's information about all
kinds of dynamic inventory scripts.

[https://github.com/ansible/ansible/tree/devel/plugins/invent...](https://github.com/ansible/ansible/tree/devel/plugins/inventory)

------
taude
I've been interested in trying this out as I've been mostly tinkering with
Chef and Puppet...

Can anyone who's worked with Puppet/Chef and Ansible offer some insights?

~~~
tszming
I have been using chef (solo/server) for 2 yrs and started playing with
ansible two weeks ago, so far, my comments:

Pros:

\- ansible's creator is very active and helpful in github/mailing list in
answering issues/questions; for chef, reproducible bugs can't even get an
acknowledgement from opscode [1], free users are not their priority IMO

\- simple in design, able to deploy multiple targets without a centralized
monster like chef-server, you just need SSH

\- batteries included, e.g. aws, linode, mysql, postgresql tasks

Cons:

\- ansible is more buggy and still under heavy development

\- documentation is confusing, e.g. current ansible latest is 1.2.2 but
documentation showing features only appear in 1.3

\- no playbook dependency handling

\- build in modules are helpful but not really extensible [2]

\- the creator is helpful but sometimes opinionated [3]

[1]
[http://tickets.opscode.com/browse/CHEF-3204](http://tickets.opscode.com/browse/CHEF-3204)

[2]
[https://github.com/ansible/ansible/issues/3776#issuecomment-...](https://github.com/ansible/ansible/issues/3776#issuecomment-22264220)

[3] [https://groups.google.com/forum/#!searchin/ansible-
project/g...](https://groups.google.com/forum/#!searchin/ansible-
project/group_vars$20default/ansible-project/Gd_7P3Ei_Vs/5DsDiCS-w8AJ)

~~~
mpdehaan2
So, to address some questions.

(A) Definitely file tickets on bugs. If there are things we don't know about
we can't fix them :)

(B) Role dependencies I think are what you may mean. They are on deck for
inclusion in 1.3 which is out this month.

(C) I would agree that core modules aren't subclassable by design though this
is largely an artifact of how we are engineered to not have any dependencies
for getting things going on remote nodes (zero bootstrapping). For the most
part it works well and I'm fine with moving get_url into module common.

(D) Yay variable scope thread! No doubt, I do have opinions and we want to
fight to keep things minimal. There was a recent proposal to inject role
variables into the local namespace that fixes most of this, this is also
something we are going to do in 1.3. I think that will eliminate most of the
"prefix" ideas when you have variables defined in multiple places. I still
think group_vars/ is a great place for defaults :)

~~~
tszming
Hi Michael, congratulation first and thanks for your prompt reply. It is
amazing how you can be so attentive to the community.

For (c), I think you misunderstood my point, I am not saying to make modules
re-usable by exposing the function/method directly, instead, I against them as
it will make the module common very bulky. I am saying to have a way to
__launch a sub-task within a custom module __(task) in order to reuse the
existing goodness, e.g. I want to put a file to S3 in my module, why I need to
use low level api such as boto when I can re-use the existing s3 task - just
one line!

For (d), I am reasoning using common sense only, e.g. 10gen distribute the
mongodb playbook, declared the default port of 27017 in the playbook, and I am
using group_vars to manage mongodb replica sets at different datacenters,
either I am satisfying with the default in the playbook, or otherwise, I can
simply override them in my group_vars. I don't want to modify the playbook and
10gen can't access my group_vars, to me or people in the mailing list, it make
a lot of sense to have the defaults in the playbook. To keep things minimal,
honestly, you don't need to introduce new stuff for this, just revert it by
changing the priority in the next major release and give people enough
warnings and people will understand.

~~~
mpdehaan2
While I see your point on (C), there are characteristics of ansible that have
led to that point, such as zero-boostrapping and keeping things very
efficient. So yes, I agree that's true, but it hasn't been much of a problem
so far.

(D) We're pretty big about backwards compat, so I'm definitely not going to be
reverting any priorities. I think a lot of people DO like the way things are
set up now. I'm open to including a 'defaults/' type directory in roles though
and that's something we are exploring for those that want to ship defaults and
don't want to edit their group_vars for whatever reason.

------
dschep
I really want to use ansible (currently using salt), but I'm still waiting for
the apt_repository pr[0] to get merged.

[0]
[https://github.com/ansible/ansible/pull/3783](https://github.com/ansible/ansible/pull/3783)

~~~
borplk
can you elaborate on why you are moving away form salt?

~~~
BozeWolf
Would like to hear that as well. In my current project, vagrant is being
provisioned with ansible. We chose ansible because it's easy to extend and its
written in python. This project runs on freelancers, so its important the next
django developer understands the provisioning system and custom modules as
well.

For some reason I tend to prefer the idea of being more "abstract" like Salt
is. So my private project (server+vagrant) is being provisioned with Salt.
Like borplk i'm interested in opinions of people which have experience with
both.

~~~
mpdehaan2
I'd be interested in hearing what you mean about being more abstract, but I
think you'll like the simplicity angle.

In general, we build things with the goal of readability by diverse levels of
skill and busy-ness -- to make things readable like a book and easy so you
don't forget something in Ansible 6 months after you wrote it, and so you can
dive in, get something done, and dive out.

We've got some IT managers saying they can tell employees to do X, Y, and Z,
and not knowing Ansible, can still read the playbook. So, it should be fine
for your freelancer case I'm sure. This is also why there is no graph
dependency system, just handlers and notifies, so you can read things top to
bottom.

------
lyra-
They deserve this so much ! For their amazing work and amazing support across
irc/github/mailinglist <3

------
SEJeff
Props to Michael and team. More options for python deployment and config
management is a good thing.

------
topfunky
I'm the open source curriculum coordinator at Pluralsight. We would love to
commission a video to help devops people learn and use Ansible. Email
geoffrey@pluralsight.com if you're interested.

~~~
zhynn
Email sent! I would love to do this.

------
andrewflnr
I like Ansible, but I have to ask: Is $6M a lot for this sort of thing? It
sounds like a lot to me for a GUI tool and "REST endpoint", whatever that
means in this context. Is there enough of a market to return $6M x10 or
whatever it takes to make the investment worthwhile?

p.s.: I know this post could sound like veiled contempt, but I really am just
curious and a trifle perplexed.

~~~
josephlord
I have no connection to Ansible or the deal but I think that you are probably
forgetting the team that got them to the current state, their future potential
and what they can do with 6M.

------
akurilin
Big fan of Ansible, it's great that they'll have more resources to keep making
the product even better.

