1435a15ce3
In trying to figure out why I was unable to run all of the test_migrations tests, I realized we need to fix and clean up our unicode declarations. Specifically, the way I found this was my local mysql install was defaulted to using 4 Byte Unicode characters, however some of our fields are 255 characters, which do not fit inside of InnoDB tables. They do, however fit with the "utf8" storage alias, which is presently short for UTF8MB3, as opposed to UTF8MB4 which is what my local database server was configured for. Because this was in opportunistic tests, I wasn't able to really sort out what was going on and thought we needed to shorten the fields. In reality, it turns out we never defined the allocations table to use UTF8 and Innodb for storage. Storage engine wise, this is not a big deal, but may mean a DBA will one day need to dump and reload the allocation table of a deployment. Character set wise... It is not great, but there is not a good way for us to do this programatically. In my opinion, the chance of an issue being encountered by an operator is unlikely, which out weighs the risk and impact of dumping the entire table, deleting the table, recreating the table with the updated schema and then repopulating the entries. Of course, if operators are not using allocations, then it really doesn't matter for them. Along the way, I discovered we had used the "UTF8" type alias, which may change one day, which would break Ironic. As such, I've also updated the definitions used to create databases and updated our documentation. Recommended reading: https://docs.sqlalchemy.org/en/14/dialects/mysql.html#unicode https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb4.html Story: 2010348 Task: 46492 Change-Id: I4103152489bf61e2d614eaa297da858f7b2112a3
38 lines
1.5 KiB
HTML
38 lines
1.5 KiB
HTML
Install and configure prerequisites
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The Bare Metal service is a collection of components that provides support to
|
|
manage and provision physical machines. You can configure these components to
|
|
run on separate nodes or the same node. In this guide, the components run on
|
|
one node, typically the Compute Service's compute node.
|
|
|
|
It assumes that the Identity, Image, Compute, and Networking services
|
|
have already been set up.
|
|
|
|
|
|
Set up the database for Bare Metal
|
|
----------------------------------
|
|
|
|
The Bare Metal service stores information in a database. This guide uses the
|
|
MySQL database that is used by other OpenStack services.
|
|
|
|
#. In MySQL, create an ``ironic`` database that is accessible by the
|
|
``ironic`` user. Replace ``IRONIC_DBPASSWORD`` with a suitable password:
|
|
|
|
.. code-block:: console
|
|
|
|
# mysql -u root -p
|
|
mysql> CREATE DATABASE ironic CHARACTER SET utf8mb3;
|
|
mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' \
|
|
IDENTIFIED BY 'IRONIC_DBPASSWORD';
|
|
mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' \
|
|
IDENTIFIED BY 'IRONIC_DBPASSWORD';
|
|
|
|
.. note::
|
|
When creating the database to house Ironic, specifically on MySQL/MariaDB,
|
|
the character set *cannot* be 4 byte Unicode characters. This is due to
|
|
an internal structural constraint. UTF8, in these database platforms,
|
|
has traditionally meant ``utf8mb3``, short for "UTF-8, 3 byte encoding",
|
|
however the platforms are expected to move to ``utf8mb4`` which is
|
|
incompatible with Ironic.
|