ansible - 当我尝试使用“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
解决方案
像这样设置你的变量:
var1: '"fred"'
var2: '"barney"'
var3: '"wilma"'
推荐阅读
- list - ansible 识别列表中的值
- python - Tkinter 文本小部件替换
- curl - 无法从 wsl2 访问绑定在 0.0.0.0 上的服务
- agora.io - 我们如何向注入的 RTMP 流添加暂停或静音功能?
- python - Kafka 将 txt 文件读取为单个字母而不是单词
- javascript - (@syncfusion/ej2-angular-schedule) 错误 RangeError: 超出最大调用堆栈大小
- amazon-web-services - 如何在无服务器中排除嵌套文件夹?
- python - 如何在 Python 中打印文本文件每一段的第一行?
- javascript - React Native 如何过滤超过 3 个参数的 Flatlist?
- html - css 动画在不可见时会影响性能吗