diff options
author | Manuel Buil <mbuil@suse.com> | 2018-10-18 10:26:33 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2018-10-18 10:26:33 +0000 |
commit | ebe6bd459f7751fe7a82a6f5c5f78c393465e3fc (patch) | |
tree | 1e83fecf38889352322d3c0c048c64f0f5157a4e /xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml | |
parent | d8cbea84f9448da633bed36c41f12c4bcfd84ffb (diff) | |
parent | c380a85cb660d07da714ad3adf43439ad7938270 (diff) |
Merge "[Baremetal] Add baremetal support to create-nodes"
Diffstat (limited to 'xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml')
-rw-r--r-- | xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml b/xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml new file mode 100644 index 00000000..070221fd --- /dev/null +++ b/xci/playbooks/roles/create-nodes/tasks/barematalhoststojson.yml @@ -0,0 +1,79 @@ +--- +# Copyright 2018, SUSE Linux GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This playbook builds the json file with information about the baremetal nodes +# which is read by ironic to start the pxe booting + + +- name: BAREMETAL - Create file for static ip + file: + path: /tmp/baremetalstaticips + state: touch + group: root + owner: root + mode: 0644 + +- name: "Generating the json describing baremetal nodes" + block: + + - set_fact: + host_group: "{{ node_default_groups }}" + + - set_fact: + host_group: "{{ node_default_groups | union(node_groups[item.name]) }}" + when: node_groups[item.name] is defined + + - name: BAREMETAL - Fetch the ip + set_fact: + admin_ip: "{{ item.interfaces[idf.net_config.admin.interface].address }}" + + - name: BAREMETAL - Fetch the mac + set_fact: + admin_mac: "{{ item.interfaces[idf.net_config.admin.interface].mac_address }}" + + - name: BAREMETAL - set the json entry for baremetal nodes + set_fact: + node_data: + name: "{{ item.name }}" + uuid: "{{ item.name | to_uuid }}" + host_groups: "{{ vm_host_group }}" + driver: "{{ vm_node_driver|default('ipmi') }}" + driver_info: + power: + ipmi_address: "{{ item.remote_management.address }}" + ipmi_port: "{{ virtual_ipmi_port| default('623') }}" + ipmi_username: "{{ item.remote_management.user }}" + ipmi_password: "{{ item.remote_management.pass }}" + nics: + - mac: "{{ admin_mac }}" + ansible_ssh_host: "{{ admin_ip }}" + ipv4_address: "{{ admin_ip }}" + properties: + cpu_arch: "{{ item.node.arch }}" + ram: "{{ item.node.memory.rstrip('G') }}" + cpus: "{{ item.node.cpus }}" + disk_size: "{{ item.disks[0].disk_capacity.rstrip('G') }}" + + - name: BAREMETAL - Static ip config for dnsmasq + lineinfile: + path: /tmp/baremetalstaticips + state: present + line: '{{ admin_mac }},{{ admin_ip }}' + + - name: BAREMETAL - add created node info + set_fact: + nodes_json_data: "{{ nodes_json_data | combine({item.name: node_data}) }}" + + when: (num_nodes | int) > (nodes_json_data | length | int) + 1 |