- From: Daniel DeLeo <
>
- To:
- Subject: [chef] Re: Re: Running chef-client programatically
- Date: Mon, 20 Oct 2014 10:09:31 -0700
To get information from chef (client or solo) about what it’s doing, you can
use the event dispatch system (via a plugin you’ll need to write). The
dispatcher code showing all the events is here:
https://github.com/opscode/chef/blob/9b3e925188a41bbea954429ac81ffdf65e936eda/lib/chef/event_dispatch/base.rb
and one example of using it is the ResourceReporter class that is used by
Chef’s analytics product, here:
https://github.com/opscode/chef/blob/master/lib/chef/resource_reporter.rb You
can see an external example of this here:
https://github.com/theforeman/chef-handler-foreman
Jon Cowie covers this a little bit in his ChefConf 2104 talk, which you can
see here:
https://www.youtube.com/watch?v=vVVPWMHJdvg&list=PL11cZfNdwNyMmx0msapJfuGsLV43C7XsA&index=65
It’s also covered in his book:
http://shop.oreilly.com/product/0636920032984.do
If you create a custom reporter that uses IPC, then you don’t need to worry
about controlling the chef run from code, which would make some parts of your
task simpler.
--
Daniel DeLeo
On Sunday, October 19, 2014 at 9:40 AM, Ranjib Dey wrote:
>
yeah, you can do that, take a look at the client code[1]. Do you want a
>
client-sever like chef run or solo runs? There are three basic things you
>
have to do
>
a) Configure chef, either via Chef::Config.from_file, or directly set
>
Chef::Config[:key], where key is node_name, client_key and chef_server_url
>
b) build the node & run_context , this involves generating the ohai data,
>
pass it to a node, use that node to build a run_context
>
c) assign run_list and do a converge
>
>
you can see similar codes here[2], [3]
>
>
note, this means you have to run your chef-client as root (not a strict
>
requirement, but if you are manipulating users, packages, services etc,
>
you'll need this).
>
>
regards
>
ranjib
>
>
[1]https://github.com/opscode/chef/blob/master/lib/chef/client.rb#L348
>
[2]https://github.com/ranjib/chef-lxc/blob/master/lib/chef/application/lxc.rb#L86
>
[3]https://github.com/ranjib/chef-stage/blob/master/libraries/staged_chef_client.rb#L34
>
>
>
2014-10-19 3:56 GMT-07:00 Bráulio Bhavamitra
>
<
>
>
(mailto:
)>:
>
> Hello all,
>
>
>
> I building an app to control shared hosting deploys using chef and for it
>
> to work I would like to run chef-client inside this ruby app to be able
>
> to know and log exactly what chef-client is doing and what feedback it is
>
> giving. Is there a way to do so? Are there docs?
>
>
>
> Cheers
>
> Braulio
>
>
>
> --
>
> "Lute pela sua ideologia. Seja um com sua ideologia. Viva pela sua
>
> ideologia. Morra por sua ideologia" P.R. Sarkar
>
>
>
> EITA - Educação, Informação e Tecnologias para Autogestão
>
> http://cirandas.net/brauliobo
>
> http://eita.org.br (http://eita.org.br/)
>
>
>
> "Paramapurusha é meu pai e Parama Prakriti é minha mãe. O universo é meu
>
> lar e todos nós somos cidadãos deste cosmo. Este universo é a imaginação
>
> da Mente Macrocósmica, e todas as entidades estão sendo criadas,
>
> preservadas e destruídas nas fases de extroversão e introversão do fluxo
>
> imaginativo cósmico. No âmbito pessoal, quando uma pessoa imagina algo em
>
> sua mente, naquele momento, essa pessoa é a única proprietária daquilo
>
> que ela imagina, e ninguém mais. Quando um ser humano criado mentalmente
>
> caminha por um milharal também imaginado, a pessoa imaginada não é a
>
> propriedade desse milharal, pois ele pertence ao indivíduo que o está
>
> imaginando. Este universo foi criado na imaginação de Brahma, a Entidade
>
> Suprema, por isso a propriedade deste universo é de Brahma, e não dos
>
> microcosmos que também foram criados pela imaginação de Brahma. Nenhuma
>
> propriedade deste mundo, mutável ou imutável, pertence a um indivíduo em
>
> particular; tudo é o patrimônio comum de todos."
>
> Restante do texto em
>
> http://cirandas.net/brauliobo/blog/a-problematica-de-hoje-em-dia
>
Archive powered by MHonArc 2.6.16.