Выполнение mariadb-tzinfo-to-sql с Ansible
Для получения документации по утилите mariadb-tzinfo-to-sql, обратитесь к странице mysql_tzinfo_to_sql. Эта страница посвящена её запуску с помощью Ansible.
Установка или обновление пакета
Сначала необходимо установить mariadb-tzinfo-to-sql, если он доступен в нашей системе. Например, для установки на Ubuntu можно использовать эту задачу. Для других систем используйте соответствующее имя модуля и пакета.
- name: Update timezone info
tags: [ timezone-update ]
apt:
name: tzdata
state: latest
install_recommends: no
register: timezone_info
Эта задача устанавливает последнюю версию tzdata, если она ещё не установлена или не обновлена. Мы регистрируем переменные timezone_info, чтобы выполнить следующую задачу только в случае установки или обновления пакета.
Мы также указываем метку timezone-update, чтобы применить роль только для обновления таблиц часовых поясов.
Запуск скрипта
Следующая задача выполняет mariadb-tzinfo-to-sql.
- name: Move system timezone info into MariaDB
tags: [ timezone-update ]
shell: >
mysql_tzinfo_to_sql /usr/share/zoneinfo \
| grep -v "^Warning" \
| mysql --database=mysql
when: timezone_info.changed
Мы используем модуль shell для запуска команды. Запуск команды таким способом не является идемпотентным, поэтому мы задаём when: timezone_info.changed, чтобы запустить её только при необходимости. Могут быть сгенерированы некоторые предупреждения, поэтому мы направляем вывод mysql_tzinfo_to_sql в grep для фильтрации предупреждений.
Использование Galera
Если мы используем Кластер MariaDB Galera, нам нужно обновить таблицы часовых поясов только на одном узле, так как другие узлы будут реплицировать изменения. Для удобства мы можем выполнить эту операцию на первом узле. Если имена хостов узлов определены в списке, называемом cluster_hosts, мы можем проверить, является ли текущий узел первым следующим образом:
when: timezone_info.changed and inventory_hostname == cluster_hosts[0].hostname
Контент первоначально предоставлен Vettabase Ltd.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/running-mariadb-tzinfo-to-sql-with-ansible/