18.4. 添加新清单
添加新清单涉及以下组件:
使用以下步骤创建清单:
流程
-
在导航面板中,选择
。Inventories 窗口显示当前可用的清单列表。 - 单击 ,再选择要创建的清单类型。
在以下字段中输入相关信息:
- Name :输入适合此清单的名称。
- 可选: 描述 :根据需要输入任意描述。
- Organization: 必需。在可用的机构中进行选择。
只适用于 智能清单:智能主机过滤器 :点击
图标打开一个单独的窗口来过滤此清单的主机。这些选项基于您选择的机构。
过滤器与标签类似,用于过滤包含这些名称的某些主机。因此,要填充 Smart Host Filter 字段,请指定包含您想要的主机的标签,而不是主机本身。在 Search 字段中输入标签,然后单击 。过滤是区分大小写的。如需更多信息,请参阅 智能主机过滤器。
实例组 :点击
图标打开一个单独的窗口。选择要运行此清单的实例组或组。如果列表太长,请使用搜索来缩小选项范围。您可以选择多个实例组,并根据您想要运行的顺序对它们进行排序。
- 可选: 标签 :选择描述此清单的标签,以便它们可用于对清单和作业进行分组和过滤。
-
仅适用于构建的清单:输入清单 :指定要包含在此构建的清单中的源清单。 点
图标从可用清单中选择。来自输入清单的空组将复制到构建的清单中。
- 可选:(仅适用于构建的清单): 缓存超时(秒) :设置您希望缓存插件数据超时的时间长度。
仅适用于构建的清单:详细控制 Ansible 生成的输出级别,因为 playbook 执行与构建的清单关联的清单源相关的级别。 从 Normal 到各种 Verbose 或 Debug 设置中选择详细程度。这仅显示在"details"报告视图中。
- 详细日志记录包括所有命令的输出。
- 调试日志记录非常详细,包括对某些支持实例有用的 SSH 操作信息。大多数用户都不需要查看调试模式输出。
- 只适用于构建的清单: 限制 与构建的清单关联的清单源返回的主机数量。您可以将组名称粘贴到 limit 字段中,以仅包含该组中的主机。有关更多信息,请退出 Source vars 设置。
仅适用于标准清单: 选项 :检查 Prevent Instance Group Fallback 选项,仅启用 Instance Groups 字段中列出的实例组来执行该作业。如果取消选中,则执行池中的所有可用实例将根据控制自动化控制器 管理指南中的 作业运行的 层次结构中所描述的层次结构使用。点
图标了解更多信息。
注意通过 API 为智能清单设置
prevent_instance_group_fallback
选项。变量 (构建的清单 的源变量):
- 要应用到此清单中的所有主机 的变量 变量定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。
-
构建的清单 的源变量会创建组,特别是在数据的
groups
键下。它接受 Jinja2 模板语法,呈现每个主机,进行true
或false
评估,如果结果为true
,则包括组中的主机(来自条目的密钥)。这特别有用,因为您可以将组名称粘贴到 limit 字段中,以仅包含该组中的主机。请参阅 智能主机过滤器中的示例 1。
- 点击 。
保存新清单后,您可以继续配置权限、组、主机、源和查看已完成的作业(如果适用于相关清单类型)。
18.4.1. 为清单添加权限
使用以下步骤为清单添加权限:
流程
-
在导航面板中,选择
。 - 选择一个模板,并在 Access 选项卡中点 。
- 选择要添加的用户或团队,然后点 。
- 选择名称旁边的复选框,从列表中选择一个或多个用户或团队作为成员。
点击
。在这个示例中,选择了两个用户来添加。
选择您希望所选用户或团队具有的角色。向下滚动以获得完整的角色列表。不同的资源有不同的可用选项。
- 点 将角色应用到所选用户或团队,并将它们添加为成员。
关闭 Add Users or Teams 窗口,以显示为每个用户和团队分配的更新角色。
删除权限
-
要删除特定用户的角色,请点其资源旁的
图标。
这会启动一个确认窗口,要求您确认解除关联。
18.4.2. 将组添加到清单
清单被分成不同的组,这些组可以包含主机和其他组。组仅适用于标准清单,不能直接通过智能清单进行配置。您可以通过用于标准清单的主机关联现有组。
以下操作可用于标准清单:
- 创建新组
- 创建新主机
- 在所选清单上运行命令
- 编辑清单属性
- 查看组和主机的活动流
- 获取构建清单的帮助
清单源不与组关联。生成的组为顶级组,仍然可以具有子组。所有这些生成的组都可以有主机。
使用以下步骤为清单创建新组:
流程
- 选择您要添加组的清单名称。
- 在 Inventory Details 页面中,选择 Groups 选项卡。
- 单击 Create Group 窗口。 以打开
输入相关详情:
- 名称 :必需
- 可选: 描述 :根据需要输入描述。
- 变量 :输入要应用到此组中的所有主机的定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。
- 点击 。
- 将组添加到模板后,会显示 Group 详情页面。
18.4.2.1. 在组内添加组
使用以下步骤在组中添加组:
流程
- 将组添加到模板后,会显示 Group 详情页面。
- 选择 Related Groups 选项卡。
- 点 。
- 选择是添加您的配置中已存在的组还是创建新组。
如果创建新组,请在必填和可选字段中输入相关详情:
- Name (必需):
- 可选: 描述 :根据需要输入描述。
- 变量 :输入要应用到此组中的所有主机的定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。
- 点击 。
- Create Group 窗口关闭,在为之创建了组组关联的组列表中,新创建的组会显示为一个条目。
如果您选择添加现有组,可用组会出现在单独的选择窗口中。
选择了一个组后,它将会显示在与组关联的组列表中。
- 要在子组下配置附加组和主机,请点击组列表中的子组名称,然后重复本节中列出的步骤。
18.4.2.2. 查看或编辑清单组
groups 列表视图会显示所有清单组,或者您可以将其过滤为仅显示根组。如果清单组不是另一个组的子集,则清单组被视为根组。
您可以删除子组而无需考虑依赖项,因为自动化控制器会查找依赖项,如子组或主机。如果存在,会显示一个确认窗口,供您选择是删除根组及其所有子组和主机,还是提升子组,以便它们及其主机成为顶层清单组。
18.4.3. 将主机添加到清单
您可以为清单以及组和组内的组配置主机。
使用以下步骤添加主机:
流程
- 选择您要添加组的清单名称。
- 在 Inventory Details 页面中,选择 Hosts 选项卡。
- 点 。
- 选择是添加您的配置中已存在的主机还是创建新主机。
- 如果创建新主机,请将切换设置为 On,以在运行作业时包含此主机。
输入相关详情:
- 主机名( 必需):
- 可选: 描述 :根据需要输入描述。
变量 :输入要应用到此组中所有主机的定义和值,如下例所示:
{ ansible_user : <username to ssh into> ansible_ssh_pass : <password for the username> ansible_become_pass: <password for becoming the root> }
使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。
- 点击 。
Create Host 窗口关闭,新建的主机显示在为其为其创建的组关联的主机列表中。
如果您选择添加现有主机,可用主机会出现在单独的选择窗口中。
选择主机后,它将显示在与组关联的主机列表中。
您可以通过选择主机并点
图标从此屏幕取消关联主机。
注意您也可以在此屏幕中运行临时命令。如需更多信息,请参阅 [Running 临时命令]。
要为主机配置额外的组,请点击主机列表中的主机名称。
这将打开所选主机的 Details 选项卡。
- 选择 Groups 选项卡为主机配置组。
点
将主机与现有组关联。可用的组会出现在单独的选择窗口中。选择要与主机关联的组,然后单击
。关联了一个组时,它将显示在与主机关联的组列表中。
- 如果使用主机运行作业,您可以在主机的 Completed Jobs 选项卡中查看这些作业的详情。
点
查看每个作业的详情。
您可以使用 API 中新添加的端点 /api/v2/bulk/host_create
来批量创建主机。此端点接受 JSON,您可以指定目标清单和要添加到清单的主机列表。这些主机在清单中必须是唯一的。添加所有主机,或者返回一个错误,指示操作无法完成的原因。使用 OPTIONS 请求返回相关模式。
如需更多信息,请参阅 自动化控制器 API 指南中的 Bulk 端点。
18.4.4. 添加源
清单源不与组关联。生成的组为顶级组,仍然可以具有子组。所有这些生成的组都可以有主机。在清单中添加源只适用于标准清单。智能清单从与其关联的标准清单中继承其源。
使用以下步骤为清单配置源:
流程
- 选择您要添加源的清单名称。
- 在 Inventory Details 页面中,选择 Sources 选项卡。
点Create Source 窗口。
。这将打开输入相关详情:
- 完成所选清单源的 信息后,您可以选择指定其他常用参数,如详细程度、主机过滤器和变量。
- 使用 Verbosity 菜单选择任何清单源更新作业上的输出级别。
- 使用 Host Filter 字段指定仅导入自动化控制器中的匹配主机名。
-
在 Enabled Variable 字段中,指定自动化控制器从主机变量的字典中检索启用的状态。您可以使用点表示法指定为 'foo.bar' 指定启用的变量,在这种情况下,查找嵌套字典等同于:
from_dict.get ('foo', {}).get ('bar', default)
。 如果您在 Enabled Variable 字段中指定主机变量字典,您可以提供一个值以便在导入时启用。例如,对于以下主机变量中的
enabled_var='status.power_state'
和'enabled_value='powered_on'
,主机被标记为enabled
:{ "status": { "power_state": "powered_on", "created": "2020-08-04T18:13:04+00:00", "healthy": true }, "name": "foobar", "ip_address": "192.168.2.1" }
如果
power_state
是powered_on
以外的任何值,则主机在导入到自动化控制器时被禁用。如果没有找到密钥,则主机会被启用。所有云清单源都有以下更新选项:
覆盖 :如果选中,以前存在于外部源上的但现已被删除的任何主机和组都将从自动化控制器清单中删除。未由清单源管理的主机和组将提升到下一个手动创建的组,如果没有手动创建的组来提升它们,则它们将保留在清单的"all"默认组中。
如果没有选中,外部源上没有的本地子主机和组不会受到清单更新过程的影响。
overwrite Variables: 如果选中,子组和主机的所有变量都将被删除,并替换为外部源上的变量。
如果没有选中,就会执行合并,将本地变量与外部源上的变量合并。
启动时更新 :每次使用此清单运行作业时,请在执行作业任务前从所选源中刷新清单。
为了避免生成作业的速度比清单可以同步的速度快,请选择此选项可让您为以前的缓存清单同步配置缓存超时。
Update on Launch 设置指的是项目和清单的依赖项系统,它不特别排除两个作业同时运行。
如果指定了缓存超时,则创建第二个作业的依赖项,并使用第一个作业生成的项目和清单更新。
然后,两个作业都会等待该项目或清单更新完成,然后继续操作。如果它们是不同的作业模板,则可以同时启动并运行它们(如果系统有能力)。如果要将自动化控制器的置备回调功能与动态清单源搭配使用,则必须为清单组 设置在启动时更新。
如果您同步了使用设置了 Update On Launch 的项目的清单源,则项目可能会在清单更新开始前自动更新(根据缓存超时规则)。
您可以创建一个作业模板,该模板使用来自模板使用的同一项目中的清单。在这种情况下,项目更新,然后清单更新(如果还没有进行更新,或者缓存超时还没有过期)。
- 检查您的条目和选择。这可让您配置其他详情,如调度和通知。
要配置与此清单源关联的调度,请点 Schedules 选项卡:
- 如果已经设置了调度,请检查、编辑、启用或禁用您的调度首选项。
- 如果还没有设置调度,请参阅 Schedules。
18.4.5. 为源配置通知
使用以下步骤为源配置通知:
定义源时,它将显示在与清单关联的源列表中。在 Sources 选项卡中,您可以对单个源执行同步,或者一次性同步它们。您还可以执行其他操作,如调度同步过程,以及编辑或删除源。
18.4.5.1. 清单源
选择与可以作为主机输入的清单类型匹配的源:
18.4.5.1.1. 来自项目的源
源于一个项目的清单意味着它使用它所关联的项目中的 SCM 类型。例如,如果项目的源来自 GitHub,则清单将使用相同的源。
使用以下步骤配置项目的清单:
流程
- 在 Create new source 页面中,从 Source 列表中选择 Sourced from a Project。
Create Source 窗口会展开更多字段。输入以下详情:
可选: Source Control Branch/Tag/Commit :从源控制(Git 或 Subversion)输入 SCM 分支、标签、提交散列、任意 refs 或修订号(如果适用)。
只有在源项目检查 Allow Branch Override 选项时,才会显示此字段。如需更多信息,请参阅 SCM 类型 - Git 和 Subversion。
除非在下一字段中还提供了自定义 refspec,否则某些提交散列和 refs 可能不可用。如果留空,则默认为 HEAD,这是此项目最后一次签出的 Branch/Tag/Commit。
- 可选: Credential: 指定用于此源的凭证。
-
Project (必需):与默认项目预先填充,否则指定此清单将用作其源的项目。点
图标从项目列表中选择。如果列表太长,请使用搜索来缩小选项范围。
清单文件 (必需):选择与源项目关联的清单文件。如果尚未填充,您可以在菜单中的文本字段中输入它,以过滤额外的文件类型。除了平面文件清单外,您还可以指向目录或清单脚本。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量/值和更新选项,如 添加源 中所述。
- 可选: 要传递给自定义清单脚本,您可以在 Environment Variables 字段中设置环境变量。您还可以将清单脚本放在源控制中,然后从项目运行它。如需更多信息,请参阅 自动化控制器管理指南中的 清单文件导入。
如果您要从 SCM 执行自定义清单脚本,请确保在上游源控制中为脚本设置执行位(chmod +x
)。
如果没有,自动化控制器会在执行时抛出 [Errno 13] Permission denied
错误。
18.4.5.1.2. Amazon Web Services EC2
使用以下步骤配置 AWS EC2-sourced 清单,
流程
- 在 Create new source 页面中,从 Source 列表中选择 Amazon EC2。
Create Source 窗口会展开其他字段。输入以下详情:
可选: 凭证 :从现有 AWS 凭证中选择(如需更多信息,请参阅 凭证)。
如果自动化控制器在带有分配的 IAM 角色的 EC2 实例上运行,则可以省略凭证,并且改为使用实例元数据中的安全凭证。有关使用 IAM 角色的更多信息,请参阅 IAM_Roles_for_Amazon_EC2_documentation_at_Amazon。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
aws_ec2
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 aws 清单插件文档。
如果您只使用 include_filters
,AWS 插件始终返回所有主机。要正确使用它,或
上的第一个条件必须为过滤器,然后在 include_
列表中构建 filters
OR
条件的其余部分。
18.4.5.1.3. Google Compute Engine
使用以下步骤配置 Google-sourced 清单。
流程
- 在 Create new source 页面中,从 Source 中选择 Google Compute Engine。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 GCE 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
gcp_compute
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 gcp_compute 清单插件文档。
18.4.5.1.4. Microsoft Azure 资源管理器
使用以下步骤配置 Azure Resource Manager-sourced 清单:
流程
- 在 Create new source 页面中,从 Source 列表中选择 Microsoft Azure Resource Manager。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 Azure 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
azure_rm
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 azure_rm 清单插件文档。
18.4.5.1.5. VMware vCenter
使用以下步骤配置 VMWare 源的清单。
流程
- 在 Create new source 页面中,从 Source 列表中选择 VMware vCenter。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 VMware 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
vmware_inventory
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 vmware_inventory 清单插件。
VMware 属性已从小写改为 camelCase。自动化控制器为顶级键提供别名,但不再使用嵌套属性中的小写键。如需有效且支持的属性列表,请参阅在 VMware 动态插件中使用虚拟机属性。
18.4.5.1.6. Red Hat Satellite 6
使用以下步骤配置 Red Hat Satellite 源于 Red Hat Satellite 的清单。
流程
- 在 Create new source 页面中,从 Source 列表中选择 Red Hat Satellite。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 Satellite 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段指定
foreman
清单源使用的参数。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 Ansible 文档中的 Foreman 清单源。
如果您遇到自动化控制器清单没有 Satellite 的"相关组"的问题,您可能需要在清单源中定义这些变量。如需更多信息,请参阅 Red Hat Satellite 6。
如果您在 同步清单时看到消息"no foreman.id"变量
,请参阅红帽客户门户网站中的解决方案:https://access.redhat.com/solutions/5826451。https://access.redhat.com/solutions/5826451请确定使用您的客户凭证登录以访问完整文章。
18.4.5.1.7. Red Hat Insights
使用以下步骤配置 Red Hat Insights-sourced 清单。
流程
- 在 Create new source 页面中,从 Source 列表中选择 Red Hat Insights。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 Red Hat Insights 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
insights
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 Insights 清单插件。
18.4.5.1.8. OpenStack
使用以下步骤配置 OpenStack 源的清单。
流程
- 在 Create new source 页面中,从 Source 列表中选择 Openstack。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 OpenStack 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖由
openstack
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 openstack 清单插件。
18.4.5.1.9. 红帽虚拟化
使用以下步骤配置 Red Hat virtualization-sourced 清单。
流程
- 在 Create new source 页面中,从 Source 列表中选择 Red Hat Virtualization。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 Red Hat Virtualization 凭证中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖由
ovirt
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 ovirt 清单插件
Red Hat Virtualization (ovirt)清单源请求默认是安全的。要更改此默认设置,请在 source_variables
中将键 ovirt_insecure
设置为 true,这只在 /api/v2/inventory_sources/N/
端点的清单源的 API 详情中可用。
18.4.5.1.10. Red Hat Ansible Automation Platform
使用以下步骤配置自动化控制器提供的清单。
流程
- 在 Create new source 页面中,从 *Source 列表中选择 Red Hat Ansible Automation Platform。
- Create Source 窗口会展开所需的 Credential 字段。从现有的 Red Hat Ansible Automation Platform 中选择。如需更多信息,请参阅 凭证。
- 可选: 您可以指定详细程度、主机过滤器、启用的变量或值以及更新选项,如 添加源 中所述。
-
使用 Source Variables 字段覆盖
控制器
清单插件使用的变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的更多信息,请参阅 控制器清单插件。这需要您的红帽客户登录。
18.4.5.2. 导出旧的清单脚本
尽管删除了自定义清单脚本 API,但脚本仍然保存在数据库中。本节中描述的命令可让您以适合您随后检查源控制的格式从数据库中恢复脚本。
使用以下命令:
$ awx-manage export_custom_scripts --filename=my_scripts.tar Dump of old custom inventory scripts at my_scripts.tar
使用输出:
$ mkdir my_scripts $ tar -xf my_scripts.tar -C my_scripts
脚本的名称具有以下形式: < pk>_ <name>
。这是用于项目文件夹的命名方案。
$ ls my_scripts 10inventory_script_rawhook _19 _30inventory_script_listenhospital _11inventory_script_upperorder _1inventory_script_commercialinternet45 _4inventory_script_whitestring _12inventory_script_eastplant _22inventory_script_pinexchange _5inventory_script_literaturepossession _13inventory_script_governmentculture _23inventory_script_brainluck _6inventory_script_opportunitytelephone _14inventory_script_bottomguess _25inventory_script_buyerleague _7inventory_script_letjury _15inventory_script_wallisland _26inventory_script_lifesport _8random_inventory_script 16inventory_script_wallisland _27inventory_script_exchangesomewhere _9random_inventory_script _17inventory_script_bidstory _28inventory_script_boxchild _18p _29__inventory_script_wearstress
每个文件包含一个脚本。脚本可以是 bash/python/ruby/more
,因此不会包含扩展。它们都是直接执行的。执行脚本可转储清单数据。
$ ./my_scripts/11__inventory_script_upperorder {"group\ud801\udcb0\uc20e\u7b0e\ud81c\udfeb\ub12b\ub4d0\u9ac6\ud81e\udf07\u6ff9\uc17b": {"hosts":
["host_\ud821\udcad\u68b6\u7a51\u93b4\u69cf\uc3c2\ud81f\uddbe\ud820\udc92\u3143\u62c7",
"host_\u6057\u3985\u1f60\ufefb\u1b22\ubd2d\ua90c\ud81a\udc69\u1344\u9d15",
"host_\u78a0\ud820\udef3\u925e\u69da\ua549\ud80c\ude7e\ud81e\udc91\ud808\uddd1\u57d6\ud801\ude57",
"host_\ud83a\udc2d\ud7f7\ua18a\u779a\ud800\udf8b\u7903\ud820\udead\u4154\ud808\ude15\u9711",
"host_\u18a1\u9d6f\u08ac\u74c2\u54e2\u740e\u5f02\ud81d\uddee\ufbd6\u4506"], "vars": {"ansible_host": "127.0.0.1", "ansible_connection":
"local"}}}
您可以使用 ansible-inventory
验证功能。这提供了相同的数据,但重新格式化。
$ ansible-inventory -i ./my_scripts/_11__inventory_script_upperorder --list --export
在前面的示例中,您可以 cd
到 my_scripts
,然后发出 git init
命令,添加您想要的脚本,将其推送到源控制,然后在用户界面中创建 SCM 清单源。
有关同步或使用 自定义清单脚本的更多信息,请参阅 自动化控制器管理指南中的 清单文件导入。