如何在不手动配置的情况下使用databricks-cli

Mor*_*esh 9 bash azure databricks databricks-cli

我想使用 databricks cli:

databricks clusters list
Run Code Online (Sandbox Code Playgroud)

但这需要一个手动步骤,需要与用户进行交互工作:

databricks configure --token
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在无需手动干预的情况下使用 databricks cli,以便可以将其作为 ci/cd 管道的一部分运行?

Gee*_* VB 7

正如@usingnamespace 上面和官方文档中提到的:

CLI 0.8.0及以上版本支持环境变量,环境变量设置优先于配置文件中的设置。

DATABRICKS_HOST
DATABRICKS_USERNAME
DATABRICKS_PASSWORD
DATABRICKS_TOKEN
Run Code Online (Sandbox Code Playgroud)

这样,您不仅不会明文文件 ( ~/.databrickscfg ) 中暴露敏感数据,而且无需向脚本中添加任何更多代码。


usi*_*ace 5

您只需导出变量 DATABRICKS_HOST 和 DATABRICKS_TOKEN 即可。有了这些变量,您就不需要配置文件了。


Mor*_*esh 3

以下 bash 脚本自动配置 databricks cli:

echo "configuring databrick-cli authentication"

declare DATABRICKS_URL="https://westeurope.azuredatabricks.net"
declare DATABRICKS_ACCESS_TOKEN="authentication_token_generated_from_databricks_ux"

declare dbconfig=$(<~/.databrickscfg)
if [[ $dbconfig = *"host = "* && $dbconfig = *"token = "* ]]; then
  echo "file [~/.databrickscfg] is already configured"
else
  if [[ -z "$DATABRICKS_URL" || -z "$DATABRICKS_ACCESS_TOKEN" ]]; then
    echo "file [~/.databrickscfg] is not configured, but [DATABRICKS_URL],[DATABRICKS_ACCESS_TOKEN] env vars are not set"
  else
    echo "populating [~/.databrickscfg]"
    > ~/.databrickscfg
    echo "[DEFAULT]" >> ~/.databrickscfg
    echo "host = $DATABRICKS_URL" >> ~/.databrickscfg
    echo "token = $DATABRICKS_ACCESS_TOKEN" >> ~/.databrickscfg
    echo "" >> ~/.databrickscfg
  fi
fi
Run Code Online (Sandbox Code Playgroud)