Class: Ansible::Ruby::Rake::Task

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/ansible/ruby/rake/task.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameters = :default) {|_self| ... } ⇒ Task

Returns a new instance of Task.

Yields:

  • (_self)

Yield Parameters:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ansible/ruby/rake/task.rb', line 13

def initialize(parameters = :default)
  self.class.load_rule
  name, deps = parse_params parameters
  yield self if block_given?
  raise 'You did not supply any playbooks!' unless playbooks && [*playbooks].any?
  deps ||= []
  playbook_yml_files = yaml_filenames([*playbooks])
  role_task_yaml_files = yaml_filenames role_task_files
  deps = [*deps] + (playbook_yml_files + role_task_yaml_files)
  task name => deps do
    flat = flat_options
    flat += ' ' unless flat.empty?
    sh "ansible-playbook #{flat}#{playbook_yml_files.join ' '}"
  end
end

Instance Attribute Details

#optionsObject

:reek:Attribute - Rake DSL gets ugly if we don’t use a block



11
12
13
# File 'lib/ansible/ruby/rake/task.rb', line 11

def options
  @options
end

#playbooksObject

:reek:Attribute - Rake DSL gets ugly if we don’t use a block



9
10
11
# File 'lib/ansible/ruby/rake/task.rb', line 9

def playbooks
  @playbooks
end

Class Method Details

.load_ruleObject



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ansible/ruby/rake/task.rb', line 37

def load_rule
  return if @rule_done
  ::Rake.application.create_rule '.yml' => '.rb' do |filename|
    puts "Updating Ansible file #{filename.name} from #{filename.source}..."
    ruby = File.read filename.source
    playbook_builder = Ansible::Ruby::DslBuilders::FileLevel.new
    playbook = playbook_builder.evaluate ruby
    yml = Ansible::Ruby::Serializer.serialize playbook.to_h
    File.write filename.name, yml
  end
  @rule_done = true
end