foreman_ansible_core 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 3d2701f33f04f30fc268f07f895f402ae8d87b7a
         | 
| 4 | 
            +
              data.tar.gz: 569411abe75f0ecdb5f5f45df35be14c9e9c3dd9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 51ee5269d539e37feedff2df13b82822c0f09ce5be4adba3be8ff63297b71fbe4cf51a6ca93ebfd6390cfd8f1725b1fbedb21f305e94cc3325b8f50c0cac1d98
         | 
| 7 | 
            +
              data.tar.gz: 4b6c461a3883d4b7ece4072dc537d42c0a367063185778baae53bf1fa2687d4a794f909aca604b84ceddd7cf4a28dd621b856405e9343551245ff085d6ef4d55
         | 
| @@ -5,7 +5,7 @@ module ForemanAnsibleCore | |
| 5 5 |  | 
| 6 6 | 
             
                  def initialize(input, suspended_action:)
         | 
| 7 7 | 
             
                    super input, :suspended_action => suspended_action
         | 
| 8 | 
            -
                    @inventory = rebuild_inventory(input)
         | 
| 8 | 
            +
                    @inventory = rebuild_secrets(rebuild_inventory(input), input)
         | 
| 9 9 | 
             
                    @playbook = input.values.first[:input][:action_input][:script]
         | 
| 10 10 | 
             
                    @root = working_dir
         | 
| 11 11 | 
             
                  end
         | 
| @@ -41,7 +41,7 @@ module ForemanAnsibleCore | |
| 41 41 | 
             
                    logger.debug("[foreman_ansible] - parsing event file #{event_file}")
         | 
| 42 42 | 
             
                    begin
         | 
| 43 43 | 
             
                      event = JSON.parse(File.read(event_file))
         | 
| 44 | 
            -
                      if (hostname = event | 
| 44 | 
            +
                      if (hostname = event.dig('event_data', 'host'))
         | 
| 45 45 | 
             
                        handle_host_event(hostname, event)
         | 
| 46 46 | 
             
                      else
         | 
| 47 47 | 
             
                        handle_broadcast_data(event)
         | 
| @@ -62,7 +62,7 @@ module ForemanAnsibleCore | |
| 62 62 | 
             
                    when 'runner_on_unreachable'
         | 
| 63 63 | 
             
                      publish_exit_status_for(hostname, 1)
         | 
| 64 64 | 
             
                    when 'runner_on_failed'
         | 
| 65 | 
            -
                      publish_exit_status_for(hostname, 2) if event | 
| 65 | 
            +
                      publish_exit_status_for(hostname, 2) if event.dig('event_data', 'ignore_errors').nil?
         | 
| 66 66 | 
             
                    end
         | 
| 67 67 | 
             
                  end
         | 
| 68 68 |  | 
| @@ -120,7 +120,7 @@ module ForemanAnsibleCore | |
| 120 120 | 
             
                  def rebuild_inventory(input)
         | 
| 121 121 | 
             
                    action_inputs = input.values.map { |hash| hash[:input][:action_input] }
         | 
| 122 122 | 
             
                    hostnames = action_inputs.map { |hash| hash[:name] }
         | 
| 123 | 
            -
                    inventories = action_inputs.map { |hash|  | 
| 123 | 
            +
                    inventories = action_inputs.map { |hash| hash[:ansible_inventory] }
         | 
| 124 124 | 
             
                    host_vars = inventories.map { |i| i['_meta']['hostvars'] }.reduce(&:merge)
         | 
| 125 125 |  | 
| 126 126 | 
             
                    { '_meta' => { 'hostvars' => host_vars },
         | 
| @@ -138,6 +138,21 @@ module ForemanAnsibleCore | |
| 138 138 | 
             
                      Dir.mktmpdir(nil, File.expand_path(dir))
         | 
| 139 139 | 
             
                    end
         | 
| 140 140 | 
             
                  end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  def rebuild_secrets(inventory, input)
         | 
| 143 | 
            +
                    input.each do |host, host_input|
         | 
| 144 | 
            +
                      secrets = host_input['input']['action_input']['secrets']
         | 
| 145 | 
            +
                      per_host = secrets['per-host'][host]
         | 
| 146 | 
            +
             | 
| 147 | 
            +
                      new_secrets = {
         | 
| 148 | 
            +
                        'ansible_ssh_pass' => inventory['ssh_password'] || per_host['ansible_ssh_pass'],
         | 
| 149 | 
            +
                        'ansible_sudo_pass' => inventory['sudo_password'] || per_host['ansible_sudo_pass']
         | 
| 150 | 
            +
                      }
         | 
| 151 | 
            +
                      inventory['_meta']['hostvars'][host].update(new_secrets)
         | 
| 152 | 
            +
                    end
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                    inventory
         | 
| 155 | 
            +
                  end
         | 
| 141 156 | 
             
                end
         | 
| 142 157 | 
             
              end
         | 
| 143 158 | 
             
            end
         | 
| @@ -14,7 +14,7 @@ module ForemanAnsibleCore | |
| 14 14 |  | 
| 15 15 | 
             
                  def initialize(inventory, playbook, options = {}, suspended_action:)
         | 
| 16 16 | 
             
                    super :suspended_action => suspended_action
         | 
| 17 | 
            -
                    @inventory = inventory
         | 
| 17 | 
            +
                    @inventory = rebuild_secrets(inventory, options[:secrets])
         | 
| 18 18 | 
             
                    unknown_hosts.each do |host|
         | 
| 19 19 | 
             
                      add_to_known_hosts(host)
         | 
| 20 20 | 
             
                    end
         | 
| @@ -52,7 +52,7 @@ module ForemanAnsibleCore | |
| 52 52 |  | 
| 53 53 | 
             
                  def write_inventory
         | 
| 54 54 | 
             
                    ensure_directory(File.dirname(inventory_file))
         | 
| 55 | 
            -
                    File.write(inventory_file, @inventory)
         | 
| 55 | 
            +
                    File.write(inventory_file, JSON.dump(@inventory))
         | 
| 56 56 | 
             
                  end
         | 
| 57 57 |  | 
| 58 58 | 
             
                  def write_playbook
         | 
| @@ -103,7 +103,7 @@ module ForemanAnsibleCore | |
| 103 103 | 
             
                  end
         | 
| 104 104 |  | 
| 105 105 | 
             
                  def unknown_hosts
         | 
| 106 | 
            -
                     | 
| 106 | 
            +
                    @inventory['all']['hosts'].select do |host|
         | 
| 107 107 | 
             
                      Net::SSH::KnownHosts.search_for(host).empty?
         | 
| 108 108 | 
             
                    end
         | 
| 109 109 | 
             
                  end
         | 
| @@ -118,6 +118,20 @@ module ForemanAnsibleCore | |
| 118 118 | 
             
                    logger.error('[foreman_ansible] - Failed to save host key for '\
         | 
| 119 119 | 
             
                      "#{host}: #{e}")
         | 
| 120 120 | 
             
                  end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                  def rebuild_secrets(inventory, secrets)
         | 
| 123 | 
            +
                    inventory['all']['hosts'].each do |name|
         | 
| 124 | 
            +
                      per_host = secrets['per-host'][name]
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                      new_secrets = {
         | 
| 127 | 
            +
                        'ansible_ssh_pass' => inventory['ssh_password'] || per_host['ansible_ssh_pass'],
         | 
| 128 | 
            +
                        'ansible_sudo_pass' => inventory['sudo_password'] || per_host['ansible_sudo_pass']
         | 
| 129 | 
            +
                      }
         | 
| 130 | 
            +
                      inventory['_meta']['hostvars'][name].update(new_secrets)
         | 
| 131 | 
            +
                    end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                    inventory
         | 
| 134 | 
            +
                  end
         | 
| 121 135 | 
             
                end
         | 
| 122 136 | 
             
              end
         | 
| 123 137 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: foreman_ansible_core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.0. | 
| 4 | 
            +
              version: 3.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel Lobato Garcia
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-11-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rubocop
         | 
| @@ -106,7 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 106 106 | 
             
                - !ruby/object:Gem::Version
         | 
| 107 107 | 
             
                  version: '0'
         | 
| 108 108 | 
             
            requirements: []
         | 
| 109 | 
            -
             | 
| 109 | 
            +
            rubyforge_project: 
         | 
| 110 | 
            +
            rubygems_version: 2.6.14
         | 
| 110 111 | 
             
            signing_key: 
         | 
| 111 112 | 
             
            specification_version: 4
         | 
| 112 113 | 
             
            summary: 'Ansible integration with Foreman (theforeman.org): core bits'
         |