blob: da1e8764033952c15a5bbf66c5acc15d54f6ef60 [file] [log] [blame]
Zack Williams0e583122016-04-30 16:57:03 -07001---
2- hosts: nova-compute-1
3 remote_user: ubuntu
4 become: yes
5
6 tasks:
7 - name: Include configuration vars
8 include_vars: simulate-fabric-vars.yml
9
10 - name: Install prerequisites
11 apt:
12 name={{ item }}
13 update_cache=yes
14 cache_valid_time=3600
15 become: yes
Andy Bavier66ee9012016-07-20 17:25:51 -040016 register: result
17 until: result | success
18 retries: 15
19 delay: 60
Zack Williams0e583122016-04-30 16:57:03 -070020 with_items:
21 - bridge-utils
22
23 - name: Create bridges
Zack Williams5af91912016-05-01 06:34:16 -070024 when: "ansible_{{ item.name }} is not defined"
Zack Williams0e583122016-04-30 16:57:03 -070025 command: brctl addbr "{{ item.name }}"
26 with_items: "{{ simfabric_bridges }}"
27
Zack Williams4a9b1ad2016-05-16 14:24:06 -070028 # note, not idempotent if failed between prior step and this step
Zack Williamsc11aea52016-05-01 21:34:37 -070029 - name: Set IP addresses to bridges
30 when: "ansible_{{ item.0.name }} is not defined"
31 command: "ip addr add {{ item.1 }} dev {{ item.0.name }}"
32 with_subelements:
33 - "{{ simfabric_bridges }}"
34 - addresses
35
Zack Williams4a9b1ad2016-05-16 14:24:06 -070036 - name: Run setup again to obtain bridge info
37 setup:
38
Zack Williamsc11aea52016-05-01 21:34:37 -070039 - name: Start bridges
Zack Williams4a9b1ad2016-05-16 14:24:06 -070040 when: "not ansible_{{ item.name }}.active"
Zack Williamsb994a9e2016-05-01 22:21:06 -070041 command: "ip link set dev {{ item.name }} up"
Zack Williamsc11aea52016-05-01 21:34:37 -070042 with_items: "{{ simfabric_bridges }}"
43
44 - name: Create ip links
Andy Bavierc2335122016-06-25 09:59:22 -040045 when: "ansible_{{ item.dev }} is not defined"
46 command: "ip link add dev {{ item.dev }} address {{ item.mac }} type {{ item.type }} peer name {{ item.peer }}"
Zack Williamsc11aea52016-05-01 21:34:37 -070047 with_items: "{{ simfabric_links }}"
48
Zack Williams4a9b1ad2016-05-16 14:24:06 -070049 - name: Run setup again to obtain link info
50 setup:
51
Zack Williamsc11aea52016-05-01 21:34:37 -070052 - name: Start interfaces
Zack Williams4a9b1ad2016-05-16 14:24:06 -070053 when: "not ansible_{{ item }}.active"
Zack Williamsc11aea52016-05-01 21:34:37 -070054 command: "ip link set dev {{ item }} up"
Andy Bavierc2335122016-06-25 09:59:22 -040055 with_items:
56 - "{{ simfabric_links | map(attribute='dev') | list }}"
57 - "{{ simfabric_links | map(attribute='peer') | list }}"
Zack Williamsc11aea52016-05-01 21:34:37 -070058
59 - name: Add interfaces to bridges
Zack Williams4a9b1ad2016-05-16 14:24:06 -070060 when: "not item.1 in ansible_{{ item.0.name }}.interfaces"
Zack Williamsc11aea52016-05-01 21:34:37 -070061 command: "brctl addif {{ item.0.name }} {{ item.1 }}"
62 with_subelements:
63 - "{{ simfabric_bridges }}"
64 - interfaces
65
Zack Williams4a9b1ad2016-05-16 14:24:06 -070066 - name: Check for iptables rule
Zack Williams61e17e52016-05-16 14:40:52 -070067 command: "iptables -t nat -C POSTROUTING -s 10.168.0.0/16 ! -d 10.168.0.0/16 -j MASQUERADE"
Zack Williams4a9b1ad2016-05-16 14:24:06 -070068 register: iptables_check
Zack Williams61e17e52016-05-16 14:40:52 -070069 failed_when: "iptables_check|failed and 'No chain/target/match by that name' not in iptables_check.stderr"
Zack Williams4a9b1ad2016-05-16 14:24:06 -070070
71 - name: Create iptables rule
72 when: "iptables_check.rc != 0"
Zack Williams61e17e52016-05-16 14:40:52 -070073 command: "iptables -t nat -A POSTROUTING -s 10.168.0.0/16 ! -d 10.168.0.0/16 -j MASQUERADE"
Zack Williams4a9b1ad2016-05-16 14:24:06 -070074
75# the below will likely work when this pull makes it into ansible:
76# https://github.com/ansible/ansible-modules-extras/pull/1685
77# - name: Configure iptables
78# iptables: "table={{ item.table }} chain={{ item.chain }} source={{ item.source }} destination={{ item.dest }} jump={{ item.jump }}"
79# with_items: "{{ simfabric_iptables }}"
Zack Williamsc11aea52016-05-01 21:34:37 -070080
81 - name: Set kernel sysctl values
82 sysctl:
83 name="{{ item.name }}"
84 value="{{ item.value }}"
85 sysctl_set=yes
86 state=present
87 reload=yes
88 with_items: "{{ simfabric_sysctl }}"
89