gpt4 book ai didi

ansible - 在 Ansible 的 lineinfile 任务中的正则表达式中使用 {{item}}

转载 作者:行者123 更新时间:2023-12-02 15:53:43 25 4
gpt4 key购买 nike

我在 Ansible playbook 中有一个任务,该任务应该迭代用户列表并执行 lineinfile 以启用对 postgress 数据库的访问:

- name: Postgres localhost access
lineinfile:
dest: "{{postgres_dest}}/data/pg_hba.conf"
line: "host all {{item.user}} 127.0.0.1/32 trust"
regexp: "^host[\s\t]*all[\s\t]*{{item.user}}[\s\t]*127.0.0.1/32[\s\t]*trust"
insertbefore: EOF
with_items: "{{postgres_users}}"
notify: postgres reload
tags:
- postgres
- postgres_hba

我遇到的问题是ansible认为{{item.user}}没有被""转义,这实际上是不正确的,因为这会由于整行的 "" 而扩展。我得到的确切错误:

Syntax Error while loading YAML script, jenkins.yml
Note: The error may actually appear before this position: line 156, column 9

line: "host all {{item.user}} 127.0.0.1/32 trust"
regexp: "^host[\s\t]*all[\s\t]*{{item.user}}[\s\t]*127.0.0.1/32[\s\t]*trust"
^
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:

with_items:
- {{ foo }}

Should be written as:

with_items:
- "{{ foo }}"

关于如何做到这一点有什么想法吗?

最佳答案

首先,感谢#ansible channel 上的 IRC 人员:)

似乎问题不在于变量本身,而在于未转义的反斜杠

将该行更改为:
正则表达式:“^主机[\\s\\t]*all[\\s\\t]*{{item.user}}[\\s\\t]*127.0.0.1/32[\\s\\t]*信任”
现在效果很好

关于ansible - 在 Ansible 的 lineinfile 任务中的正则表达式中使用 {{item}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com