Polishing of the readme and synchronizing structure

Updates to the README to provide additional context and sync up
with the file layout.

Moved the setup folder to the install folder as the folder is
specificially utilized to install.
This commit is contained in:
Julia Kreger 2015-03-09 16:33:45 -04:00
parent e6cbfc0098
commit d93a3218af
15 changed files with 35 additions and 28 deletions

View File

@ -1,7 +1,7 @@
Bifrost Bifrost
======= =======
Bifrost is a set of ansible playbooks that automates the task of deploying a Bifrost is a set of Ansible playbooks that automates the task of deploying a
base image onto a set of known hardware using Ironic. It provides modular base image onto a set of known hardware using Ironic. It provides modular
utility for one-off operating system deployment with as few operational requirements utility for one-off operating system deployment with as few operational requirements
as reasonably possible. as reasonably possible.
@ -12,9 +12,9 @@ This is split into roughly three steps:
prepare the local environment by downloading and/or building machine images, prepare the local environment by downloading and/or building machine images,
and installing and configuring the necessary services. and installing and configuring the necessary services.
- enroll: - enroll:
take as input a hardware inventory file and enroll the listed hardware with take as input a customizable hardware inventory file and enroll the
Ironic, configuring each appropriately for deployment with the listed hardware with Ironic, configuring each appropriately for deployment
previously-downloaded images. with the previously-downloaded images.
- deploy: - deploy:
instruct Ironic to deploy the operating system onto each machine. instruct Ironic to deploy the operating system onto each machine.
@ -35,7 +35,7 @@ Edit ./inventory/group_vars/all.yaml to match your environment.
Then run:: Then run::
cd setup cd install
bash ./env-setup.sh bash ./env-setup.sh
source /opt/stack/ansible/hacking/env-setup source /opt/stack/ansible/hacking/env-setup
cd .. cd ..
@ -74,7 +74,7 @@ environment variables:
- IRONIC_URL - A URL to the Ironic API, such as http://localhost:6385/ - IRONIC_URL - A URL to the Ironic API, such as http://localhost:6385/
- OS_AUTH_TOKEN - Any value, such as an empty space, is required to cause the client library to send requests directly to the API. - OS_AUTH_TOKEN - Any value, such as an empty space, is required to cause the client library to send requests directly to the API.
For your ease of use, setup/env-vars can be sourced to allow the CLI to connect For your ease of use, install/env-vars can be sourced to allow the CLI to connect
to a local Ironic installation operating in noauth mode. to a local Ironic installation operating in noauth mode.
@ -83,9 +83,9 @@ Hardware Enrollment
The following requirements are installed during the Install step above: The following requirements are installed during the Install step above:
- openstack-infra/shade library -> https://review.openstack.org/159609 - openstack-infra/shade library
- openstack-infra/os-client-config -> https://review.openstack.org/159563 - openstack-infra/os-client-config
- os_baremetal ansible module under development -> https://github.com/juliakreger/ansible-modules-extras/blob/features/new-openstack/cloud/os_baremetal.py - The os_ironic and os_ironic_node Ansible modules under development -> https://github.com/juliakreger/ansible-modules-extras/blob/features/new-openstack/cloud/
You will also need a CSV file containing information about the hardware you are enrolling. You will also need a CSV file containing information about the hardware you are enrolling.
@ -94,27 +94,32 @@ CSV File Format
The CSV file has the following columns: The CSV file has the following columns:
1. MAC Address 0. MAC Address
2. Management username 1. Management username
3. Management password 2. Management password
4. Management Address 3. Management Address
5. CPU Count 4. CPU Count
6. Memory size in MB 5. Memory size in MB
7. Disk Storage in GB 6. Disk Storage in GB
8. Flavor (Not Used) 7. Flavor (Not Used)
9. Type (Not Used) 8. Type (Not Used)
10. Host UUID 9. Host UUID
11. Host or Node name 10. Host or Node name
12. Host IP Address to be set 11. Host IP Address to be set
13. ipmi_target_channel - Requires: ipmi_bridging set to single 12. ipmi_target_channel - Requires: ipmi_bridging set to single
14. ipmi_target_address - Requires: ipmi_bridging set to single 13. ipmi_target_address - Requires: ipmi_bridging set to single
15. ipmi_transit_channel - Requires: ipmi_bridging set to dual 14. ipmi_transit_channel - Requires: ipmi_bridging set to dual
16. ipmi_transit_address - Requires: ipmi_bridging set to dual 15. ipmi_transit_address - Requires: ipmi_bridging set to dual
Example definition:: Example definition::
00:11:22:33:44:55,root,undefined,192.168.122.1,1,8192,512,NA,NA,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee,hostname_100,192.168.2.100,,,, 00:11:22:33:44:55,root,undefined,192.168.122.1,1,8192,512,NA,NA,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee,hostname_100,192.168.2.100,,,,
This file format is fairly flexible and can be easilly modified
although the enrollment and deployment playbooks utilize the model
of a host per line model in order to process through the entire
list, as well as reference the specific field items.
How this works? How this works?
--------------- ---------------
@ -126,10 +131,13 @@ Example::
ansible-playbook -i inventory/localhost -vvvv enroll/enroll.yaml -e baremetal_csv_file=inventory/baremetal.csv ansible-playbook -i inventory/localhost -vvvv enroll/enroll.yaml -e baremetal_csv_file=inventory/baremetal.csv
Note that enrollment is a one-time operation. This module *does not* Note that enrollment is a one-time operation. The Ansible module *does not*
synchronize data for existing nodes. You should use the Ironic CLI to do this synchronize data for existing nodes. You should use the Ironic CLI to do this
manually at the moment. manually at the moment.
Additionally, it is important to note that the playbooks for enrollment are
split into three separate playbooks based up the setting of ipmi_bridging.
Hardware Deployment Hardware Deployment
=================== ===================
@ -142,9 +150,8 @@ How this works?
The deploy.yaml playbook is intended to create configdrives for servers, and The deploy.yaml playbook is intended to create configdrives for servers, and
initiate the node deployments through Ironic. IPs are injected into the config initiate the node deployments through Ironic. IPs are injected into the config
drive and statically assigned. drive and are statically assigned.
Example:: Example::
ansible-playbook -i inventory/localhost -vvvv deploy/deploy.yaml -e baremetal_csv_file=inventory/baremetal.csv ansible-playbook -i inventory/localhost -vvvv deploy/deploy.yaml -e baremetal_csv_file=inventory/baremetal.csv