Welcome About

BareMetal as a Service (Ironic) - StandAlone

code#

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