Después de darle muchas vueltas al asunto, el comodín que se utilizaba en Mysql 5.1 (versión usada Diablo and Essex) el conocido “%” ha comenzado a fallar. Nos encontramos con errores de acceso a las Bases de Datos que eran nuevos para mi hasta el momento. Revisando las bitácoras de instalaciones previas hemos visto que los permisos de acceso a las diferentes DataBases de Mysql han cambiado y se utiliza como única línea de permisos la siguiente:
mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'onetimepassword']
Pero solamente con esta sentencia constatamos que el acceso desde otros nodos (multihost) nos daba error. Para solucionar estos problemas se ha probado a añadir sentencias extras de “GRANT” hasta que permitió dichas conexiones. Haciendo un resumen de todas ellas se ha modificado el cookbook de osops-utils para que añada una nueva sentencia de GRANT contra la dirección en la que se bindea el servicio de Mysql. De esta manera se podrá configurar el servicio de Base de Datos en HA y tener los accesos contra la “bind_address”.
Archivo "osops-utils/libraries/database.rb" mysql_database_user username do connection connection_info password pw database_name db_name host "#{mysql_info["bind_address"]}" privileges [:all] action :grant end
Se ha hecho un Pull Request a la gente de Rcbops con esta modificación.Enlace.
Ahora mismo lo estoy usando en nuestro Chef Server en el despligue de Folsom y funciona “like a charm”. Nos genera dos sentencias de permisos para cada servicio (keystone/glance/nova/horizon).
INFO: Processing mysql_database_user[keystone] action grant (keystone::server line 24) INFO: mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'onetimepassword'] INFO: Processing mysql_database_user[keystone] action grant (keystone::server line 32) INFO: mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'172.16.172.4' IDENTIFIED BY 'onetimepassword']