【发布时间】:2018-04-30 13:32:19
【问题描述】:
我正在使用 Ansible 2.4。 我无法运行以下 ansible-playbook:
test.yml
---
- hosts: "localhost"
become: no
vars:
foo_withsinglequote: !vault |
$ANSIBLE_VAULT;1.1;AES256
39313737636336313832376165636465346162366333663137373165363662316263336166393666
3566643732663063386333303638633962363863306463610a643931396636613361353165653265
38376630313939626637623538613432373336646663636563623062636238313731326263336263
3138643931323662620a336534383964663562353162393930613965386465616630363335326138
3431
foo_withdoublequote: !vault |
$ANSIBLE_VAULT;1.1;AES256
64633863363838326664323238313866616161313937323563636430326432393638336334303336
3533653339663438356238613937336466623834666537630a646139643033653237353262616662
30643732313861373130633036346361663130326332303932616433643761633739306137333237
6263653365386132620a633738663336313532366637613533313361646339623137393461383363
3332
tasks:
- name: Echo foo_withsinglequote
command: echo "{{ foo_withsinglequote }}"
- name: Echo foo_withdoublequote
command: echo "{{ foo_withdoublequote }}"
要生成我使用的保险库变量:
$ echo 123 > vlt.txt
$ ansible-vault --vault-password-file=vlt.txt encrypt_string "abc\"def"
$ ansible-vault --vault-password-file=vlt.txt encrypt_string "abc\'def"
运行剧本:
$ ansible-playbook --vault-password-file=vlt.txt test.yml
这会出现以下错误:
任务执行期间发生异常。要查看完整的回溯,请使用 -vvv。错误是:ValueError:没有结束引号
致命:[本地主机]:失败! => {"changed": false, "failed": true, "module_stderr": "Traceback (last recent call last):\n File \"/tmp/ansible_8uz23O/ansible_module_command.py\", line 213, in \n main()\n 文件 \"/tmp/ansible_8uz23O/ansible_module_command.py\",第 182 行,在 main\n args = shlex.split(args)\n 文件 \"/usr/lib/python2.7/shlex. py\",第 279 行,在拆分中\n 返回列表 (lex)\n 文件 \"/usr/lib/python2.7/shlex.py\",第 269 行,在下一个中\n token = self.get_token() \n 文件 \"/usr/lib/python2.7/shlex.py\",第 96 行,在 get_token\n raw = self.read_token()\n 文件 \"/usr/lib/python2.7/shlex. py\", line 172, in read_token\n raise ValueError, \"No close quotes\"\nValueError: No closing quotes\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc" :0}
如何正确引用 Vaulted 变量?因为我事先不知道,Vaulted 变量是否会包含单引号或双引号。
【问题讨论】:
-
我以为我在答案中解释了您的问题与 Ansible Vault 无关,而是引用了变量...但是您编辑了答案以扩展 Vault-part。
-
是的,我根据您的建议更正了问题。
-
不,你没有。搜索“保险库”一词在您的问题中出现的次数。还要检查这个数字是否比编辑前减少。
标签: ansible