diff options
| author | Tlacenka <tlacencin@gmail.com> | 2017-07-10 15:45:48 +0200 | 
|---|---|---|
| committer | Tomas Sedovic <tomas@sedovic.cz> | 2017-07-10 15:45:48 +0200 | 
| commit | 7d92318da75c0f1599465e02d58496e470725796 (patch) | |
| tree | 65718670457d9e0fa8431d4d3e80c47f9bce625e | |
| parent | 8c0287ed00998dbc0f6f5a7a29377d6348b51e8d (diff) | |
| download | openshift-7d92318da75c0f1599465e02d58496e470725796.tar.gz openshift-7d92318da75c0f1599465e02d58496e470725796.tar.bz2 openshift-7d92318da75c0f1599465e02d58496e470725796.tar.xz openshift-7d92318da75c0f1599465e02d58496e470725796.zip  | |
Playbook prerequisites.yml checks that prerequisites are met before provisioning (#518)
* prerequisites.yml: check prerequisites on localhost needed for provisioning
provision.yml: includes prerequisites.yml
* prerequisites: indentation fixed
* prerequisites.yml: used ansible_version variable, openstack modules for ansible
* prerequisites.yml: os_keypair is not suitable for this purpose
* prerequisites.yml: openstack keypair command exchanged for shade
- there is no Ansible module for this now
- os_keypair is not suitable for this purpose
- python-openstackclient dependency is not desirable
| -rw-r--r-- | playbooks/provisioning/openstack/prerequisites.yml | 76 | ||||
| -rw-r--r-- | playbooks/provisioning/openstack/provision.yaml | 2 | 
2 files changed, 78 insertions, 0 deletions
diff --git a/playbooks/provisioning/openstack/prerequisites.yml b/playbooks/provisioning/openstack/prerequisites.yml new file mode 100644 index 000000000..71a99fc82 --- /dev/null +++ b/playbooks/provisioning/openstack/prerequisites.yml @@ -0,0 +1,76 @@ +--- +- hosts: localhost +  tasks: + +  # Check ansible +  - name: Check Ansible version +    assert: +      that: > +        (ansible_version.major == 2 and ansible_version.minor >= 3) or +        (ansible_version.major > 2) +      msg: "Ansible version must be at least 2.3" + +  # Check shade +  - name: Try to import python module shade +    command: python -c "import shade" +    ignore_errors: yes +    register: shade_result +  - name: Check if shade is installed +    assert: +      that: 'shade_result.rc == 0' +      msg: "Python module shade is not installed" + +  # Check python-dns +  - name: Try to import python DNS module +    command: python -c "import dns" +    ignore_errors: yes +    register: pythondns_result +  - name: Check if python-dns is installed +    assert: +      that: 'pythondns_result.rc == 0' +      msg: "Python module python-dns is not installed" + +  # Check jinja2 +  - name: Try to import jinja2 module +    command: python -c "import jinja2" +    ignore_errors: yes +    register: jinja_result +  - name: Check if jinja2 is installed +    assert: +      that: 'jinja_result.rc == 0' +      msg: "Python module jinja2 is not installed" + +  # Check Glance image +  - name: Try to get image facts +    os_image_facts: +      image: "{{ openstack_default_image_name }}" +    register: image_result +  - name: Check that image is available +    assert: +      that: "image_result.ansible_facts.openstack_image" +      msg: "Image {{ openstack_default_image_name }} is not available" + +  # Check network name +  - name: Try to get network facts +    os_networks_facts: +      name: "{{ openstack_external_network_name }}" +    register: network_result +  - name: Check that network is available +    assert: +      that: "network_result.ansible_facts.openstack_networks" +      msg: "Network {{ openstack_external_network_name }} is not available" + +  # Check keypair +  # TODO kpilatov: there is no Ansible module for getting OS keypairs +  #                (os_keypair is not suitable for this) +  #                this method does not force python-openstackclient dependency +  - name: Try to show keypair +    command: > +             python -c 'import shade; cloud = shade.openstack_cloud(); +             exit(cloud.get_keypair("{{ openstack_ssh_public_key }}") is None)' +    ignore_errors: yes +    register: key_result +  - name: Check that keypair is available +    assert: +      that: 'key_result.rc == 0' +      msg: "Keypair {{ openstack_ssh_public_key }} is not available" diff --git a/playbooks/provisioning/openstack/provision.yaml b/playbooks/provisioning/openstack/provision.yaml index 7cde5e8b8..92b6d3356 100644 --- a/playbooks/provisioning/openstack/provision.yaml +++ b/playbooks/provisioning/openstack/provision.yaml @@ -1,4 +1,6 @@  --- +- include: "prerequisites.yml" +  - include: "provision-openstack.yml"  - include: "pre-install.yml"  | 
