写点什么

Ansible 最佳实践之 AWX 构建高级作业工作流的创建和调度

作者:山河已无恙
  • 2022-12-02
    内蒙古
  • 本文字数:2176 字

    阅读完需:约 7 分钟

写在前面



  • 分享一些 AWX 启构建高级作业工作流的创建和调度的笔记

  • 博文内容涉及:

  • 创建和启动工作流模板 Demo

  • 工作流调度和通知的相关介绍

  • 食用方式: 需要了解 Ansible

  • 理解不足小伙伴帮忙指正


傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波



创建工作流作业模板和启动工作流作业

将能够创建工作流作业模板,并以单个工作流的形式启动多个 Ansible 作业。

工作流作业模板

工作流作业模板将多个作业模板连接到工作流。启动后,工作流作业模板将使用第一个作业模板启动作业,并根据它是成功还是失败来确定要在下一步中启动的作业模板。这允许启动一系列作业,并在作业失败时自动执行恢复步骤。



工作流作业模板可以通过多种方式启动:


  • 从 AWX web UI 手动启动;

  • 作为计划的作业启动;

  • 使用 AWX API 通过外部程序启动。


⼯作流作业模板不只是以串行方式运行作业模板。使用图形工作流编辑器,工作流作业模板将多个作业模板链接在一起,并根据上一个是成功还是失败来运行不同的作业模板。

创建工作流作业模板

需要先创建工作流作业模板,然后才能定义工作流并与之关联。


使用工作流可视化工具

工作流可视化工具是一种图形界面,用于定义工作流中要包含的作业模板,以及决策树结构,该结构应该用于将作业模板链接在一起:



当工作流可视化工具启动时,它包含一个 START 节点,代表工作流的执行起点。


单击 START 以启动工作流编辑流程;工作流可视化工具显示 AWX 资源的列表,可以将其作为工作流的第一步来添加。


除了作业模板之外,还可以将同步项目或清单的作业合并到工作流中。


在添加资源作为第一个工作流节点后,将⿏标悬停于其中即会显示两个按钮。


  • 红色 - 按钮将删除节点。

  • 绿色 + 按钮会添加一个后续节点。


添加后续节点时,资源选择面板中将显示 RUN 提示,在选择资源时提示输入其他内容。此提示提供以下三个选项,用于指定新节点和上一节点之间的关系:



一个节点可以有多个子节点。


当节点添加到工作流中时,工作流编辑器中连接节点的不同颜色行将指支父节点和子节点之间的关系。


  • 绿线表示父节点和子节点之间的 On Success 类型关系

  • 红线则表示 On Failure 类型关系

  • 蓝线表示 Always 类型关系


在工作流编辑器中创建了工作流的整个决策树结构后,单击 SAVE 以保存该工作流。

调查问卷

与作业模板⼀样,也可以向工作流作业模板添加调查,以允许⽤户以交互方式设置额外的变量。


启动工作流作业


与作业模板⼀样,⽤户需要对工作流作业模板的 execute 角色才能执行它。被分配了 execute 角色时,用户可以通过工作流作业模板启动作业,即使他们没有单独启动其使用的作业模板的权限。


评估工作流作业执行

启动工作流作业后, AWX web UI 将显示正在执行的作业的作业详情页面。



完成每个步骤后,其节点将以绿色或红色框出,表示工作流中与该步骤相关联的操作成功或失败。这里报错是因为我们设置了变量,但是没有启动调查问卷输入变量,所以报错了,



开启调查问卷



在执行的时候输入变量值



再次启动,运行通过


调度作业和配置通知

调度自动作业执行并配置作业完成通知

调度作业执行

红帽 AWX 允许配置调度的作业,按照可自定义的计划启动作业模板。默认情况下,系统会有一些默认的调度任务,用于清理历史数据等



如果对作业模板拥有 Execute 角色,可以通过设置计划来从该模板启动作业。


若要配置调度的作业,请先从左侧导航栏中选择 Templates 模板。单击要调度的作业模板,然后在右侧的窗格中,单击 SCHEDULES。



输入所需的详细信息:


  • NAME:计划的名称

  • START DATE:作业调度应开始的日期

  • START TIME:作业调度应开始的时间

  • LOCAL TIME ZONE:本地时区

  • REPEAT FREQUENCY:重复关联作业的频率



选择完成,点击保存


临时禁用计划

单击左侧导航栏中的 Schedules,以显示 Scheduled Jobs 页面。页面中列出了所有定义的计划。在每个计划名称的左侧有一个 ON/OFF 按钮。将此设置为 ON 或 OFF ,以分别激活或停用计划。


调度的管理作业

默认情况下,红帽 AWX 附带几个特殊的调度作业。适用于内置的管理作业,它们通过清理活动流和历史作业执行的旧日志信息,在 AWX 服务器本身上执行定期维护。


  • Cleanup Job Schedule :将删除历史作业的详细信息,以节省空间。默认每周星期日允许一次,来删除超过 120 天的作业信息。

  • Cleanup Activity Schedule :在每周的星期二运行一次,以从活动流中删除超过 355 天的信息。

  • Cleanup Expired Sessions :清理过期的浏览器会话

  • Cleanup Expired OAuth 2 Tokens: 清理过期的 OAuth 2 令牌


报告作业执行结果

使用 AWX 管理企业的 Ansible 基础架构的一个好处是集中式日志记录和审计。执行作业时,有关作业执行的详细信息记录在 AWX 数据库中。用户稍后可以引用此数据库来确定过去作业执行的历史结果。


红帽 AWX 可以立即发送作业执行结果的警报。 AWX 支持多种发送通知的机制。⼀些机制基于开放协议(如电子邮件和 IRC),另一些则基于专有解决方案(如 HipChat 和 Slack)。


通知模板


通知模板可用于发送由 AWX 为该组织运行的作业结果的通知。通知模板定义发送通知的机制。支持的机制包括:电⼦邮件,Slack,Twilio,PagerDuty,HipChat,Webhook,IRC。


创建通知



创建通知后可以和模板绑定,指定通知事件


博文参考



《DO447 Advanced Automation Ansible Best Practices》


用户头像

InfoQ写作平台签约作者,RHCE、CKA认证 2022-01-04 加入

Java 后端一枚,技术不高,前端、Shell、Python 也可以写一点.纯种屌丝,不热爱生活,热爱学习,热爱工作,喜欢一直忙,不闲着。喜欢篆刻,喜欢吃好吃的,喜欢吃饱了晒太阳。

评论

发布
暂无评论
Ansible最佳实践之 AWX 构建高级作业工作流的创建和调度_山河已无恙_InfoQ写作社区