BareMetal as a Service (Ironic) - StandAlone
setenforce 0
sed s/SELINUX=.*/SELINUX=disabled/ /etc/selinux/config -i
1 |
|
systemctl stop firewalld
systemctl disable firewalld
1
2 |
#### interface de gerencia
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=172.25.49.58
PREFIX=22
GATEWAY=172.25.48.129
DNS1=8.8.8.8
EOF
1
2 |
interface do dhcp
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.0.2
PREFIX=24
EOF
1
2 |
pacotes basicos e repositorios
|
yum install vim epel-release bash-completion centos-release-openstack-rocky -y
1
2 |
banco de dados para o ironic
|
yum install mariadb-server -y
1
2 |
|
systemctl enable mariadb.service
systemctl start mariadb.service
1 |
|
mysql -uroot -e "CREATE DATABASE ironicdb CHARACTER SET utf8"
mysql -uroot -e "GRANT ALL PRIVILEGES ON ironicdb.* TO 'ironicuser'@'localhost' IDENTIFIED BY 'ironicpass'"
mysql -uroot -e "GRANT ALL PRIVILEGES ON ironicdb.* TO 'ironicuser'@'%' IDENTIFIED BY'ironicpass'"
1
2 |
serviço de messageria
|
yum install rabbitmq-server.noarch -y
1
2
3 |
|
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
1
2 |
serviço de dhcp
|
yum install dhcp -y
cat << EOF > /etc/dhcp/dhcpd.conf
authoritative;
allow unknown-clients;
allow booting;
allow bootp;
option ip-forwarding false;
option mask-supplier false;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.254;
option routers 192.168.0.1;
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
next-server 192.168.0.2;
filename "pxelinux.0";
max-lease-time 86400;
default-lease-time 43200;
min-lease-time 43200;
}
EOF
1 |
|
systemctl enable dhcpd
systemctl start dhcpd
1
2 |
serviço de tftp
|
yum install tftp-server syslinux-tftpboot xinetd tftp -y
1 |
|
mv /var/lib/tftpboot /
1 |
|
ln -s /tftpboot /var/lib/
1 |
|
mkdir -p /tftpboot/master_images
mkdir -p /tftpboot/pxelinux.cfg
mkdir -p /tftpboot/ironic
1 |
|
echo 're ^(/tftpboot/) /tftpboot/\2' > /tftpboot/map-file
echo 're ^/tftpboot/ /tftpboot/' >> /tftpboot/map-file
echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file
echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file
1 |
|
systemctl enable xinetd.service tftp.service
systemctl start xinetd.service tftp.service
1
2 |
serivço de http
|
yum install httpd -y
mkdir /var/www/html/httpboot
systemctl enable httpd.service
systemctl start httpd.service
1
2
3
4
5
6
7
8 |
imagens...
# yum install diskimage-builder -y
# disk-image-create ironic-agent centos7 -o provide-img ## ainda testando
# disk-image-create ironic-agent fedora -o ironic-deploy
###disk-image-create --install-type source -o deploy ironic-agent ubuntu devuser
|
yum install qemu-img psmisc wget python-networkx squashfs-tools policycoreutils-python libguestfs-bash-completion libvirt diskimage-builder -y
1 |
|
systemctl enable libvirtd
systemctl start libvirtd
1 |
|
wget http://tarballs.openstack.org/ironic-python-agent/coreos/files/coreosproductionpxe.vmlinuz -O /tftpboot/ironic/coreosproductionpxe.vmlinuz
wget http://tarballs.openstack.org/ironic-python-agent/coreos/files/coreosproductionpxeimage-oem.cpio.gz -O /tftpboot/ironic/coreosproductionpxeimage-oem.cpio.gz
1 |
|
disk-image-create centos7 baremetal dhcp-all-interfaces grub2 -o centos7
1 |
|
export LIBGUESTFS_BACKEND=direct
virt-sysprep -a centos7.qcow2 --root-password password:12
1 |
|
mv centos7.initrd /var/www/html/httpboot
mv centos7.qcow2 /var/www/html/httpboot
mv centos7.vmlinuz /var/www/html/httpboot
1
2 |
pacotes do ironic e dos clientes
|
yum install openstack-ironic-conductor.noarch openstack-ironic-api.noarch python-ironicclient python-openstackclient -y
1 |
|
cat << EOF > /etc/ironic/ironic.conf
[DEFAULT]
auth_strategy = noauth
enabledhardwaretypes = ipmi
enabledbiosinterfaces = fake,ilo,irmc,no-bios
enabledconsoleinterfaces = ipmitool-socat,no-console
defaultconsoleinterface = no-console
enableddeployinterfaces = iscsi,direct
defaultdeployinterface = direct
enabledmanagementinterfaces = ipmitool,noop
enablednetworkinterfaces = flat,noop
defaultnetworkinterface = noop
enabledpowerinterfaces = ipmitool
enabledvendorinterfaces = ipmitool,no-vendor
my_ip = 172.25.49.58
debug = true
log_dir = /var/log/ironic
transport_url = rabbit://guest:guest@localhost:5672/
[agent]
[ansible]
[api]
host_ip = 172.25.49.58
port = 6385
[audit]
[cimc]
[cinder]
[cisco_ucs]
[conductor]
auth_type = none
api_url = http://172.25.49.58:6385
syncpowerstate_interval = 60
sendsensordata = true
sendsensordata_types = Temperature,Fan,Voltage
[console]
terminalcertdir = /tmp/ca
[cors]
[database]
connection=mysql+pymysql://ironicuser:ironicpass@localhost/ironicdb?charset=utf8
[deploy]
http_url = 172.25.49.58:80
http_root = /httpboot
[dhcp]
dhcp_provider = none
[disk_partitioner]
[disk_utils]
[drac]
[glance]
[healthcheck]
[ilo]
[inspector]
endpoint_override = http://172.25.49.58:6385
[ipmi]
[irmc]
[ironic_lib]
[iscsi]
[keystone_authtoken]
[matchmaker_redis]
[metrics]
[metrics_statsd]
[neutron]
[oneview]
[oslo_concurrency]
[oslomessagingamqp]
[oslomessagingkafka]
[oslomessagingnotifications]
driver = messaging
[oslomessagingrabbit]
[oslomessagingzmq]
[oslo_policy]
[profiler]
[pxe]
pxeappendparams=nofb nomodeset vga=normal console=tty0 console=ttyS0,115200n8
tftp_server = 172.25.49.58
tftp_root = /tftpboot
tftpmasterpath = /tftpboot/master_images
pxebootfilename = pxelinux.0
pxeconfigsubdir = pxelinux.cfg
[service_catalog]
[snmp]
[ssl]
[swift]
[xclarity]
EOF
1 |
|
chown -R ironic: /tftpboot
1 |
|
ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
1 |
|
systemctl enable openstack-ironic-api openstack-ironic-conductor
1 |
|
systemctl start openstack-ironic-api openstack-ironic-conductor
1 |
|
cat << EOF > ~/RC_IRONIC
export OSAUTHTOKEN=fake-token
export IRONIC_URL=http://172.25.49.58:6385/
export OS_TOKEN=fake-token
export OS_URL=http://172.25.49.58:6385/
EOF
1 |
|
source ~/RC_IRONIC
1 |
|
ironic node-list
1 |
|
openstack baremetal node list
1
2
3 |
|
nodename=compute-teste
nodeuuid="50624d2d-c4f4-4e37-a9b8-9d56ea585a77"
macaddr="52:54:00:aa:bb:cc"
portid="ad55e1da-65da-4119-851d-db53326d94d6"
ipmiaddr="172.25.48.129"
ipmiuser="root"
ipmipass="calvin"
ipmiport="7701"
imagemd5=$(md5sum /var/www/html/httpboot/centos7.qcow2 | awk '{print $1}')
1
2
3
4
5 |
no service-node
|
virt-install --hvm --connect qemu:///system --network network=ironic-pxe,model=virtio,mac=${macaddr} --pxe --graphics spice --name ${nodename} --ram=1024 --vcpus=4 --os-type=linux --disk path=/var/lib/libvirt/images/rhel6-machine.img,size=30 --noautoconsole
1
2 |
|
vbmc add ${nodename} --port ${ipmiport} --address ${ipmiaddr} --username ${ipmiuser} --password ${ipmipass}
vbmc start ${nodename}
1
2 |
|
openstack baremetal node create --driver ipmi --uuid ${nodeuuid} --name ${nodename} \
--driver-info ipmi_address=${ipmiaddr} \
--driver-info ipmi_username=${ipmiuser} \
--driver-info ipmi_password=${ipmipass} \
--driver-info ipmi_port=${ipmiport} \
--driver-info deploy_kernel=file:///tftpboot/ironic/coreos_production_pxe.vmlinuz \
--driver-info deploy_ramdisk=file:///tftpboot/ironic/coreos_production_pxe_image-oem.cpio.gz
1 |
|
openstack baremetal port create ${macaddr} --node ${nodeuuid}
1 |
|
openstack baremetal node set ${nodeuuid} \
--instance-info image_source=http://172.25.49.58:80/httpboot/centos7.qcow2 \
--instance-info image_checksum=${imagemd5} \
--instance-info capabilities='{"boot_option": "local"}' \
--instance-info kernel=http://172.25.49.58:80/httpboot/centos7.vmlinuz \
--instance-info ramdisk=http://172.25.49.58:80/httpboot/centos7.initrd \
--instance-info root_gb=10 \
--management-interface noop \
--bios-interface no-bios \
--console-interface no-console \
--inspect-interface no-inspect \
--raid-interface no-raid \
--rescue-interface no-rescue
1 |
|
openstack baremetal node validate ${nodeuuid}
1 |
|
openstack baremetal node manage ${nodeuuid}
1 |
|
openstack baremetal node provide ${nodeuuid}
1 |
|
openstack baremetal node deploy ${nodeuuid}
1
2
3 |
|
ipmitool -I lanplus -H 172.25.48.129 -L ADMINISTRATOR -p 7701 -U root -P calvin power on