bifrost/playbooks/roles/bifrost-deploy-nodes-dynamic
Leif Madsen cadc107384
Add `when` to skip os_client_config in noauth mode
When noauth_mode=true, the os_client_config Ansible module will still execute
and then fails due to a missing clouds.yaml file (which is only generated
when keystone is enabled and installed).

This change will skip over the os_client_config module when noauth_mode
is set to true.

Change-Id: Iff3f33fe5e1f7d952c982fa377af0ff415ec2831
Closes-Bug: #1693309
Signed-off-by: Leif Madsen <lmadsen@redhat.com>
2017-05-26 08:34:14 -04:00
..
defaults Remove deprecated nginx_port option 2017-02-03 20:01:07 +00:00
handlers Add initial dynamic deployment role 2015-06-11 16:43:42 -04:00
meta Update playbooks to support os_client_config 2016-11-22 14:23:24 +00:00
tasks Add `when` to skip os_client_config in noauth mode 2017-05-26 08:34:14 -04:00
templates Make booleans in templates explicit 2016-06-01 08:33:56 -07:00
vars Add initial dynamic deployment role 2015-06-11 16:43:42 -04:00
README.md Add dhcp related tasks to inspection role 2016-12-27 16:53:39 +02:00

README.md

bifrost-deploy-nodes-dynamic

Provisions nodes based on inventory utilizing the os_ironic_node module installed by Bifrost.

Requirements

This role is expected to be executed on a node that the "bifrost-ironic-install" node has been executed upon.

This role expects to be executed in a sequence with bifrost-configdrives-dynamic, however that is unnecessary IF the host has a dictionary named instance_info defined as that will be used as overriding values.

Role Variables

ironic_url: This is the URL to the ironic server. By default, this is set to "http://localhost:6385/"

network_interface: This is the network interface that the nodes receive DHCP/PXE/iPXE. This is utilized to generate the url that Ironic is configured with for image retrieval. This variable does not have a default in this role and expects to receive this information from the calling playbook.

deploy_image_filename: This is the filename of the image to deploy, which is combined with the network_interface variable to generate a URL used to set the ironic instance image_source. This variable does not have a default in this role and expects to receive this information from the calling playbook.

deploy_url_protocol: The protocol to utilize to access config_drive and image_source files. The default is to utilize HTTP in generated HTTP URLs for bifrost, however this setting allows a user to change that default if they they have a modified local webserver configuration.

deploy_image: This is the full path to the image to be deployed to the system. This is as ironic requires the MD5 hash of the file to be deployed for validation during the deployment process. As a result of this requirement, the hash is automatically collected and submitted to ironic with the node deployment request. This variable does not have a default in this role and expects to receive this information from the calling playbook.

instance_info: A dictionary containing the information to define an instance. By default, this is NOT expected to be defined, however if defined it is passed in whole to the deployment step. This value will override deploy_image_filename, deploy_image, and network_interface variables. Key-value pairs that are generally expected are image_source, image_checksum, root_gb, however, any supported key/value can be submitted to the API.

inventory_dhcp: A boolean value, defaulted to false, which allows dnsmasq to configure the IP of the machines, rather than putting the IP configuration of the machine in the config drive. If set to true, the role will create a file for each machine under /etc/dnsmasq.d/bifrost.dhcp-hosts.d containing the mac, name of the machine, lease time and optionally the IP address that will be offered to the machine by DHCP. This optional IP is controlled by the inventory_dhcp_static_ip parameter.

inventory_dhcp_static_ip: A boolean value, defaulted to true, which configures the mechanism for setting up the IP of machines when inventory_dhcp is enabled. If set to true, it will read the value of the key 'provisioning_ipv4_address' from the inventory section of each machine and dnsmasq will assign that IP to each machine accordingly. Note, that if you don't assign the key 'provisioning_ipv4_address' it will default to the value of 'ipv4_address'. If set to false, dnsmasq will assign IPs automatically from the configured DHCP range.

noauth_mode: Controls if the module is called in noauth mode. By default, this is the standard mode of operation, however if set to false, the role utilizes os_client_config which expects a clouds.yml file. More information about this file format can be found at: http://docs.openstack.org/developer/os-client-config/

cloud_name: Optional: String value defining a clouds.yaml entry for the ansible module to leverage.

inventory_dns: A boolean value, defaulted to false, which causes the role to update a template file and reload dnsmasq upon each update in order to perform static dns addressing utilizing the ipv4_address parameter.

Dependencies

This role is intended to be executed upon a node that the bifrost-ironic-install role has been executed upon. The configuration that is leveraged by this role utilizes a configuration drive to place network configuration and an SSH key on the newly deployed host. As such, the bifrost-configdrives role is required.

Example Playbook

NOTE: The example below assumes bifrost's default and that an instance_info variable is not defined.

  - hosts: baremetal
    connection: local
    become: no
    roles:
      - role: bifrost-configdrives
      - role: bifrost-deploy-nodes-dynamic

License

Copyright (c) 2015 Hewlett-Packard Development Company, L.P.

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.

Author Information

Ironic Developers