743b939640
The basic provisioning tools we had in the MNAIO could long be used on a set of physical machines however doing so required a healthy understanding of everything going on under the hood. This change extracts the PXE components out of our older MNAIO tooling and will allow operators to easily deploy operating systems on machines in the most compatible way possible. Change-Id: I2188f0f0de7f8be331a35b5f22cf5114ea9b6718 Signed-off-by: Kevin Carter <kevin.carter@rackspace.com> |
||
---|---|---|
.. | ||
playbooks | ||
ansible-env.rc | ||
bindep.txt | ||
bootstrap.sh | ||
build.sh | ||
README.rst | ||
run.sh |
OpenStack-Ansible pxelinux Provisioning
- date
-
2018-04-24
- tags
-
rackspace, openstack, ansible
- category
-
*openstack, *nix
About this repository
This repository provides for basic "pxelinux" provisioning using debian based operating systems.
A complete set of options can be seen within the
playbook/group_vars/all.yml
file.
These provisioning playbooks have been created to use static
inventory. Example static inventory used for these playbooks can be seen
in the playbooks/inventory.yml
file.
Scripts have been created to simplify the deployment of these playbooks and install ansible however they are 100% optional.
Playbook Usage
These playbooks require three groups, dhcp_hosts
,
pxe_hosts
, and pxe_servers
. The groups
dhcp_hosts
and pxe_hosts
are used as targets
to install the required packages and setup the TFTP and DHCP services.
The group pxe_servers
is as a set of targets that to deploy
a given OS.
Each host in the pxe_servers
group should have the
something similar to the following configuration.
$name_used_in_inventory:
ansible_os_family: "{{ default_images[default_image_name]['image_type'] }}"
server_hostname: '$hostname'
server_image: "ubuntu-16.04-amd64"
server_default_interface: 'eth0'
server_obm_ip: 192.168.1.100
server_model: PowerEdge R710
server_mac_address: 00:11:22:33:44:55
server_extra_options: ''
server_fixed_addr: "10.0.0.100"
server_domain_name: "{{ default_server_domain_name }}"
ansible_host: "{{ server_fixed_addr }}"
The options $name_used_in_inventory and
$hostname need to be changed to reflect the machine
being deployed as well as the server_mac_address
and
server_obm_ip
entries. Note server_obm_ip
is
optional and not a required attribute.
With the inventory all setup the script build.sh
can be
used to deploy everything or the playbooks could be run with the
following commmand.
ansible-playbook -vv -i /root/inventory.yml
-e setup_host=${SETUP_HOST:-"true"}
-e setup_pxeboot=${SETUP_PXEBOOT:-"true"}
-e setup_dhcpd=${SETUP_DHCPD:-"true"}
-e default_image=${DEFAULT_IMAGE:-"ubuntu-16.04-amd64"}
-e default_http_proxy=${DEFAULT_HTTP_PROXY:-''}
--force-handlers
playbooks/site.yml
Once the playbooks have completed, set the pxe_servers
target hosts, PXE boot once and reboot them.
For convience a playbook named
playbooks/idrac-config.yml
has been added which will do
minimal drac reset and re-configuration which will
result in the host being ready to PXE. This playbook is
not intended for production use and was included
only as an example.