如何从Ansible facts获取DNS搜索域并解决变量输出带括号问题

解决方案
ansible_dns['search'] 是列表类型变量,存储了主机配置的所有DNS搜索域,直接输出整个列表对象自然会携带方括号。
根据你的使用场景选择对应处理方式即可:
- 仅需使用第一个搜索域(主机仅配置了一个搜索域时适用):
直接取下标为0的第一个元素,语法为:{{ ansible_dns['search'][0] }}
输出结果为纯字符串,不会带方括号。 - 需要使用全部搜索域:
用Jinja2的join过滤器将列表元素拼接为字符串,可自定义分隔符:- 用空格分隔(适配resolv.conf的search行规范):
{{ ansible_dns['search'] | join(' ') }} - 用逗号分隔:
{{ ansible_dns['search'] | join(',') }}
- 用空格分隔(适配resolv.conf的search行规范):
实际使用示例
- name: 配置系统DNS搜索域 ansible.builtin.lineinfile: path: /etc/resolv.conf regexp: '^search\s+' line: "search {{ ansible_dns['search'] | join(' ') }}"
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

