使用Ansible创建MySQL表

mve*_*z83 10 mysql sql database ansible

我正在使用ansible来管理使用ubuntu的小型邮件服务器.我想使用ansible创建一个我可以做的数据库,并为数据库创建用户,我也可以这样做.但我不确定如何使用ansible创建表.我正在尝试使用ansible创建以下三个MySQL表:

1)

CREATE TABLE `virtual_domains` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

2)

CREATE TABLE `virtual_users` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `password` varchar(106) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

3)

CREATE TABLE `virtual_aliases` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `source` varchar(100) NOT NULL,
  `destination` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我已搜索并搜索,甚至在#ansible中询问并声明我可以使用mysql_db模块来完成上述任务但我找不到任何可以给我一些关于如何在ansible中实现上述方向的示例.

任何和所有的帮助将非常感谢!

udo*_*dan 10

使用该mysql_db模块,您可以导入MySQL文件.因此,您只需将所有3个create语句复制到一个单独的文本文件中,然后将其导入:

- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
Run Code Online (Sandbox Code Playgroud)

该示例取自上面链接的文档页面,还有更多任务,包括一个向您展示如何将文件复制到主机之前的任务.