| # Licensed to the Apache Software Foundation (ASF) under one or more contributor |
| # license agreements; and to You under the Apache License, Version 2.0. |
| --- |
| # boot_instances.yml |
| # TODO, in "with_instance" loops, the "instance" variable that is passed in gets unset, look up the proper way to do nested loops |
| - name: set vars |
| set_fact: |
| name: "{{instance.name}}" |
| flavor: "{{instance.flavor | default (default_flavor, true) }}" |
| volume_env: "{{ lookup('env', 'OS_WSK_' + instance.name|upper + '_VOLUME')}}" |
| volume_dict: "{{instance.volume | default({})}}" |
| # instance: "{{instances | selectattr('name', 'equalto', 'db') | list | first}}" |
| |
| - name: create volume |
| os_volume: |
| state: present |
| size: "{{volume_env | default( volume_dict.size )}}" |
| display_name: "{{name}}-{{item}}_volume" |
| wait: yes |
| with_sequence: count={{instance.num_instances}} |
| when: (volume_env and volume_env != "") or (volume_dict and volume_dict.size) |
| |
| - name: launch an instance |
| os_server: |
| validate_certs: False |
| name: "{{name}}-{{item}}" |
| state: present |
| auth: "{{auth}}" |
| nics: |
| - net-id: "{{net_id}}" |
| #- net-name: "{{net_name}}" |
| image: "{{image}}" |
| flavor: "{{item.flavor | default (flavor) }}" |
| key_name: "{{key_name}}" |
| security_groups: "{{security_groups}}" |
| auto_ip: no |
| wait: yes |
| register: instance_info |
| with_sequence: count={{instance.num_instances}} |
| |
| - name: attach volume to host |
| os_server_volume: |
| server: "{{name}}-{{item}}" |
| state: present |
| volume: "{{name}}-{{item}}_volume" |
| wait: yes |
| # register: volume_info |
| with_sequence: count={{instance.num_instances}} |
| when: (volume_env and volume_env != "") or (volume_dict and volume_dict.size) |
| |
| # - add_host: ansible_ssh_host={{ item.server.private_v4 }} groups={{name}} |
| # with_items: instance_info.results |
| |
| # - local_action: add_host ansible_ssh_host={{ item.server.private_v4 }} groupname={{name}} |
| # with_items: instance_info.results |
| |
| - shell: "grep -e {{name}} {{hosts_dir}}/hosts" |
| ignore_errors: True |
| register: hosts_file |
| |
| # TODO, should render the hosts file from a template by using the add_host module commented below with a template |
| - shell: "echo [{{name}}] >> {{hosts_dir}}/hosts" |
| when: "{{hosts_file.rc}} != 0" |
| |
| - lineinfile: insertafter="^{{name}}" line="{{item.server.networks.itervalues().next()[0]}} block_device={{item.server.volumes[0].device }}" dest="{{hosts_dir}}/hosts" |
| with_items: instance_info.results |
| when: (volume_env and volume_env != "") or (volume_dict and volume_dict.size) |
| |
| - lineinfile: insertafter="^{{name}}" line="{{item.server.networks.itervalues().next()[0]}}" dest="{{hosts_dir}}/hosts" |
| with_items: instance_info.results |
| when: (not volume_env or volume_env == "" ) and (not volume_dict or not volume_dict.size) |