首页 > 解决方案 > 当我尝试使用“blockinfile”和“block”时,Ansible 不允许我在变量中添加引号

问题描述

使用容器,我正在尝试.bashrc使用 Python3 Ansible v0.2.4.2.0 创建一个文件。我也在使用 Ansible 角色。

- name: Adding environment vars to .bashrc file
  blockinfile:
    path=/.bashrc
    insertafter: EOF
    block: |
      export VAR1={{ var1 }}
      export VAR2={{ var2 }}
      export VAR3={{ var3 }}

在我的主文件中定义了所有 3 个变量,play.yml. 所以,假设var1等于"-a -b -c"(包括引号),var2等于"d"var3等于"e"

然后在我运行之后play.yml,我的.bashrc文件如下所示:

export VAR1=-a -b -c
export VAR2=d
export VAR3=e

但我真正想要的是

export VAR1="-a -b -c"
export VAR2="d"
export VAR3="e"

如果我没有引号VAR1,那么运行source /.bashrc会给我:

bash: export: `-a: not a valid identifier
bash: export: `-b: not a valid identifier
bash: export: `-c: not a valid identifier

我试过这个:

- name: Creating .bashrc file
  blockinfile:
    path=/.bashrc
    insertafter: EOF
    block: |
      export VAR1=\"{{ var1 }}\"
      export VAR2=\"{{ var2 }}\"
      export VAR3=\"{{ var3 }}\"

但这不会在我的.bashrc文件中添加引号。我仍然得到相同的结果。我可以做些什么来添加引号?我也尝试过添加\"\",它正好添加\"\"到每行的开头。所以当我尝试运行时这也不起作用source /.bashrc

标签: ansible

解决方案


像这样设置你的变量:

var1: '"fred"'
var2: '"barney"'
var3: '"wilma"'

推荐阅读