// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/ssh-source.svg[] SSH Source

*Provided by: "Apache Software Foundation"*

*Support Level for this Kamelet is: "Preview"*

Receive data from SSH session.

== Configuration Options

The following table summarizes the configuration options available for the `ssh-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *connectionHost {empty}* *| Connection Host| The SSH Host| string| | 
| *connectionPort {empty}* *| Connection Port| The SSH Port| string| `22`| 
| *password {empty}* *| Password| The SSH password to use| string| | 
| *pollCommand {empty}* *| Poll Command| The command to run while polling the SSH session| string| | `"date"`
| *username {empty}* *| Username| The SSH username to use| string| | 
| delay| Delay| Milliseconds before the next poll| integer| `500`| 
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `ssh-source` can be used in various contexts.

=== Knative Source

The `ssh-source` Kamelet can be used as Knative source by binding it to a Knative object.

.ssh-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: ssh-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: ssh-source
    properties:
      connectionHost: "The Connection Host"
      password: "The Password"
      pollCommand: "date"
      username: "The Username"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel
  
----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `ssh-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f ssh-source-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:ssh

- camel:kamelet
 

==== *Binding to Knative using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind ssh-source -p "source.connectionHost=The Connection Host" -p "source.password=The Password" -p "source.pollCommand=date" -p "source.username=The Username" channel/mychannel
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

=== Kafka Source

The `ssh-source` Kamelet can be used as Kafka source by binding it to a Kafka topic.

.ssh-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: ssh-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: ssh-source
    properties:
      connectionHost: "The Connection Host"
      password: "The Password"
      pollCommand: "date"
      username: "The Username"
  sink:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic
  
----

Ensure that you've installed https://strimzi.io/[Strimzi] and created a topic named `my-topic` in the current namespace.
Make also sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `ssh-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f ssh-source-binding.yaml
----

==== *Binding to Kafka using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind ssh-source -p "source.connectionHost=The Connection Host" -p "source.password=The Password" -p "source.pollCommand=date" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
