当我尝试使用“ blockinfile”和“ block”时,Ansible不允许我在变量中添加引号

时间:2018-10-24 17:56:37

标签: ansible

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

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

在我的主文件play.yml中定义了所有3个变量的地方。因此,假设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

时也不起作用

1 个答案:

答案 0 :(得分:1)

像这样设置变量:


swipl -o mystate --stand_alone=true -c myload.pl