Class: Bfire::Provider::Puppet
- Inherits:
-
Object
- Object
- Bfire::Provider::Puppet
- Defined in:
- lib/bfire/provider/puppet.rb
Instance Attribute Summary collapse
-
#classes ⇒ Object
readonly
Returns the value of attribute classes.
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ Puppet
constructor
A new instance of Puppet.
- #install(ssh_session) ⇒ Object
- #manifest(name) ⇒ Object
- #run(ssh_session) ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(opts = {}) ⇒ Puppet
Returns a new instance of Puppet.
9 10 11 12 13 14 |
# File 'lib/bfire/provider/puppet.rb', line 9 def initialize(opts = {}) @classes = opts.delete(:classes) || opts.delete("classes") @modules = opts.delete(:modules) || opts.delete("modules") @options = opts @errors = [] end |
Instance Attribute Details
#classes ⇒ Object (readonly)
Returns the value of attribute classes.
4 5 6 |
# File 'lib/bfire/provider/puppet.rb', line 4 def classes @classes end |
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
7 8 9 |
# File 'lib/bfire/provider/puppet.rb', line 7 def errors @errors end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
5 6 7 |
# File 'lib/bfire/provider/puppet.rb', line 5 def modules @modules end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
6 7 8 |
# File 'lib/bfire/provider/puppet.rb', line 6 def @options end |
Instance Method Details
#install(ssh_session) ⇒ Object
16 17 18 19 20 |
# File 'lib/bfire/provider/puppet.rb', line 16 def install(ssh_session) res = ssh_session.exec!("apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install curl puppet -y") res = ssh_session.exec!("which puppet") !res.nil? && !res.empty? end |
#manifest(name) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/bfire/provider/puppet.rb', line 37 def manifest(name) content = <<MANIFEST class #{name} { #{classes.map{|klass| "include #{klass}"}.join("\n")} } include #{name} MANIFEST end |
#run(ssh_session) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/bfire/provider/puppet.rb', line 22 def run(ssh_session) ssh_session.exec!("rm -rf /tmp/puppet && mkdir -p /tmp/puppet") ssh_session.scp.upload!( StringIO.new(manifest("vm")), "/tmp/puppet/manifest.pp" ) ssh_session.sftp.upload!(modules, "/tmp/puppet/modules") ssh_session.exec!( "puppet --modulepath /tmp/puppet/modules /tmp/puppet/manifest.pp" ) do |ch, stream, data| yield "[#{stream.to_s.upcase}] #{data.chomp}" end true end |
#valid? ⇒ Boolean
47 48 49 50 51 52 53 54 55 |
# File 'lib/bfire/provider/puppet.rb', line 47 def valid? @errors = [] if modules.nil? @errors.push("You must pass a :modules option to `provider`") elsif !File.directory?(modules) @errors.push("#{modules} is not a valid directory") end @errors.empty? end |