我正在写一本“无名氏手册”来签署证书。在游戏手册中,我使用一个包含api密钥的conf文件来隐藏我用ansible保险库加密的密钥。这方面的问题是,当我运行剧本时,它会出现错误,因为stdout说文件不包含任何节头。
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在读剧本时没有被解密。
发布于 2022-04-05 09:12:10
加密的目的不是加密文件,而是加密变量。当您对文件加密时,假设文件是.yml格式的,因此可以作为ansible变量处理。
您需要在加密文件中定义api密钥,或加密内联(https://docs.ansible.com/ansible/latest/user_guide/vault.html#creating-encrypted-variables)。
# 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
ssl_api_key: {{ my_api_key}}在执行任务之前,您需要运行一个template (https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html)任务,用正确的api键生成sslapi_cli.conf文件。
https://stackoverflow.com/questions/71744674
复制相似问题