Sha256: 21922e2c5046679dce909fc3ca700b663756a7d8f522e0bf8ad9ec50bd9e22cc

Contents?: true

Size: 1.22 KB

Versions: 7

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

if defined? ForemanRemoteExecution
  module ForemanAnsible
    # Provider for RemoteExecution that allows to run Ansible playbooks.
    # Read the source of other RemoteExecution providers for more.
    class AnsibleProvider < RemoteExecutionProvider
      class << self
        def ssh_password(host)
          host_setting(host, :remote_execution_ssh_password)
        end

        def ssh_key_passphrase(host)
          host_setting(host, :remote_execution_ssh_key_passphrase)
        end

        def humanized_name
          'Ansible'
        end

        def proxy_command_options(template_invocation, host)
          super(template_invocation, host).merge(
            'ansible_inventory' => ::ForemanAnsible::InventoryCreator.new(
              [host], template_invocation
            ).to_hash.to_json,
            :remote_execution_command => ansible_command?(
              template_invocation.template
            )
          )
        end

        def supports_effective_user?
          true
        end

        private

        def ansible_command?(template)
          template.remote_execution_features.
            where(:label => 'ansible_run_host').empty?
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
foreman_ansible-2.3.6 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.5 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.4 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.3 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.2 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.1 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-2.3.0 app/models/foreman_ansible/ansible_provider.rb