ansible 使用主机名作为条件

use*_*794 -1 ansible

我有一个正在构建的 HA 设置。我正在使用 Ansible 2.9.11。我需要搜索主机名,如果是 b 端,则将备份配置复制过来。我已经尝试了以下代码,但它不起作用。或者有没有不同的方法来实现这一点?

[警告]:条件语句不应包含 jinja2 模板分隔符,例如 {{ }} 或 {% %}。发现:{{inventory_hostname}} 中的 'b' 致命:[dev-sca02b]:失败!=> {"msg": "{{inventory_hostname }}' 中的条件检查 ''b' 失败。错误是:评估条件时出错({{inventory_hostname }} 中的'b'):'dev' 未定义\ n\n错误似乎在“/Users/user1/Documents/Ansible/sca_fusion.yaml”:第 134 行,第 5 列,但可能\n在文件中的其他地方,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n\n - 名称:“将 keepalived 更改为备份”\n ^ 此处\n"}

  - name: "Change keepalived to backup"
    replace:
      path: /etc/keepalived/keepalived.conf
      regexp: "MASTER"
      replace: "BACKUP"
    when: "'b' in {{ inventory_hostname }}"
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 5

该警告应将您指向问题的主要来源:

警告]:条件语句不应包含 jinja2 模板分隔符,例如 {{ }} 或 {% %}。

一个when条件是已经在一个隐含的神社模板内容,让您无需显式地创建一个你。你要:

  - name: "Change keepalived to backup"
    replace:
      path: /etc/keepalived/keepalived.conf
      regexp: "MASTER"
      replace: "BACKUP"
    when: "'b' in inventory_hostname"
Run Code Online (Sandbox Code Playgroud)