12.4. 为项目签名


对项目进行签名涉及 Ansible 项目目录。如需有关项目目录结构的更多信息,请参阅 Ansible 文档中的示例 Ansible 设置

以下示例项目有一个非常简单的结构:一个清单文件,以及 playbook 目录下的两个小 playbook:

$ cd sample-project/
$ tree -a .
.
├── inventory
└── playbooks
    └── get_uptime.yml
    └── hello.yml

    1 directory, 3 files
注意

所用的命令假定您的工作目录是项目的根目录。ansible-sign 项目 命令将项目根目录用作其最后一个参数。

使用 . 表示当前工作目录。

Ansible-sign 通过对项目中所有安全文件进行校验和(SHA256)来保护内容,将它们编译到校验和清单文件中,然后对该清单文件进行签名。

要签署内容,请在项目根目录中创建 MANIFEST.in 文件,该文件告知 ansible-sign which 文件要保护。

在内部,ansible-sign 使用 Python distlib 库的 distlib.manifest 模块,因此 MANIFEST.in 必须遵循这个库指定的语法。有关 MANIFEST.in 文件指令的说明,请参阅 Python 打包用户指南

在示例项目中,包括两个指令,生成以下 MANIFEST.in 文件:

include inventory
recursive-include playbooks *.yml

使用这个文件,生成您的校验和清单文件并对其进行签名。这两个步骤都在一个 ansible-sign 命令中实现:

$ ansible-sign project gpg-sign .

成功执行会显示类似如下的输出:

[OK   ] GPG signing successful!
[NOTE ] Checksum manifest: ./.ansible-sign/sha256sum.txt
[NOTE ] GPG summary: signature created

该项目现已签名。

请注意,gpg-sign 子命令位于 project 子命令下。

对于签名项目内容,每个命令都以 ansible-sign 项目 开头。

每个 ansible-sign project 命令都使用项目根目录 作为其最终参数。

Ansible-sign 使用默认密钥环,并查找可找到的第一个可用 secret 密钥来为您的项目签名。您可以使用-- fingerprint 选项指定要使用的特定 secret 密钥,甚至使用 --gnupg-home 选项指定完全独立的 GPG 主目录。

注意

如果您使用桌面环境,GnuPG 会自动提示您输入 secret 密钥的密码短语。

如果此功能无法正常工作,或者您在没有桌面环境的情况下工作,例如通过 SSH,您可以在 gpg-sign 后面使用 the -p --prompt-passphrase 标志,这会导致 ansible-sign 提示输入密码。

请注意,在项目目录中创建了一个 .ansible-sign 目录。此目录包含校验和清单以及分离的 GPG 签名。

$ tree -a .
.
├── .ansible-sign
│   ├── sha256sum.txt
│   └── sha256sum.txt.sig
├── inventory
├── MANIFEST.in
└── playbooks
    ├── get_uptime.yml
    └── hello.yml
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.