Coder Social home page Coder Social logo

foxxx0 / package-agent Goto Github PK

View Code? Open in Web Editor NEW

This project forked from choria-plugins/package-agent

0.0 2.0 0.0 88 KB

Choria Plugin capable of managing Operating System Packages

Home Page: https://choria.io

License: Other

Ruby 86.88% PLSQL 8.50% Python 4.62%

package-agent's Introduction

Choria Package Agent

The package agent that lets you install, uninstall, update, purge and query the status of packages on your system.

This agent can be extended to support different Package managers, by default it uses Puppet. See the section later in this document about extendibility.

Installation

This agent is installed by default as part of the Choria Orchestrator.

Configuration

There is one plugin configuration setting for the package agent.

  • provider - The Util class that implements the install, uninstall, purge, update and status behavior. Defaults to 'puppet'

General provider configuration options can then also be set in the config file.

mcollective_agent_package::config:
  provider: puppet
  puppet.allowcdrom: true

Authorization

By default the Action Policy system is configured to only allow status and count and md5 actions from all users. These are read only and does not expose secrets.

Follow the Choria documentation to configure your own policies either site wide or per agent.

If you do configure any Policies specific to this module these defaults will be overriden when done using Hiera.

An example policy can be seen here:

mcollective_agent_package::policies:
  - action: "allow"
    callers: "choria=manager.mcollective"
    actions: "install update uninstall purge"
    facts: "*"
    classes: "*"

Usage

% mco rpc package install package=nano

 * [ ============================================================> ] 4 / 4



Summary of Ensure:

   2.0.9-7.el6 = 4


Finished processing 4 / 4 hosts in 18176.83 ms
% mco package nano uninstall

 * [ ============================================================> ] 4 / 4


Summary of Ensure:

   absent = 4


Finished processing 4 / 4 hosts in 393.68 ms
% mco rpc package install package=openssl version=0.9.8k-7ubuntu8

 * [ ============================================================> ] 4 / 4



Summary of Ensure:

   0.9.8k-7ubuntu8 = 4


Finished processing 4 / 4 hosts in 18176.83 ms

Data Plugin

The Package agent also supplies a data plugin which uses the Package agent to check the current status of a package. The data plugin will set installed to true/false if the package is not installed or not, and will set status to the currently installed version if it is present and can be used during discovery or any other place where the MCollective discovery language is used.

mco rpc rpcutil ping -S "package('mypackage').installed=false"

mco rpc rpcutil ping -S "package('mypackage').status=3.2-1"

Extending

The default package agent achieves platform portability by using the Puppet provider system to support package managers on all platforms that Puppet supports.

If however you are not a Puppet user or simply want to implement some new method of package management you can do so by providing your own backend provider for this agent.

The logic for the Puppet version of this agent is implemented in Util::Package::PuppetPackage, you can create a custom package implementation that overrides #install, #uninstall, #update, #purge and #status.

This agent defaults to Util::Package::PuppetPackage but if you have your own you can configure it in the config file using:

mcollective_agent_package::config:
  provider: puppet

There is an example YumPackage that manages YUM based systems without Puppet that you can look to for an example.

package-agent's People

Contributors

br0ch0n avatar cristi- avatar davewongillies avatar fiddyspence avatar frangm avatar gunzl1ng3r avatar haus avatar melissa avatar mikaelsmith avatar mruzicka avatar nicklewis avatar ploubser avatar reguero avatar richardc avatar ripienaar avatar teancom avatar treydock avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.