diff --git a/playbooks/first.play.yml b/playbooks/first.play.yml index 96369b2e97e1601d3022b5a5a3ec898de51974da..8412d6bca10b0e21c80f30a141b3cade82724791 100644 --- a/playbooks/first.play.yml +++ b/playbooks/first.play.yml @@ -3,98 +3,76 @@ hosts: all become: true vars: - gns3_hosts: + interfaces: H1: - interfaces: - - name: "eth0" - address: "1.0.0.3" - netmask: "255.255.255.0" - gateway: "1.0.0.1" + - name: "eth0" + address: "1.0.0.3" + netmask: "255.255.255.0" + gateway: "1.0.0.1" + + H2: + - name: "eth0" + address: "3.0.0.3" + netmask: "255.255.255.0" + gateway: "3.0.0.2" R1: - interfaces: - - name: eth1 - address: "1.0.0.1" - netmask: "255.255.255.0" - - name: eth0 - address: "2.0.0.1" - netmask: "255.255.255.0" - routes: - - network: "3.0.0.0/24" - via: "2.0.0.2" + - name: eth1 + address: "1.0.0.1" + netmask: "255.255.255.0" + - name: eth0 + address: "2.0.0.1" + netmask: "255.255.255.0" R2: - interfaces: - - name: eth0 - address: "2.0.0.2" - netmask: "255.255.255.0" - - name: eth1 - address: "3.0.0.2" - netmask: "255.255.255.0" - routes: - - network: "1.0.0.0/24" - via: "2.0.0.1" + - name: eth0 + address: "2.0.0.2" + netmask: "255.255.255.0" + - name: eth1 + address: "3.0.0.2" + netmask: "255.255.255.0" - H2: - interfaces: - - name: eth0 - address: "3.0.0.3" - netmask: "255.255.255.0" - gateway: "3.0.0.2" - - tasks: - # - name: "Debug interfaces" - # ansible.builtin.debug: - # msg: "{{ item.name }}" - # loop: "{{ gns3_hosts[inventory_hostname].interfaces }}" - - # - name: "Debug routes" - # ansible.builtin.debug: - # msg: "{{ item.network }}" - # loop: "{{ gns3_hosts[inventory_hostname].routes }}" + routes: + R1: + - network: "3.0.0.0/24" + via: "2.0.0.2" - # - name: "Debug YAML" - # ansible.builtin.debug: - # msg: "{{ item.interfaces }}" - # loop: "{{ gns3_hosts[inventory_hostname] | dict2items }}" - # tags: debug_yaml + R2: + - network: "1.0.0.0/24" + via: "2.0.0.1" - - name: "Ensure /etc/network/interfaces.d exists" + tasks: + - name: Ensure /etc/network/interfaces.d exists ansible.builtin.file: path: /etc/network/interfaces.d state: directory mode: '0755' - - name: "Configure network interfaces" + - name: Configure network interfaces ansible.builtin.template: - src: "./templates/interfaces.j2" - dest: "/etc/network/interfaces.d/{{ item.name }}" + src: "templates/netconfig.j2" + dest: "/etc/network/interfaces.d/{{ inventory_hostname }}" owner: "root" group: "root" mode: "0644" - loop: "{{ gns3_hosts[inventory_hostname].interfaces }}" notify: Restart networking - - name: "Configure routes" - ansible.builtin.template: - src: "./templates/routes.j2" - dest: "/etc/network/interfaces.d/{{ inventory_hostname }}_routes" - owner: "root" - group: "root" - mode: "0644" - loop: "{{ gns3_hosts[inventory_hostname].routes }}" - when: inventory_hostname != "H1" and inventory_hostname != "H2" - notify: Restart networking - - # - name: Verify H1 can ping H2 - # command: ping -c 3 3.0.0.3 + # - name: H1 pings H2 + # ansible.builtin.command: ping -c 3 3.0.0.3 # register: ping_result # changed_when: false # failed_when: ping_result.rc != 0 # when: inventory_hostname == "H1" + # + # - name: H2 pings H2 + # ansible.builtin.command: ping -c 3 1.0.0.3 + # register: ping_result + # changed_when: false + # failed_when: ping_result.rc != 0 + # when: inventory_hostname == "H2" handlers: - - name: "Restart networking" + - name: Restart networking ansible.builtin.systemd: name: networking state: restarted diff --git a/playbooks/templates/netconfig.j2 b/playbooks/templates/netconfig.j2 new file mode 100644 index 0000000000000000000000000000000000000000..f4ba8c5e5c8ea6c5f9f63cb04ffb1b9ee95c6b70 --- /dev/null +++ b/playbooks/templates/netconfig.j2 @@ -0,0 +1,17 @@ +{% for intf in interfaces[inventory_hostname] %} +auto {{ intf.name }} +iface {{ intf.name }} inet static + address {{ intf.address }} + netmask {{ intf.netmask }} +{% if intf.gateway is defined %} + gateway {{ intf.gateway }} +{% endif %} +{% endfor %} + +{% if inventory_hostname in routes %} +{% for route in routes[inventory_hostname] %} + post-up ip route add {{ route.network }} via {{ route.via }} + pre-down ip route del {{ route.network }} via {{ route.via }} +{% endfor %} +{% endif %} +