ctrladel/acquia_cli

一个用于与Acquia CloudAPI集成的Robo CLI工具

维护者

详细信息

github.com/ctrladel/acquia_cli

源代码

资助包维护!
typhonius

dev-main 2023-03-28 13:49 UTC

README

Acquia Cli

Acquia Cli工具为开发者、系统管理员、发布经理和网站管理员提供了一个简单易用的工具,用于获取Acquia云的信息和执行任务。

Acquia Cli易于安装,并与Acquia中已经构建的权限结构保持一致。该工具可用于完成任何可以使用Acquia网络界面完成的任务,并为每个任务提供内置说明。

如果Acquia Cli没有内置任务,只需创建一个工单或拉取请求,将其包含在内。

安装前

生成API访问令牌

要生成API访问令牌,请登录到https://cloud.acquia.com,然后访问https://cloud.acquia.com/#/profile/tokens,点击创建令牌

  • 为访问令牌提供一个标签,以便可以轻松识别。点击创建令牌
  • 令牌已生成,将API密钥和API密钥复制到安全的地方。请确保现在记录它:您将无法再次检索此访问令牌的秘密。

下载应用程序版本

在继续设置步骤之前,请先选择以下打包应用程序或源应用程序。

安装打包应用程序(最简单的方法)

为了快速轻松地安装打包应用程序,可以执行以下三个步骤。

wget https://github.com/typhonius/acquia_cli/releases/latest/download/acquiacli.phar
mv acquiacli.phar /usr/local/bin/acquiacli
chmod +x /usr/local/bin/acquiacli

自动更新

如果使用打包应用程序,每次新版本发布时,都可以通过在计算机的任何位置运行以下命令简单地轻松地进行更新:

acquiacli self:update

从源安装(高级)

要从源安装,使用以下命令将存储库克隆到计算机上的一个位置:

git clone https://github.com/typhonius/acquia_cli.git
cd acquia_cli
composer install

设置

选择以下方法之一完成AcquiaCli安装的设置。

自动设置

使用上述步骤之一下载应用程序后,运行以下命令以添加您的Acquia凭据。

  1. 运行acquiacli setup(或当作为其他项目的依赖项使用时,运行./vendor/bin/acquiacli setup),它会要求您输入凭据并自动创建此文件。
  2. 运行acquiacli drush:aliases以下载您可用的Drush别名。按照命令输出的说明进行安装。

手动安装/设置

或者,按照以下步骤进行手动安装。

  1. default.acquiacli.yml文件复制到您的项目根目录,并将其命名为acquiacli.yml
  2. 将您的Acquia密钥和密钥添加到acquiacli.yml文件中。

环境变量

可以使用环境变量来存储和提供API密钥和密钥,从而无需配置文件。有关如何配置这些环境变量的示例,请参阅default.acquiacli.yml中的值。

  • ACQUIACLI_KEY API密钥的环境变量
  • ACQUIACLI_SECRET API密钥的秘密的环境变量
  • ACQUIACLI_TIMEZONE 使用支持的 PHP 时区 查看本地时区的时间
  • ACQUIACLI_FORMAT 使用支持的 PHP 日期字符串 以不同的格式显示时间
  • ACQUIACLI_TASKWAIT 在调用 API 检查任务状态之前需要等待的秒数。
  • ACQUIACLI_TIMEOUT 任务在被视为超时之前需要等待的秒数。

如果需要使用环境变量,则需要将它们放置在 Linux/Mac 上的相关 bash 文件中,例如 $HOME/.bashrc$HOME/.bash_profile,格式如下。

export ACQUIACLI_KEY=15fd1cde-1e66-b113-8e98-5ff9d444d54f
export ACQUIACLI_SECRET=Sdtg0o83TrZm5gVckpaZynCxpikMqcht9u3fexWIHm7

Windows 用户需要在系统设置中添加环境变量。

配置

Acquia Cli 工具使用用户自己机器上的级联配置,允许根据需要使用全局和项目凭据和覆盖。

Acquia Cli 将按照以下顺序加载配置,每个步骤都将覆盖之前步骤中匹配的数组键

  1. 首先,从项目根目录中的 default.acquiacli.yml 加载默认配置(与 Phar 一起打包)。
  2. 其次,如果存在,从 $HOME/.acquiacli/acquiacli.yml 加载全局配置。
  3. 最后,如果存在,将加载项目根目录中的 acquiacli.yml 文件。(使用 Phar 时不适用)
  4. 环境变量对密钥和秘密具有整体优先级,但其他配置不会被覆盖。

用户可以随时通过 acquiacli setup 删除(手动)和重新创建全局和项目文件。

可以在相关的 acquiacli.yml 文件中手动设置选项,以在 extraconfig 键下更改以下参数

用法/示例

以下一些命令具有简化的别名,例如 environment:info 的别名为 e:i

# Show which applications you have access to.
acquiacli application:list

# Show detailed information about servers in the prod environment (assuming sitename of prod:acquia obtained from site:list command)
acquiacli environment:info prod:myacquiasite prod

# Copy the files and db from alpha to dev in preparation for a deployment
acquiacli deploy:prepare prod:myacquiasite dev alpha

# Copy the files and db from prod to test to prepare for a deployment.
# N.B. if the last argument is omitted in deploy:prepare, prod will be used
acquiacli deploy:prepare prod:myacquiasite test

# Deploy the develop-build branch to the test environment.
acquiacli code:switch prod:myacquiasite test develop-build

# Deploy the release-1.2.3 branch/tag to the production environment without prompting the user to confirm.
acquiacli code:switch prod:myacquiasite prod release-1.2.3 --yes

# Promote the code in preprod to prod.
acquiacli code:deploy prod:myacquiasite preprod prod

# Get a list of organizations you have access to and display organization UUIDs.
acquiacli organization:list

# Add a new team to an organization.
acquiacli team:create 'My Team Name' 'External Contractors'

# Add a new role to an organization (Use permissions:list to get available permissions for the new role).
acquiacli role:add 'My Team Name' 'Contractors' 'move file to non-prod,move file from prod,download db backup non-prod,download logs non-prod,deploy to non-prod'

# Associate a team with an application within the organization (Use organization:teams to get team UUIDs).
acquiacli team:addapp prod:myacquiasite d2693c6e-58e7-47e5-8867-e2db88c71b8c

# Add a user to a team and assign roles (Use role:list to obtain the role UUIDs).
acquiacli team:invite d2693c6e-58e7-47e5-8867-e2db88c71b8c 'username@example.com' f0b89594-0fc5-4609-935f-1f18c313c6c7

附加参数

可以添加 --limit--sort--filter 参数到 Acquia Cli 工具的每个命令中,为正在处理站点的用户提供更多相关信息。

限制

要限制返回条目的数量,请使用命令中的 --limit=x

# Reduce the number of notifications passed back to 10.
acquiacli notification:list myacquiasite --limit=10

排序

可以使用逗号分隔的字符串作为排序的字段。字段的顺序很重要。字段前的 - 表示应该按降序排序。并非所有字段都可以排序。

# Sort all applications first by organization name (alphabetically) and then by label (reverse-alphabetically).
acquiacli application:list --sort='organization_name,-label'

过滤

过滤器查询字符串参数限制了从请求返回的数据。过滤查询通过将结果集中的每一行与过滤器进行测试来限制包括(或不包括)在结果中的行。并非所有字段都可以过滤。

可以使用以下八个过滤器运算符,并且必须进行 URL 编码才能包含。运算符如下

  • 等于: =
  • 不等于: !=
  • 大于: >
  • 小于: <
  • 大于等于: >=
  • 小于等于: <=
  • 包含子字符串: =@
  • 不包含子字符串: !@

可以使用 OR 和 AND 布尔逻辑组合过滤器。OR 运算符由逗号 (,) 定义,AND 运算符由分号 (;) 定义。

# Show all tasks with a label starting with Database after 1st April 2019 and before 1st Jan 2020.
acquiacli notification:list myacquiasite --filter='label=@Database*;created_at>2019-04-01;created_at<2020-01-01'
# Show all tasks with a label starting with Database OR a label exactly matching 'Code switched'
acquiacli notification:list myacquiasite --filter='label=@Database*,label=Code switched'

查看实际操作

asciicast

命令参数

应用程序 UUID

如果命令需要应用程序 UUID 作为参数,它可以以以下三种方式之一提供 - 以下是对托管域的描述

  • Acquia 托管 ID 本身,例如 myacquiasite
  • 完整的 Acquia 托管域和 ID,例如 prod:myacquiasite
  • 应用程序 UUID,例如 8ff6c046-ec64-4ce4-bea6-27845ec18600

托管域

Acquia 使用“域”的概念来区分两种托管层级上的客户

  • prod: “prod” 域仅限于 Acquia Cloud Enterprise (ACE) 客户。
  • devcloud:'devcloud' 实体仅限于 Acquia Cloud Professional (ACP) 客户使用。

如果没有提供托管实体,默认使用 prod。可以通过在命令中指定实体来覆盖此设置,例如 --realm=devcloud

您可以通过运行 acquiacli application:list 来发现您应用程序的 UUID 和托管 ID(包括实体)。

其他参数

环境参数使用环境的标签名称,例如 dev。

组织参数使用组织的标签名称,例如 mycompany。

所有其他参数目前都以 UUID 形式提供,包括但不限于

  • 角色 ID
  • 团队 ID

使用以下参数的命令将自动由 Acquia Cli 工具使用 SDK 转换。这是通过在 AcquiaCommand 类中的 validateUuidHook 方法中使用 @hook validate 注解 实现的。

  • $uuid 将转换为应用程序的 UUID。

CloudApi.php 中存在辅助函数,可以将用户提供的参数转换为更有用的对象。

  • 可以通过使用 getEnvironment 方法将环境转换为 EnvironmentResponse 对象。
  • 可以通过使用 getOrganization 方法将组织转换为 OrganizationResponse 对象。

在 Windows 上的使用

Phar 文件已经在 Windows 上进行了最小测试。可以使用 PHP 通过如 Chocolatey 这样的工具执行。在某些情况下,您可能会遇到与 SSL 相关的 cURL 问题。修复 SSL 问题的推荐方法是遵循这里的基本说明。您可能需要根据您的 PHP 安装使用替代路径。