首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可定义全局变量

不可定义全局变量
EN

Server Fault用户
提问于 2022-07-27 08:19:25
回答 1查看 1.7K关注 0票数 0

我想定义一个基于Linux发行版的全局var (_cfg_chrony):如果OS家族是Redhat,那么定义/etc/chrony.conf的配置路径;如果OS家族是Debian,则定义/etc/chrony/chrony.conf的配置路径。

在我的剧本开始时,我试着做这样的事情,但似乎它只应用了最后一个变量,而忽略了条件:

代码语言:javascript
复制
  vars:
    _cfg_chrony: /etc/chrony.conf
    when: ansible_facts['os_family'] == "RedHat"
    _cfg_chrony: /etc/chrony/chrony.conf
    when: ansible_facts['os_family'] == "Debian"

如何正确设置?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-07-27 08:37:10

在任务中定义事实

代码语言:javascript
复制
- name: "facts for debian - family"
  set_fact:
    _cfg_chrony: /etc/chrony.conf
  when:
    - ansible_os_family == "Debian"

- name: "facts for RH - family"
  set_fact:
    _cfg_chrony: /etc/chrony/chrony.conf
  when:
    - ansible_os_family == "RedHat"

- name: a task
  ansible.builtin.debug:
    var: _cfg_chrony

或者另一种更短但更难读的方式:

代码语言:javascript
复制
- name: a task
  ansible.builtin.debug:
    var: _cfg_chrony
  vars:
    _cfg_chrony: "{{ ('/etc/chrony.conf' if (ansible_os_family == 'Debian')) or ('/etc/chrony/chrony.conf' if (ansible_os_family == 'RedHat')) }}"
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1106713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档