Add OpenStack iSCSI Multipath Playbooks and Jobs
Change-Id: Id29b17c9ef799bd5ae0560eaedfada6dd55a3b3d
diff --git a/playbooks/setup-openstack-iscsi-multipath/pre.yaml b/playbooks/setup-openstack-iscsi-multipath/pre.yaml
new file mode 100644
index 0000000..cb1c099
--- /dev/null
+++ b/playbooks/setup-openstack-iscsi-multipath/pre.yaml
@@ -0,0 +1,111 @@
+- hosts: undercloud-client
+ vars_files:
+ - vars.yaml
+ tasks:
+ - name: Create Multipath iSCSI Networks
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "network", "create", "{{ item }}" ]
+ loop:
+ - "{{ network_1 }}"
+ - "{{ network_2 }}"
+
+ - name: Create Multipath iSCSI Subnets
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - subnet
+ - create
+ - --subnet-range
+ - "{{ item.ip_range }}"
+ - --network
+ - "{{ item.network }}"
+ - "{{ item.subnet }}"
+ loop:
+ - { ip_range: "{{ network_ip_iscsi0 }}", network: "{{ network_1 }}", subnet: "{{ subnet_1 }}" }
+ - { ip_range: "{{ network_ip_iscsi1 }}", network: "{{ network_2 }}", subnet: "{{ subnet_2 }}" }
+
+ # TODO: Support port security
+ - name: Create the Multipath iSCSI Ports
+ ansible.builtin.command:
+ argv:
+ - "{{ os_venv }}/bin/openstack"
+ - --os-cloud
+ - openstack-testing
+ - port
+ - create
+ - --network
+ - "{{ item.network }}"
+ - --fixed-ip
+ - "subnet={{ item.subnet }},ip-address={{ item.ip }}"
+ - --disable-port-security
+ - "{{ item.port }}"
+ loop:
+ - { network: "{{ network_1 }}", subnet: "{{ subnet_1 }}", ip: "{{ ip_node_1_iscsi0 }}", port: "{{ port_node_1_iscsi0 }}" }
+ - { network: "{{ network_2 }}", subnet: "{{ subnet_2 }}", ip: "{{ ip_node_1_iscsi1 }}", port: "{{ port_node_1_iscsi1 }}" }
+ - { network: "{{ network_1 }}", subnet: "{{ subnet_1 }}", ip: "{{ ip_node_2_iscsi0 }}", port: "{{ port_node_2_iscsi0 }}" }
+ - { network: "{{ network_2 }}", subnet: "{{ subnet_2 }}", ip: "{{ ip_node_2_iscsi1 }}", port: "{{ port_node_2_iscsi1 }}" }
+
+ - name: Attach the Multipath iSCSI Ports to the StorPool Node
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "add", "port", "{{ storpool_node }}", "{{ item }}" ]
+ loop:
+ - "{{ port_node_1_iscsi0 }}"
+ - "{{ port_node_1_iscsi1 }}"
+
+ - name: Attach the Multipath iSCSI Ports to the OpenStack Node
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "server", "add", "port", "{{ openstack_node }}", "{{ item }}" ]
+ loop:
+ - "{{ port_node_2_iscsi0 }}"
+ - "{{ port_node_2_iscsi1 }}"
+
+ - name: Get Information About port_node_1_iscsi0
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "show", "--format", "json", "{{ port_node_1_iscsi0 }}" ]
+ register: port_node_1_iscsi0_info
+
+ - name: Get MAC Address of port_node_1_iscsi0
+ ansible.builtin.set_fact:
+ port_node_1_iscsi0_mac: "{{ (port_node_1_iscsi0_info.stdout | from_json).mac_address }}"
+
+ - name: Get Information About port_node_1_iscsi1
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "show", "--format", "json", "{{ port_node_1_iscsi1 }}" ]
+ register: port_node_1_iscsi1_info
+
+ - name: Get MAC Address of port_node_1_iscsi1
+ ansible.builtin.set_fact:
+ port_node_1_iscsi1_mac: "{{ (port_node_1_iscsi1_info.stdout | from_json).mac_address }}"
+
+ - name: Get Information About port_node_2_iscsi0
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "show", "--format", "json", "{{ port_node_2_iscsi0 }}" ]
+ register: port_node_2_iscsi0_info
+
+ - name: Get MAC Address of port_node_2_iscsi0
+ ansible.builtin.set_fact:
+ port_node_2_iscsi0_mac: "{{ (port_node_2_iscsi0_info.stdout | from_json).mac_address }}"
+
+ - name: Get Information About port_node_2_iscsi1
+ ansible.builtin.command:
+ argv: [ "{{ os_venv }}/bin/openstack", "--os-cloud", "openstack-testing", "port", "show", "--format", "json", "{{ port_node_2_iscsi1 }}" ]
+ register: port_node_2_iscsi1_info
+
+ - name: Get MAC Address of port_node_2_iscsi1
+ ansible.builtin.set_fact:
+ port_node_2_iscsi1_mac: "{{ (port_node_2_iscsi1_info.stdout | from_json).mac_address }}"
+
+ - name: Dump Required Information for Next Stage
+ ansible.builtin.copy:
+ content: |
+ port_node_1_iscsi0_mac: {{ port_node_1_iscsi0_mac }}
+ port_node_1_iscsi1_mac: {{ port_node_1_iscsi1_mac }}
+ ip_node_1_iscsi0: {{ ip_node_1_iscsi0 }}
+ ip_node_1_iscsi1: {{ ip_node_1_iscsi1 }}
+ port_node_2_iscsi0_mac: {{ port_node_2_iscsi0_mac }}
+ port_node_2_iscsi1_mac: {{ port_node_2_iscsi1_mac }}
+ ip_node_2_iscsi0: {{ ip_node_2_iscsi0 }}
+ ip_node_2_iscsi1: {{ ip_node_2_iscsi1 }}
+ dest: "~/ansivars.yaml"