typhonius/acquia_cli

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

资助包维护!
typhonius

2.0.10 2020-11-21 03:37 UTC

README

Acquia Cli Test Total Downloads Coverage Status

License Latest Stable Version Latest Unstable Version

Acquia Cli

Acquia Cli 工具为开发者、系统操作员、发布管理人员和网站管理员提供了一种简单易用的工具,用于获取Acquia Cloud上的信息并运行任务。

Acquia Cli 安装简单,与Acquia中已构建的权限结构相一致。该工具可用于任何可以通过Acquia Web界面完成的任务,并为每个任务包含内置说明。

如果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

附加参数

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

限制

要限制返回条目的数量,请使用命令中的--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上进行了最小限度的测试。可以使用类似Chocolatey的工具从PHP执行它。在某些情况下,可能会遇到与SSL相关的cURL问题。建议修复SSL问题的方法是遵循这里的基本说明。可能需要根据您的PHP安装使用替代路径。