Sha256: 07583f73ed920186732ca41ad3f2bfa450ac46ed9035e7caa24d25d063ff6f2b

Contents?: true

Size: 1.96 KB

Versions: 11

Compression:

Stored size: 1.96 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,
            :verbosity_level => Setting[:ansible_verbosity],
            :remote_execution_command => ansible_command?(
              template_invocation.template
            ),
            :name => host.name
          )
        end

        def secrets(host)
          {
            'per-host' => {
              host.name => {
                'ansible_ssh_pass' => rex_ssh_password(host),
                'ansible_sudo_pass' => rex_sudo_password(host)
              }
            }
          }
        end

        def rex_ssh_password(host)
          host_setting(host, 'remote_execution_ssh_password')
        end

        def rex_sudo_password(host)
          host_setting(host, 'remote_execution_sudo_password')
        end

        def host_setting(host, setting)
          host.params[setting.to_s] || Setting[setting]
        end

        def supports_effective_user?
          true
        end

        def proxy_operation_name
          'ansible-runner'
        end

        private

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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
foreman_ansible-4.0.3.5 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.3.4 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.3.3 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.3.2 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-5.0.1 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.5 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.3.1 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.4 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-5.0.0 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.3 app/models/foreman_ansible/ansible_provider.rb
foreman_ansible-4.0.2 app/models/foreman_ansible/ansible_provider.rb