使用 Ansible 创建 MySQL 个表
Create MySQL Tables with 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 中实现上述目标的方向。
我们将不胜感激任何帮助!
使用 mysql_db
module 您可以导入 MySQL 文件。所以你可以简单地将所有 3 个创建语句复制到一个单独的文本文件中,然后像这样导入它:
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
该示例取自上面链接的文档页面,还有更多任务,包括之前向您展示如何将文件复制到主机的任务。
- 主持人:mysql
任务:
- 名称:在mysql_databases中创建一个table
命令:mysql -u root -p[root1234] testdb --skip-column-names --execute "create table test_table (Name varchar(255), EmpID INT NOT NULL) “
我正在使用 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 中实现上述目标的方向。
我们将不胜感激任何帮助!
使用 mysql_db
module 您可以导入 MySQL 文件。所以你可以简单地将所有 3 个创建语句复制到一个单独的文本文件中,然后像这样导入它:
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
该示例取自上面链接的文档页面,还有更多任务,包括之前向您展示如何将文件复制到主机的任务。
- 主持人:mysql
任务:
- 名称:在mysql_databases中创建一个table 命令:mysql -u root -p[root1234] testdb --skip-column-names --execute "create table test_table (Name varchar(255), EmpID INT NOT NULL) “