使用Ansible创建MySQL表

时间:2015-03-21 06:18:07

标签: 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;

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;

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;

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

任何和所有帮助都将非常感激!

2 个答案:

答案 0 :(得分:10)

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

- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2

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

答案 1 :(得分:0)


  • 主机:mysql 任务:
    • name:在mysql_databases中创建一个表 命令:mysql -u root -p[root1234] testdb --skip-column-names --execute "create table test_table (Name varchar(255), EmpID INT NOT NULL)"

enter image description here