fcfd902048
Change-Id: I29fe3f507000663d7b9e801003010d4f76c17940 Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
77 lines
2.9 KiB
ReStructuredText
77 lines
2.9 KiB
ReStructuredText
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.
|
|
|
|
.. code-block:: yaml
|
|
|
|
$name_used_in_inventory:
|
|
ansible_os_family: "{{ default_images[default_image_name]['image_type'] }}"
|
|
server_hostname: '$hostname'
|
|
server_image: "ubuntu-18.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.
|
|
|
|
.. code-block:: bash
|
|
|
|
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-18.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.
|