Ansible 在一个任务中不同的行填充到不同的域

Ansible 在一个任务中不同的行填充到不同的域,ansible,Ansible,我试图创建一个剧本,在/etc/hosts中插入行。 棘手的部分是——主机域的确切线路不同。 我以以下(工作)剧本结束,其中包含两项任务: - hosts: all tasks: - name: "Add line to /etc/hosts -UK" lineinfile: path=/etc/hosts line='192.168.1.2 hostname.uk.com' when: ansible_domain ==

我试图创建一个剧本,在/etc/hosts中插入行。 棘手的部分是——主机域的确切线路不同。 我以以下(工作)剧本结束,其中包含两项任务:

- hosts: all
  tasks:
    - name: "Add line to /etc/hosts -UK"
      lineinfile: path=/etc/hosts
                  line='192.168.1.2 hostname.uk.com'
      when: ansible_domain == ".uk.com"
    - name: "Add line to /etc/hosts -US"
      lineinfile: path=/etc/hosts
                  line='192.168.255.255 hostname.us'
      when: ansible_domain == "us"
但我就是不喜欢:) 当我有10个域名时,我该怎么办? 有没有一种方法可以创建一个只有一个任务的剧本来实现同样的效果

给你:

- hosts: all

  vars:
    my_mapping:
      .uk.com:
        ip: 192.168.1.2
        fqdn: hostname.uk.com
      us:
        ip: 192.168.255.255
        fqdn: hostname.us

  tasks:
    - name: Add line to /etc/hosts
      lineinfile:
        path: /etc/hosts
        line: "{{ my_mapping[ansible_domain].ip }} {{ my_mapping[ansible_domain].fqdn }}"
  • 创建字典以映射以域为键的值
  • 请参阅模块参数中的字典值