andrewvaughan.prompt

提示

版本 许可证 构建状态 覆盖率

这个 Ansible 模块支持向运行 Playbook 的用户显示简单消息。它提供了一种比内置的 debug 任务更清晰的方式来呈现消息。可选地,这些消息也可以被视为提示,等待用户反馈。这些提示的响应可以注册为 Ansible 变量。

安装

该插件可在 Ansible Galaxy 获取。一旦安装了 Ansible Galaxy,您可以使用以下命令安装该插件:

ansible-galaxy install andrewvaughan.prompt

要使用该插件,只需在您的 Playbook 文件中添加角色,具体如下:

roles:
- andrewvaughan.prompt

完成后,您可以按照 使用指南 中所述使用整个插件。

手动安装

要将该插件添加到您的项目,只需将 /action_plugins/prompt.py 文件复制到 Playbook 根目录下名为 action_plugins 的文件夹中。Ansible 会自动找到并启用插件提供的所有命令,如 使用指南 中所述。

依赖关系

该模块已在 Ansibe v2.0 及以上版本上进行了测试。它可能在其他版本上也能工作,但不正式支持。一旦安装了 Ansible 及其依赖项,该插件应该可以使用。

使用

目前,Ansible Prompt 模块的功能非常有限。此时,仅支持向用户发送消息。

Ansible Prompt 插件有一个参数 msg,它可以包含一个或多个用户消息。示例任务如下:

- name: 简单消息
  prompt:
    msg: 你好,世界

- name: 多个消息
  prompt:
    msg:
      - 你好,世界
      - 你好,宇宙

对齐

align 选项与 ask 选项 一起使用

消息可以在呈现时对齐为 left(默认)、centerright 对齐:

- name: 对齐消息
    msg:
      - say: 左对齐
        align: left
      - say: 中间对齐
        align: center
      - say: 右对齐
        align: right

防止尾部换行

newline 选项与 ask 选项 一起使用

为了防止 Ansible Prompt 模块在消息末尾自动添加换行,只需将可选的 newline 值设置为 false

# 输出 "行首...行中...行尾" 后跟换行
- name: 无换行消息
  prompt:
    msg:
      - say: "行首..."
        newline: false
      - say: "行中"
        newline: false
      - say: "...行尾"

从用户输入收集信息

提示插件的强大之处在于它能够在 Playbook 运行过程中收集 Ansible 事实。要将提示转换为问题,为每个您想询问的问题提供一组 sayask 变量。

say 变量包含您想展示的消息,而 ask 变量则是从用户输入中全局设置的 Ansible 变量:

- name: 简单问题
  prompt:
    msg:
      say: "你名字是什么?"
      ask: first_name

- debug:
    var: first_name

正如您所看到的,first_name 变量在播放时通过用户输入设置。

您也可以选择在同一个提示中询问多个问题:

- name: 地址信息
  prompt:
    msg:
      - say: "街道地址:"
        ask: address
      - say: "城市:"
        ask: city
      - say: "州:"
        ask: state
      - say: "邮政编码:"
        ask: zipcode

目前,所有变量在任务完成时创建。请注意,在任务完成之前不能使用变量,因此这将不起作用:

- name: 地址信息
  prompt:
    msg:
      - say: "名字:"
        ask: first_name
      - say: "你好 {{ first_name }}!你最喜欢的颜色是什么?"
        ask: color

相反,这些问题应该分成两个单独的 prompt 任务。

常见问题

为什么不只是使用 Ansible debug 和/或 prompt_vars?

虽然 Ansible 提供了一些基本的消息和报告功能,但内置的 debugprompt_vars 方法有一些缺陷。具体来说:

  • debug 仅用于调试,因此不会以演示格式呈现输出
  • prompt_vars 只能在脚本开始时使用,限制了希望在任务播放过程中收集输入的用户的选择
  • prompt_vars 对条件逻辑的支持有限,几乎没有

贡献

有很多方法可以为该项目做贡献!如果您有想法或发现了错误,请 提交问题 以便解决。

如果您有兴趣在设计或开发方面贡献,请阅读我们的 贡献指南

测试

提供了一个 Makefile 来帮助进行代码检查、测试和代码覆盖率生成。依赖项将在测试期间自动管理:

make test      # 运行代码检查和测试套件
make coverage  # 运行代码检查、测试并生成 HTML 覆盖率报告

请注意,在为该项目做贡献时,必须提供完整的测试。

发布政策

该项目的发布遵循 语义版本控制 标准,使用 MAJOR.MINOR.PATCH 的版本号格式:

  • MAJOR - 在对应用程序进行重大、不兼容的更改时修改,
  • MINOR - 在以向后兼容的方式添加功能时修改,
  • PATCH - 对现有功能的补丁,如文档和错误修复。

许可证

该项目根据 MIT 许可证 提供。

版权 2017 Andrew Vaughan

特此免费授予任何获得该软件及相关文档文件(“软件”)副本的人,无限制地使用、复制、修改、合并、发布、分发、再授权和/或销售该软件的副本,并允许向其提供该软件的人这样做,前提是符合以下条件:

上述版权声明和本许可声明应包含在所有副本或实质性部分的软件中。

本软件是“按原样”提供的,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有者对因使用本软件或其他交易而产生的任何索赔、损害或其他责任不承担责任,无论是在合同诉讼、侵权或其他方面。
关于项目

Ansible role that provides functionality for messaging and prompting users for input during tasks.

安装
ansible-galaxy install andrewvaughan.prompt
许可证
mit
下载
4.1k
拥有者
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.