Ansible — установка MySQL 5.5 на CentOS 7

В CentOS 7 по умолчанию доступен для установки только форк MariaDB. Что лучше — Мария или оригинальный мускул в комьюнити редакции — мне в данной задаче не важно. Мне нужно собрать дев среду максимально близкую к продакшену. Для скачивания и установки MySQL Оракл предоставляет rpm мета-пакет, который можно найти тут.

Установить этот пакет в Ansible можно примерно так

- name: Add MySQL repo
yum: name=http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm state=present

Проблема в том, что в этом пакете прописаны субрепозитории для версий 5.7, 5.6, 5.5 и по-умолчанию активирована 5.7, а мне нужна 5.5. Конфиг лежит в файле /etc/yum.repos.d/mysql-community.repo. Проверить какой именно репозиторий активирован можно так.

$ yum repolist enabled | grep mysql

Yum модуль в Ansible не предоставляет возможности управления субрепозиториями. Но конфиг репозитория — это ini файл. А для работы ini файлами в Ansible модуль есть. Делаем так

- name: Disable default/latest MySQL repository
ini_file:
  dest: /etc/yum.repos.d/mysql-community.repo
  section: "mysql57-community"
  option: enabled
  value: "0"

- name: Enable target MySQL repository
ini_file:
  dest: /etc/yum.repos.d/mysql-community.repo
  section: "mysql55-community"
  option: enabled
  value: "1"

После этого уже можно установить MySQL

- name: Install MySQL
yum: name={{ item }} update_cache={{ update_yum_cache }} state=installed
with_items:
  - mysql
  - mysql-server