This is just a experimental prototype for the technique discussion purpose. It leverage the basic framework of openstack, add support to process multiple resources via one request. It provide the interface to dispatch the workload among multiple conductor hosts and multiple processes on each host. Currently, it can be used to provision redhat or ubuntu system with ssh and pxe plugins.
- xcat3-api: Can be looked as a controller node which receive the request from client. It provide rest api interface with pecan and oslo.service.
- xcat3-conductor: Can be looked as a worker node act as a consumer of mesage queue to process the requests. (support multiple worker nodes)
- xcat3-network: Manage the dhcp, dns service for target subnet.
- console-server(TODO): conserver or confluent.
Supported operating systems:
- Ubuntu 14.04, 16.04
- Redhat >= 7.0
Please refer the link xcat-play to setup xcat3 with ansible playbook.
There should be service processes like this
root 10151 1 0 Jun01 ? 00:08:52 /usr/bin/python /usr/local/bin/xcat3-api --config-file /etc/xcat3/xcat3.conf root 10166 10151 0 Jun01 ? 00:00:00 /usr/bin/python /usr/local/bin/xcat3-api --config-file /etc/xcat3/xcat3.conf root 10288 10151 0 Jun01 ? 00:00:00 /usr/bin/python /usr/local/bin/xcat3-api --config-file /etc/xcat3/xcat3.conf root 11137 1 0 Jun01 ? 00:08:56 /usr/bin/python /usr/local/bin/xcat3-conductor --config-file /etc/xcat3/xcat3.conf root 11156 11137 1 Jun01 ? 00:19:56 /usr/bin/python /usr/local/bin/xcat3-conductor --config-file /etc/xcat3/xcat3.conf root 11241 11137 1 Jun01 ? 00:19:59 /usr/bin/python /usr/local/bin/xcat3-conductor --config-file /etc/xcat3/xcat3.conf root 11659 1 1 Jun01 ? 00:19:57 /usr/bin/python /usr/local/bin/xcat3-network --config-file /etc/xcat3/xcat3.conf
- Define network based on your environment
xcat3 network-create c920 subnet=11.0.0.0 netmask=255.0.0.0 gateway=11.0.0.101 dynamic_range=11.4.40.111-11.4.40.113 nameservers=11.0.0.101 # If success, the dhcp service should be started like :: dhcpd -f -q -4 -pf /var/run/xcat3/dhcpd.pid -cf /etc/xcat3/dhcpd.conf -d -lf /var/lib/xcat3/dhcpd.leases
- Define node (currently only support pxe and ssh plugins)
xcat3 create xcat3test1 --control ssh_username=root,ssh_virt_type=virsh,ssh_address=11.5.102.1,ssh_key_filename=/root/.ssh/id_rsa \ --nic mac=52:54:00:36:ac:b1,ip=11.5.102.60,name=eth0,primary=True mgt=kvm netboot=pxe arch=x86_64
- Import image from iso with copycds (Support ubuntu and redhat)
xcat3-copycds /iso/RHEL-7.3-Server-x86_64-dvd1-stable.iso
- Deploy system
xcat3 osimage-list xcat3 deploy xcat3test1 --osimage <rhels7.3-x86_64> # generated by xcat3-copycds xcat3 power xcat3test1 on
- Access the bare metal node
# wait about 10 minutes ssh 11.5.102.60 # ( ip address of xcat3test1)