Sha256: 5be1e07a0b9ea993ffcaa39fa822bea26af9073cc0e4328ee4a85f68b50050f6

Contents?: true

Size: 1.5 KB

Versions: 86

Compression:

Stored size: 1.5 KB

Contents

require_relative 'ansible/workflow'
require 'rbbt/workflow/usage'

module Ansible
  def self.play(playbook, inventory = nil, verbose = false)
    inventory = Rbbt.etc.ansible_inventory.find
    Log.with_severity 0 do
      TmpFile.with_file do |tmp|
        if Hash === playbook
          Open.write(tmp, [playbook].to_yaml)
          playbook = tmp
        end
        if verbose
          CMD.cmd_log("ansible-playbook -i #{inventory} -v #{playbook}")
        else
          CMD.cmd_log("ansible-playbook -i #{inventory} #{playbook}")
        end
      end
    end
  end

  def self.clean_symbols(hash)
    new = {}
    hash.each do |key,value|
      key = key.to_s
      value = case value
              when Symbol
                value.to_s
              when Hash
                self.clean_symbols(value)
              else
                value
              end
      new[key] = value
    end
    new
  end

  def self.workflow2playbook(workflow, task, options = {})
    job_options = workflow.get_SOPT(workflow.tasks[task])

    tasks = workflow.job(task, nil, job_options).exec

    hosts = options[:hosts] || 'localhost'

    clean_tasks = tasks.collect{|task| self.clean_symbols task }
    {"hosts" => hosts, "tasks" => clean_tasks}
  end

  def self.playbook(file, task = nil, options = {})
    task = 'default' if task.nil?

    workflow = Workflow === file ? file : Workflow.require_workflow(file)
    task = workflow.tasks.keys.last if workflow.tasks[task].nil?
    workflow2playbook workflow, task, options
  end
end

Version data entries

86 entries across 86 versions & 1 rubygems

Version Path
rbbt-util-5.33.6 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.5 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.4 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.3 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.2 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.1 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.33.0 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.30 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.28 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.27 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.26 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.25 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.24 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.23 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.22 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.21 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.20 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.18 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.17 lib/rbbt/workflow/integration/ansible.rb
rbbt-util-5.32.16 lib/rbbt/workflow/integration/ansible.rb