diff --git a/html5/_main_toc.html.slim b/html5/_main_toc.html.slim index 652f64525..5ec4392ce 100644 --- a/html5/_main_toc.html.slim +++ b/html5/_main_toc.html.slim @@ -168,10 +168,10 @@ nav.sidebar-nav | Plugin Development li a.nav-link href="/latest/plugin_installation.html" - | Plugin Installation + | Plugin Installation and Configuration li a.nav-link href="/latest/plugin_management.html" - | Plugin Management + | Plugin Management via APIs li a.nav-link href="/latest/plugin_use_cases.html" | Special Plugin Use Cases @@ -329,7 +329,7 @@ nav.sidebar-nav | Aviate Catalog Guide li a.nav-link href="/latest/how-to-install-the-aviate-plugin.html" - | Plugin Installation + | Aviate Plugin Installation li a.nav-link href="/latest/aviate-database-migrations.html" | Database Migrations diff --git a/userguide/analytics/userguide_analytics.adoc b/userguide/analytics/userguide_analytics.adoc index 4151d2261..e1afddd61 100644 --- a/userguide/analytics/userguide_analytics.adoc +++ b/userguide/analytics/userguide_analytics.adoc @@ -18,19 +18,18 @@ The https://github.com/killbill/killbill-analytics-plugin[analytics plugin] is a == Plugin Installation -A plugin can be installed either via https://docs.killbill.io/latest/userguide_kaui.html[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[_KPM_]. In order to install a plugin via Kaui, please refer to the https://docs.killbill.io/latest/plugin_installation.html#_installing_via_kaui[__Plugin Installation Instructions__] document. In order to install a plugin via kpm, you may follow the steps given below: +The analytics plugin can easily be installed via the https://aviate.killbill.io[__Aviate UI__]. Refer to https://docs.killbill.io/latest/plugin_installation#_installing_via_aviate_marketplace[this doc] for a detailed demo. -. Ensure that you have kpm installed as explained https://github.com/killbill/killbill-cloud/tree/master/kpm#kpm-installation[here]. +Alternatively, the plugin can also be via https://docs.killbill.io/latest/userguide_kaui.html[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[_KPM_] as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. + +For example, to install the plugin via https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM], you can run the following command: -. Install the plugin using the following `kpm` command (Replace `` with the path where you want to install the plugin. This path should match the path specified by the `org.killbill.osgi.bundle.install.dir` property in the https://docs.killbill.io/latest/userguide_configuration.html#_configuration_properties_table[__Kill Bill Configuration__]): [source,bash] +---- kpm install_java_plugin analytics --destination= +---- -. Verify that the plugin is installed properly. This can be done by ensuring that the plugin JAR is present at the `path_to_install_plugin` specified in the previous step. Alternatively, you can also open https://docs.killbill.io/latest/userguide_kaui.html[Kaui], hover over the plug icon and click on `analytics`. This should display the following screen: - -image::https://github.com/killbill/killbill-docs/raw/v3/userguide/assets/img/analytics-plugin/analytics-plugin-in-kaui.png[align=center] - -. If you would like to make changes to the plugin, you can clone the plugin code, build and deploy it as explained https://github.com/killbill/killbill-analytics-plugin[here]. +If you would like to make changes to the plugin, you can clone the plugin code, build and deploy it as explained https://github.com/killbill/killbill-analytics-plugin[here]. == Database Configuration @@ -61,7 +60,9 @@ You can configure the following properties related to the analytics plugin in th *Note:* All the properties specified above are optional and the analytics plugin uses suitable defaults in case they are not specified. We however encourage you use different notification queue tables by specifying the `org.killbill.notificationq.analytics.tableName` and `org.killbill.notificationq.analytics.historyTableName` properties. -In addition, the analytics plugin also allows some optional https://docs.killbill.io/latest/userguide_configuration.html#_per_tenant_properties[tenant level] configuration. This can be done by executing the https://apidocs.killbill.io/tenant.html#add-a-per-tenant-configuration-for-a-plugin[per-tenant configuration] endpoint as follows: +In addition, the analytics plugin also allows some optional https://docs.killbill.io/latest/userguide_configuration.html#_per_tenant_properties[tenant level] configuration. The configuration can easily be done via the https://aviate.killbill.io/home[Aviate UI] Refer to https://docs.killbill.io/latest/plugin_installation#_configuring_via_aviate_ui[this doc] for a detailed demo. + +Alternatively, the tenant configuration can also be done or via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint as follows: [source,bash] ---- diff --git a/userguide/assets/aviate/aviate-plugin-marketplace.png b/userguide/assets/aviate/aviate-plugin-marketplace.png new file mode 100644 index 000000000..9f1c289de Binary files /dev/null and b/userguide/assets/aviate/aviate-plugin-marketplace.png differ diff --git a/userguide/platform/userguide_configuration.adoc b/userguide/platform/userguide_configuration.adoc index 889743def..487837cbf 100644 --- a/userguide/platform/userguide_configuration.adoc +++ b/userguide/platform/userguide_configuration.adoc @@ -20,9 +20,11 @@ The subsequent sections elaborate each of these approaches. Per tenant properties refers to properties that can be specified at a tenant level. Thus, each tenant can have different values for these properties. -Such properties are stored in the Kill Bill database and can be set by invoking the https://apidocs.killbill.io/#tenant-add-a-per-tenant-system-properties-configuration[_uploadPerTenantConfig_] endpoint. +Such properties are stored in the Kill Bill database. These properties can easily be set via the https://aviate.killbill.io[Aviate UI] by navigating to the `Settings` tab in the left nav. -For instance to set the invoice dry run notification schedule for the `boblazar` tenant, you can invoke the endpoint as follows: +Alternatively, they can be set by invoking the https://apidocs.killbill.io/#tenant-add-a-per-tenant-system-properties-configuration[_uploadPerTenantConfig_] endpoint. + +For instance to set the invoice dry run notification schedule for the `bob/lazar` tenant, you can invoke the endpoint as follows: [source] ---- diff --git a/userguide/tutorials/avatax-plugin.adoc b/userguide/tutorials/avatax-plugin.adoc index e12576b14..9188f2680 100644 --- a/userguide/tutorials/avatax-plugin.adoc +++ b/userguide/tutorials/avatax-plugin.adoc @@ -58,7 +58,9 @@ Here is how the main Avalara fields map to Kill Bill: == Plugin Installation -You can install the plugin as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. +The Avatax plugin can easily be installed via the https://aviate.killbill.io[__Aviate UI__]. Refer to the <> section below for more details. + +Alternatively, the plugin can also be via https://docs.killbill.io/latest/userguide_kaui.html[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[_KPM_] as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. For example, to install the plugin via https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM], you can run the following command: @@ -67,8 +69,6 @@ For example, to install the plugin via https://github.com/killbill/killbill-clou kpm install_java_plugin killbill-avatax --destination= ---- -You can also install the plugin via the https://aviate.killbill.io/home[Aviate UI] "Plugin Marketplace" tab. Refer to the <> section below for more details. - == Database Configuration The AvaTax plugin requires some additional database tables. To create these tables, please follow the steps given below: @@ -106,7 +106,10 @@ org.killbill.billing.plugin.avatax.accountId |Your AvaTax account number | Ye |org.killbill.billing.plugin.avatax.requestTimeout|Specifies the maximum time in millisecond the client waits until the response is completed|No|60000 |=== -These properties can be configured globally via the https://docs.killbill.io/latest/userguide_configuration.html#global_configuration_properties[Kill Bill Configuration File] or on a per-tenant basis via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint. For example, to configure these properties for the `bob/lazar` tenant, you can use the following curl: +This configuration can easily be done via the https://aviate.killbill.io/home[Aviate UI] by clicking the "Configuration" link in the Aviate left nav. Refer to the <> section below for more details. +//TODO create a separate storylane demo and add a link here? + +Alternatively, these properties can be configured globally via the https://docs.killbill.io/latest/userguide_configuration.html#global_configuration_properties[Kill Bill Configuration File] or on a per-tenant basis via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint. For example, to configure these properties for the `bob/lazar` tenant, you can use the following curl: [source, bash] ---- @@ -124,8 +127,6 @@ org.killbill.billing.plugin.avatax.licenseKey=ZZZ' \ ---- //TODO: Properties for TaxRatesAPI are not included as I can no longer find any documentation for this in the Avalara docs. Check if the TaxRates API works and if so include these properties -Alternatively, you can also configure these properties via the https://aviate.killbill.io/home[Aviate UI] "Plugin Configuration" tab. Refer to the <> section below for more details. - [[aviate_integration]] == Aviate Integration diff --git a/userguide/tutorials/braintree-plugin.adoc b/userguide/tutorials/braintree-plugin.adoc index 37afb61fb..8dd440e3e 100644 --- a/userguide/tutorials/braintree-plugin.adoc +++ b/userguide/tutorials/braintree-plugin.adoc @@ -14,7 +14,9 @@ The Braintree plugin allows you to process payments via the Braintree payment ga == Plugin Installation -You can install the plugin as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. +The Braintree plugin can easily be installed via the https://aviate.killbill.io[__Aviate UI__]. Refer to the <> section below for more details. + +Alternatively, the plugin can also be via https://docs.killbill.io/latest/userguide_kaui.html[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[_KPM_] as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. For example, to install the plugin via https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM], you can run the following command: @@ -23,8 +25,6 @@ For example, to install the plugin via https://github.com/killbill/killbill-clou kpm install_java_plugin braintree --destination= ---- -You can also install the plugin via the https://aviate.killbill.io/home[Aviate UI] "Plugin Marketplace" tab. Refer to the <> section below for more details. - == Database Configuration The Braintree plugin requires some additional database tables. To create these tables, please follow the steps given below: @@ -47,7 +47,9 @@ The Braintree plugin requires the following properties: |org.killbill.billing.plugin.braintree.btPrivateKey|The private API key from your Braintree account used alongside the public key to authenticate API calls.|Yes|- |=== -These properties can be configured globally via the https://docs.killbill.io/latest/userguide_configuration.html#global_configuration_properties[Kill Bill Configuration File] or on a per-tenant basis via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint. For example, to configure these properties for the `bob/lazar` tenant, you can use the following curl: +This configuration can easily be done via the https://aviate.killbill.io/home[Aviate UI] by clicking the "Configuration" link in the Aviate left nav. Refer to the <> section below for more details. + +Alternatively, these properties can be configured globally via the https://docs.killbill.io/latest/userguide_configuration.html#global_configuration_properties[Kill Bill Configuration File] or on a per-tenant basis via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint. For example, to configure these properties for the `bob/lazar` tenant, you can use the following curl: [source, bash] ---- @@ -67,8 +69,6 @@ org.killbill.billing.plugin.braintree.btPrivateKey=xxx' \ Expected result: HTTP `201`/`204` and no validation errors in the response. -Alternatively, you can also configure these properties via the https://aviate.killbill.io/home[Aviate UI] "Plugin Configuration" tab. Refer to the <> section below for more details. - // == Kaui Integration TBD [[aviate_integration]] diff --git a/userguide/tutorials/email-notification-plugin.adoc b/userguide/tutorials/email-notification-plugin.adoc index 2f7e7747b..ff4aea12b 100644 --- a/userguide/tutorials/email-notification-plugin.adoc +++ b/userguide/tutorials/email-notification-plugin.adoc @@ -37,24 +37,23 @@ To send an email the following is required: == Plugin Installation -A plugin can be installed either via https://docs.killbill.io/latest/plugin_installation.html#_installing_via_kaui[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[__KPM__] or https://docs.killbill.io/latest/plugin_installation#_installing_via_aviate_marketplace[_Aviate UI_]. In order to install a plugin via kpm, you may follow the steps given below: +The email notification plugin can easily be installed via the https://aviate.killbill.io[__Aviate UI__]. Refer to https://docs.killbill.io/latest/plugin_installation#_installing_via_aviate_marketplace[this doc] for a detailed demo. -. Ensure that you have kpm installed as explained https://github.com/killbill/killbill-cloud/tree/master/kpm#kpm-installation[here]. +Alternatively, the plugin can also be installed either via https://docs.killbill.io/latest/plugin_installation.html#_installing_via_kaui[__Kaui__] or https://github.com/killbill/killbill-cloud/blob/master/kpm[__KPM__] as explained in the https://docs.killbill.io/latest/plugin_installation#_plugin_installation[Plugin Installation Guide]. + +For example, to install the plugin via https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM], you can run the following command: -. Install the plugin using the following kpm command (Replace `` with the path where you want to install the plugin. This path needs to be configured via the `org.killbill.osgi.bundle.install.dir` property as specified in the https://docs.killbill.io/latest/userguide_configuration.html[Kill Bill Configuration Guide]): [source,bash] +---- kpm install_java_plugin email-notifications --destination= +---- -. Verify that the plugin is installed properly. This can be done by ensuring that the plugin JAR is present at the `path_to_install_plugin` specified in the previous step. Alternatively, you can also open `kpm` in https://docs.killbill.io/latest/userguide_kaui.html[Kaui] and verify that the email notification plugin is running as follows: -+ -image::https://github.com/killbill/killbill-docs/raw/v3/userguide/assets/img/email-notification-plugin/kaui_email_notification_plugin.png[align=center] - -. If you would like to make changes to the plugin, you can clone the plugin code, build and deploy it as explained https://github.com/killbill/killbill-email-notifications-plugin[here]. +If you would like to make changes to the plugin, you can clone the plugin code, build and deploy it as explained https://github.com/killbill/killbill-email-notifications-plugin[here]. == Database Configuration -The email-notification-plugin requires some additional database tables. To create these tables, please follow the steps given below: +The email-notification-plugin requires some additional database tables. To create these tables, please follow the stes given below: . Connect to the Kill Bill database. @@ -89,7 +88,9 @@ Reboot the system to apply the changes. === SMTP Configuration A tenant needs to be configured with the SMTP properties required for sending emails. Additionally, the tenant can also be configured with the events for which emails should be sent. In addition to the per-tenant configuration, the plugin also allows a more granular account-level configuration for the set of emails to be sent for the particular account. Thus, either the tenant or the account needs to be configured with the events for which the email needs to be sent. -The tenant configuration can be done by executing the required API endpoints via *cURL* as explained below: +The configuration can easily be done via the https://aviate.killbill.io/home[Aviate UI] Refer to https://docs.killbill.io/latest/plugin_installation#_configuring_via_aviate_ui[this doc] for a detailed demo. + +Alternatively, the tenant configuration can also be done or via the https://apidocs.killbill.io/tenant#add-a-per-tenant-configuration-for-a-plugin[Add a per-tenant configuration for a plugin] endpoint as explained below: [[tenant-config]] *Configure the tenant* using the following cURL command (Replace `` with a comma-separated list of the events for which the emails need to be sent. For example, to configure the tenant to send emails for *INVOICE_CREATION* and *INVOICE_PAYMENT_SUCCESS*, specify `org.killbill.billing.plugin.email-notifications.defaultEvents=INVOICE_CREATION,INVOICE_PAYMENT_SUCCESS`): diff --git a/userguide/tutorials/plugin_installation.adoc b/userguide/tutorials/plugin_installation.adoc index 52131db1c..490834059 100644 --- a/userguide/tutorials/plugin_installation.adoc +++ b/userguide/tutorials/plugin_installation.adoc @@ -66,17 +66,31 @@ A key identifies each entry in that repository, and that key is the `pluginKey`. If you have changed the default admin username or password in your `shiro.ini` file, you must also specify the corresponding values for `org.killbill.billing.plugin.kpm.adminUsername` and `org.killbill.billing.plugin.kpm.adminPassword` in your Kill Bill configuration. Otherwise, plugin installation (including via Kaui, KPM, or the API) will fail because the KPM plugin will not be able to authenticate with the correct credentials. ==== +=== Installing via Aviate Marketplace + +The https://aviate.killbill.io[Aviate marketplace] provides a user-friendly interface to discover, install, and manage Kill Bill plugins directly from your browser. For this, you will need to have an Aviate Flock account and add your local KB instance as a deployment. Refer to https://docs.killbill.io/latest/aviate-deployment-management[Aviate Deployment Management] documentation for more details on how add your local KB instance as a deployment. + +Once you have the Aviate Flock account and your local KB instance added as a deployment, you can navigate to the Aviate Marketplace by clicking the "Plugins" link in the left nav. From there, you can browse the available plugins, view their details, and install them with a single click: + +image::../assets/aviate/aviate-plugin-marketplace.png[Aviate Marketplace,width=50%,align=center] + +Refer to the following demo for a walkthrough of the plugin installation process via the Aviate marketplace: + +:storylane-id: hpinxdtaxxws +:storylane-embed-type: inline +include::{sourcedir}/includes/storylane-embed.adoc[] + === Installing via Kaui In order to deploy a plugin via Kaui, you need to do the following: * Open Kaui. -* Click on the *Plug* Icon at the top and click on kpm. +* Click on the *Plugins* link at the bottom. * Click on *Install New Plugin*. -* Click on the *Download* icon next to the plugin that you wish to install. +* Click on the *Install* link next to the plugin that you wish to install. * Refresh the page after a while. @@ -85,7 +99,7 @@ In order to deploy a plugin via Kaui, you need to do the following: === Installing via KPM -The standard way to deploy plugins is to use the Kill Bill Package Manager (https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM]). +Plugins can also be installed via the Kill Bill Package Manager (https://github.com/killbill/killbill-cloud/blob/master/kpm[KPM]). KPM can be used for: @@ -93,6 +107,23 @@ KPM can be used for: * Deploying *Kill Bill* (plugins maintained by the Kill Bill team) plugins. * Deploying *Third-party* (plugins developed and maintained by a third party and not by the Kill Bill team) plugins. +==== Kill Bill Plugins + +A Kill Bill plugin is a plugin that is maintained by the Kill Bill team. Such plugins have a key in the Kill Bill https://github.com/killbill/killbill-cloud/blob/master/kpm/lib/kpm/plugins_directory.yml[_Plugin Directory_]. So, in order to install such a plugin, its key needs to be specified. + +To install a plugin via KPM, you need to do the following: + +. Install `kpm` as explained https://github.com/killbill/killbill-cloud/tree/master/kpm#kpm-installation[here]. +. Install the desired plugin as follows: ++ +[source,bash] +---- +kpm install_java_plugin '' --destination= +---- ++ +* Replace `plugin-key` with an appropriate value from the Kill Bill https://github.com/killbill/killbill-cloud/blob/master/kpm/lib/kpm/plugins_directory.yml[_Plugin Directory_]. For example, in order to install the stripe plugin, you can replace `plugin-key` with `stripe` +* Replace `` with the path where you want to install the plugin. This path needs to be configured via the `org.killbill.osgi.bundle.install.dir` property as specified in the https://docs.killbill.io/latest/userguide_configuration.html[Kill Bill Configuration Guide]) + ==== Custom Plugins If you are a developer and either modifying an existing plugin or creating a new plugin, you can use KPM to install the plugin. @@ -110,20 +141,6 @@ kpm install_java_plugin '' --from-source-file=".jar" * Replace `` with the path where you want to install the plugin. This path should match the path specified by the `org.killbill.osgi.bundle.install.dir` property in the https://docs.killbill.io/latest/userguide_configuration.html[_Kill Bill Configuration File_]. * If `--destination` is not specified, the plugin is installed by default in the `/var/tmp/bundles` directory -==== Kill Bill Plugins - -A Kill Bill plugin is a plugin that is maintained by the Kill Bill team. Such plugins have a key in the Kill Bill https://github.com/killbill/killbill-cloud/blob/master/kpm/lib/kpm/plugins_directory.yml[_Plugin Directory_]. So, in order to install such a plugin, its key needs to be specified. - -A Kill Bill Java plugin can be installed using the `kpm install_java_plugin` command as follows: - -[source,bash] ----- -kpm install_java_plugin '' ----- - -* Replace `plugin-key` with an appropriate value from the Kill Bill https://github.com/killbill/killbill-cloud/blob/master/kpm/lib/kpm/plugins_directory.yml[_Plugin Directory_]. -* For example, in order to install the stripe plugin, you can replace `plugin-key` with `stripe` - ==== Third-party Plugins Third-party plugins are plugins developed and maintained by a third party and not by the Kill Bill team. Such plugins can be installed via KPM from their binary repositories (Maven Central, GitHub Packages and Cloudsmith). @@ -141,15 +158,6 @@ kpm install_java_plugin '' * Replace `plugin-key` with the plugin name. * Replace ``, ``, `` with appropriate values from the binary repository. -=== Installing via Aviate Marketplace - -The https://aviate.killbill.io[Aviate marketplace] provides a user-friendly interface to discover, install, and manage Kill Bill plugins directly from your browser. For this, you will need to have an Aviate Flock account and add your local KB instance as a deployment. Refer to https://docs.killbill.io/latest/aviate-deployment-management[_Aviate Deployment Management documentation] for more details on how add your local KB instance as a deployment. - -Refer to the following demo for a walkthrough of the plugin installation process via the Aviate marketplace: - -:storylane-id: gxfjy9nl7zuo -:storylane-embed-type: inline -include::{sourcedir}/includes/storylane-embed.adoc[] === Installing via Plugin Management APIs @@ -231,16 +239,27 @@ The two previous mechanisms work well for global settings, but are inadequate to At a high level, this mechanism works in the following way: -1. An administrator uses the Kill Bill API (or Kaui) to upload the configuration. +1. An administrator uses https://aviate.killbill.io[__Aviate UI__], Kill Bill API (or Kaui) to upload the configuration. 2. Kill Bill stores the config in the `tenant_kvs` table using a `tenant_key` of `PLUGIN_CONFIG_` and sets the `tenant_value` with the config provided. 3. Kill Bill broadcasts the change across the cluster of nodes and emits a configuration bus event: `TENANT_CONFIG_CHANGE` or `TENANT_CONFIG_DELETION`. 4. The plugin code is *responsible to listen to these events* and take appropriate action to reload/delete its configuration for that specific tenant. -You can use the following API endpoints to upload, retrieve and delete plugin configuration: +==== Configuring via Aviate UI + +Plugin configuration can easily be done via the https://aviate.killbill.io/home[Aviate UI] by clicking the "Plugins" link in the Aviate left nav. +Refer to the following demo for a walkthrough of the plugin configuration process via the Aviate marketplace: + +:storylane-id: dgagj5g2n9cm +:storylane-embed-type: inline +include::{sourcedir}/includes/storylane-embed.adoc[] [[upload_per_tenant_config]] -==== Upload New Config +==== Configuring via API + +You can also use the following API endpoints to upload, retrieve and delete plugin configuration: + +*Upload New Config* [source,bash] ---- @@ -257,7 +276,7 @@ curl -v \ The `` is treated as a string and it could be the content of an `xml` or `json` file, a list of `key-value` parameters, ... -==== Retrieve Config +*Retrieve Config* [source,bash] ---- @@ -270,7 +289,7 @@ curl -v \ http://127.0.0.1:8080/1.0/kb/tenants/uploadPluginConfig/ ---- -==== Delete Config +*Delete Config* [source,bash] ----