首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible-Vault conf文件在运行剧本时未被解密

Ansible-Vault conf文件在运行剧本时未被解密
EN

Stack Overflow用户
提问于 2022-04-04 23:06:32
回答 1查看 350关注 0票数 1

我正在写一本“无名氏手册”来签署证书。在游戏手册中,我使用一个包含api密钥的conf文件来隐藏我用ansible保险库加密的密钥。这方面的问题是,当我运行剧本时,它会出现错误,因为stdout说文件不包含任何节头。

代码语言:javascript
复制
fatal: [cxlabs-alln01-sslapi]: FAILED! => {
    "changed": true,
    "cmd": [
        "/usr/local/bin/sslapi_cli",
        "sign",
        "-csr",
        "/etc/sslapi_cli/xxxxxxxx.cisco.com.csr",
        "-out",
        "/etc/sslapi_cli/xxxxxxxx.cisco.com.cer",
        "-confFile",
        "/etc/sslapi_cli/sslapi_cli.conf",
        "-validityPeriod",
        "one_year"
    ],
    "delta": "0:00:00.209337",
    "end": "2022-04-04 15:47:37.772535",
    "invocation": {
        "module_args": {
            "_raw_params": "/usr/local/bin/sslapi_cli sign -csr /etc/sslapi_cli/xxxxxxxx.cisco.com.csr  -out /etc/sslapi_cli/xxxxxxxx.cisco.com.cer -confFile /etc/sslapi_cli/sslapi_cli.conf -validityPeriod one_year",
            "_uses_shell": false,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": true
        }
    },
    "msg": "non-zero return code",
    "rc": 2,
    "start": "2022-04-04 15:47:37.563198",
    "stderr": "File contains no section headers.\nfile: '/etc/sslapi_cli/sslapi_cli.conf', line: 1\n'$ANSIBLE_VAULT;1.1;AES256\\n'",
    "stderr_lines": [
        "File contains no section headers.",
        "file: '/etc/sslapi_cli/sslapi_cli.conf', line: 1",
        "'$ANSIBLE_VAULT;1.1;AES256\\n'"
    ],
    "stdout": "File contains no section headers.\nfile: '/etc/sslapi_cli/sslapi_cli.conf', line: 1\n'$ANSIBLE_VAULT;1.1;AES256\\n'",
    "stdout_lines": [
        "File contains no section headers.",
        "file: '/etc/sslapi_cli/sslapi_cli.conf', line: 1",
        "'$ANSIBLE_VAULT;1.1;AES256\\n'"
    ]
}

我不知道这意味着什么,但我认为这是因为sslapi_cli.conf在读剧本时没有被解密。

EN

回答 1

Stack Overflow用户

发布于 2022-04-05 09:12:10

加密的目的不是加密文件,而是加密变量。当您对文件加密时,假设文件是.yml格式的,因此可以作为ansible变量处理。

您需要在加密文件中定义api密钥,或加密内联(https://docs.ansible.com/ansible/latest/user_guide/vault.html#creating-encrypted-variables)。

代码语言:javascript
复制
# encrypted_file.yml
my_api_key: foo

# variable ecrypted inline:
my_api_key: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      62313365396662343061393464336163383764373764613633653634306231386433626436623361
      6134333665353966363534333632666535333761666131620a663537646436643839616531643561

然后,您需要创建sslapi_cli.conf文件的模板,如下所示:

sslapi_cli.conf.j2

代码语言:javascript
复制
ssl_api_key: {{ my_api_key}}

在执行任务之前,您需要运行一个template (https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html)任务,用正确的api键生成sslapi_cli.conf文件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71744674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档