:term:`Project`是 Tower 中的 Ansible playbook 的逻辑集合。
您可以将 playbook 和 playbook 目录手动放置到 Tower 服务器的 Project Base 路径下,或者将 playbook 放置到 Tower 支持的源代码管理 (SCM) 系统,包括 Git、Subversion、Mercurial 和红帽 Insights,这两种方法均可管理 playbook 和 playbook 目录。要创建红帽 Insights 项目,请参阅 设置 Insights 项目。
注解
默认情况下,项目基本路径是 /var/lib/awx/projects
,但可能已被 Tower 管理员修改。它在 /etc/tower/conf.d/custom.py
中配置。编辑此文件时请小心谨慎,因为不正确的设置可能会禁用您的安装。
此菜单显示了当前可用的项目列表。默认视图为折叠状态 (Compact),显示项目名称及其状态,但您可以扩展为查看更多信息。您可以按照各种条件对列表进行排序,然后执行搜索来过滤相关的项目。
对于列出的每个项目,您可以使用每个项目旁边的相应图标获取最新的 SCM 修订(),复制项目属性()或删除项目()。 从 Ansible Tower 3.7 开始,允许在运行相关任务时更新项目。 如果您有大项目(大约 10 GB),则 /tmp
可能会出现磁盘空间的问题。
Status 指示项目的状态,可能是以下之一(注意您也可以根据特定状态类型过滤您的视图):
Pending - 已创建源控制更新但尚未排队或启动。在实际准备好由系统运行之前,任何作业(不仅仅是源控制更新)都会停留在等待状态。源控制更新未准备就绪的原因是有依赖项当前正在运行,必须等到它们都已完成,或者其配置的位置没有足够的运行容量。
Waiting - 源控制更新处于等待执行的队列中。
Running - 源控制更新当前正在进行中。
Successful - 此项目的最后源控制更新成功。
Failed - 此项目的最后源控制更新失败。
Error - 最后的源控制更新作业根本无法运行。(即将弃用。)
Canceled - 项目的最后源控制更新已被取消。
Never updated - 项目被配置用于源控制,但从未更新。
OK - 项目未被配置用于源控制,并且位于正确的位置。(即将弃用。)
Missing - 项目不存在于 /var/lib/awx/projects
的项目基本路径中(适用于手动或源控制管理的项目)。
注解
凭证类型为 Manual 的项目若不重新配置为 SCM 类型的凭证,将无法更新或调度基于源控制的操作。
注解
如果删除了由其他工作项目使用的项,则会打开一条信息,列出会受到删除影响的项,并提示您确认删除。一些界面会包括无效的或以前已被删除的项,因此它们将无法运行。以下是这类信息的一个示例:
要创建新项目,请执行以下操作:
点击 按钮,启动 Create Project 窗口。
在以下必填字段中输入相关信息:
名称
**Description**(可选)
Organization - 一个项目必须至少有一个机构。现在选择一个机构以创建项目,然后在创建项目后,您可以添加额外的机构。
**Ansible Environment**(可选)- 从下拉菜单中选择一个自定义虚拟环境以针对其运行此项目。这个字段只有在之前创建了自定义环境时才会出现。请参阅 Ansible Tower Upgrade and Migration Guide 中的 Using virtualenv with Ansible Tower。
SCM Type - 从下拉菜单中选择与这个项目关联的 SCM 类型。后续部分中的选项会根据您选择的类型显示出来。更多详情请参阅后续部分中的 手动管理 playbook 和 使用源控制管理 playbook。
注解
如果添加手动项目,项目根文件夹中的每个项目路径只能分配给一个项目。如果您收到以下消息,请确保您还没有将项目路径分配给现有项目:
All of the project paths have been assigned to existing projects, or there are no directories found in the base path.
You will need to add a project path before creating a new project.
完成后请点击 Save。
在项目基本路径下创建一个或多个目录来存储 playbook(例如,/var/lib/awx/projects/)
创建 playbook 文件或将其复制到 playbook 目录中。
确保 playbook 目录和文件属于运行 Tower 服务的同一 UNIX 用户和组。
确保权限适合 playbook 目录和文件。
如果您在添加项目路径时遇到问题,请检查项目目录和文件的权限和 SELinux 上下文设置。
警告
如果您还没有将任何 Ansible playbook 目录添加到基本项目路径,您将收到来自 Tower 的以下消息:
要纠正这个问题,请创建适当的 playbook 目录并从您的 SCM 中签出 playbook 或将 playbook 复制到适当的 playbook 目录。
注解
默认情况下,Ansible Tower 有一个系统范围设置,允许从 SCM 项目的 requirements.yml
文件中动态下载角色。您可以通过将 Enable Role Download 切换按钮切换到 OFF,在 Settings () 菜单的 Jobs 标签页中关闭这个设置。
从 SCM Type 下拉菜单中选择适当的选项。
在以下字段中输入相关信息:
SCM URL - 请参阅帮助 文本中的示例。
**SCM Branch/Tag/Commit**(可选)- 输入源控制(Git、Subversion 或 Mercurial)中的 SCM 分支、标签、提交散列、任意 refs 或修订号(若适用)以签出。除非您在下一字段中还提供了自定义 refspec,否则某些提交散列和 refs 可能无法使用。
SCM Refspec - 这个字段是 git 源控制特有的选项,只有熟悉并能够轻松使用 git 的高级用户才应该指定要从远程存储库下载哪些参考。更多详情请参阅 job branch overriding。
SCM Credential - 如果需要验证,请选择适当的 SCM 凭证
SCM 更新选项:
Clean - 在进行更新前删除任何本地修改。
Delete on Update - 在进行更新前删除整个本地存储库。根据存储库的大小,这可能会显著增加完成更新所需的时间。
Update Revision on Launch - 将项目的修订更新至远程源控制中的当前修订。如果作业的生成速度快于项目的同步的速度,为了避免作业溢出,可以选择此选项来配置一个 Cache Timeout,以将之前的项目同步缓存几秒钟。
Allow Branch Override - 允许使用这个项目的作业模板通过项目以外的指定 SCM 分支或修订来启动。如需了解更多详情,请参阅 job branch overriding。
点击 Save 保存您的项目。
小技巧
使用 GitHub 链接为使用 playbook 提供了一种简单的方法。要帮助您入门,请使用位于以下位置的
helloworld.yml
文件:https://github.com/ansible/tower-example.git这个链接提供的 playbook 与 :ref:`Ansible Tower Quick Start Guide <qs_start>`说明中手动创建的 playbook 非常相似。使用它不会给您的系统带来任何改变或损害。
权限是指分配给此项目的权限集(基于角色的访问控制),可提供读取、修改和管理项目、清单、作业模板及其他 Tower 元素的能力。
您可以通过 Details 标签页旁边的 Permissions 标签页来访问项目权限。这个屏幕显示目前对此项目具有权限的用户列表。这个列表可以根据 User、Role 或 Team Role 进行排序和搜索。
Permissions 标签页允许您为用户和团队成员审核、授权、编辑和删除相关权限。要为特定用户分配这个资源的权限:
点击**Permissions** 标签页。
点击 按钮,打开 Add Users/Teams 窗口。
指定将分配访问权限的用户或团队,然后为其分配特定的角色:
点击需要选择的用户或团队名称旁的复选框来选择它们。
注解
您可以同时选择多个用户和团队,方法是在没有保存的情况下在 Users 和 Teams 标签页中进行选择。
选择后,窗口将展开,以便您为选择的每个用户或团队从下拉菜单中选择一个角色。
上面的例子显示了与清单关联的选项. 不同的资源有不同的可用选项:
Admin 允许读、运行和编辑权限(适用于所有资源)
Use 允许使用作业模板中的资源(适用于除作业模板以外的所有资源)
Update 允许通过 SCM 更新项目(适用于项目和 inventory)
AdPriority 允许使用 Ad Hoc 命令(适用于 inventory)
Execute 允许启动作业模板(适用于作业模板)
Read 允许只读访问(适用于所有资源)
小技巧
使用角色选择栏中的 Key 按钮显示每个角色的描述信息。如需更多信息,请参阅本指南的 角色 部分。
选择应用到所选用户或团队的角色。
注解
您可以同时为多个用户和团队分配角色,方法是在没有保存的情况下在 Users 和 Teams 标签页中进行设置。
查看为每个用户和团队分配的角色。
完成后,点击 保存,然后关闭 Add Users/Teams 窗口以显示为每个用户和团队分配的更新角色。
要删除特定用户的权限,请点击其资源旁的 Disassociate (x) 按钮。
这会出现确认对话框,要求您确认解除关联。
点击 Notifications 标签页可以查看您设置的任何通知集成。
请使用切换按钮启用或禁用要与特定项目搭配使用的通知。更多详情请参阅 启用和禁用通知。
如果没有设置通知,请点击灰色框内的 NOTIFICATIONS 链接来创建新通知。
有关配置各种通知类型的其他详情,请参阅 通知类型。
您可以点击 Job Templates 来添加和查看与此项目关联的任何作业模板或工作流模板。点击 Expanded 可查看每个模板的详情,包括使用该模板运行的作业的状态,以及其他有用的信息。您可以按照各种条件对此列表进行排序,并通过执行搜索来过滤相关的模板。
从此视图中,您也可以启动 ()、复制 () 或删除 () 模板配置。注意,上面的例子显示了展开的视图。
您可以点击 Schedules 来查看为此项目设置的所有计划。
在项目更新结束时,Tower 会搜索位于 <project-top-level-directory>/roles/requirements.yml
的 roles
目录中名为 requirements.yml
的文件。如果找到这个文件,以下命令会自动运行:
ansible-galaxy install -r roles/requirements.yml -p ./roles/ --force
您可以通过此文件引用可以与您自己的项目一起签出的 Galaxy 角色或其他存储库中的角色。添加这项 Ansible Galaxy 支持后便无需创建 git 子模块以实现此结果。
如需有关 requirements.yml
文件语法的更多信息和示例,请参阅 Ansible 文档中的 role requirements section。
如果系统中有需要特别公开的目录,您可以在 Configure Tower 界面的 Paths to Expose to Isolated Jobs 中指定,或者在设置文件中更新以下条目:
AWX_PROOT_SHOW_PATHS = ['/list/of/', '/paths']
注解
如果 playbook 需要使用在
/var/lib/awx/.ssh
中定义的密钥或设置,则需要把它做为主文件添加到AWX_PROOT_SHOW_PATHS
。
如果您更改了设置文件,请确定在保存了更改后使用 ansible-tower-service restart
命令重启服务。
在 Tower 用户界面中,可以在 Jobs settings 窗口中配置这些设置。点击每个字段中的 () 图标以获取更多详情。
Tower 在作业运行中支持特定于项目的 Ansible 集合。如果您在 collections/requirements.yml
指定 SCM 中的集合要求文件,则 Tower 将在作业运行前在隐式项目同步中将集合安装到该文件中。要指定集合要求,请执行以下操作:
ansible-galaxy collection install -r requirements.yml -p <job tmp location>
注解
从 Ansible Tower 3.7 开始,每个作业运行都会复制项目文件夹。这使得 playbook 可以对源树进行本地更改以提供方便,如创建临时文件,且不会对其他作业进行干预。
有关详情请参阅 Using Collections。
注解
如果需要从 Galaxy 或 Collections 进行更新,则会执行一个下载所需角色的同步,这将消耗您的 /tmp 文件中的更多空间。当您的项目较大时(大约 10 GB),/tmp
可能会导致磁盘空间的问题。