Ansible网络模块,提供程序中有多个主机

时间:2018-01-26 13:02:42

标签: ansible

是否可以在提供商

中使用多个主机的网络模块,即 ios_config
public class Cycle{
 private int price;


 Cycle(int price) {
     this.price = price;
 }

 int getPrice() {
     return this.price;
 }

 @Override
 public String toString() {
     return "" + this.price;
 }

 public boolean equals(Cycle cycle) {
     return this.getPrice() == cycle.getPrice();
 }
}

理想情况下,我希望能够遍历多个主机。

我确实尝试了- hosts: localhost vars: cli: host: - 192.168.1.222 - 192.168.1.200 username: admin password: PASS1 authorize: yes auth_pass: PASS2 tasks: - name: Do something ios_config: lines: - ntp logging - ntp source Vlan900 provider: "{{cli}}" ,只使用了主要示例中的列表,但我并不幸运。

可以吗?

1 个答案:

答案 0 :(得分:1)

您可以使用模板化提供程序变量并利用Ansible的主机循环机制:

主机:

[devices]
192.168.1.222
192.168.1.200

剧本:

- hosts: devices
  connection: local
  vars:
    cli:
      host: "{{ inventory_hostname }}"
      username: admin
      password: PASS1
      authorize: yes
      auth_pass: PASS2

  tasks:
    - name: Do something
      ios_config:
        lines:
          - ntp logging
          - ntp source Vlan900
        provider: "{{ cli }}"

我添加connection: local强制Ansible从localhost执行所有操作(根据网络模块的要求)并在host: "{{ inventory_hostname }}"变量中使用cli