Yii2 Inquid Deployer:
We need a deployer that saves a register of the attached database
We recommend to use:
https://github.com/mootensai/yii2-enhanced-gii:
After ask all this information to the user and save it to a MySQL database, it needs to create a Google Cloud Instance and then run the script, if the user choose client Virtual server it must create a subdomain using Godaddy API and also execute the script in the virtual host server.
Google Cloud Account will be provided also Godaddy API.
This project needs to be a Yii2 Module and will be distributed as an Yii2 Extension with composer.
Design:
https://www.figma.com/file/KGBOWOojwtjnz29tIoLdToqQ/Inquid-Deployer
We want to use this widget:
https://github.com/drsdre/yii2-wizardwidget
Godaddy domain integration could be optional as a plus, the important part is save the info in the tables as it is in the description, and also include to all tables created time, update time fields and created by and updated by using the id of the user creating the register
and of course use google api to create the instance and execute a script in the server
This Script shows how to create an instance using PHP
https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/compute/helloworld/app.php
Database attached
create schema if not exists `inquid deployer` default character set utf8 ;
use `inquid deployer` ;
create table if not exists `inquid deployer`.`Project` (
`id` int not null auto_increment,
`name` varchar(45) null,
primary key (`id`))
engine = innodb;
create table if not exists `inquid deployer`.`Domain` (
`id` int not null auto_increment,
`domain` varchar(100) not null,
`subdomain` tinyint(1) not null default 0,
`type` varchar(45) null comment 'a aaa cname etc\n',
`domainscol` varchar(45) null,
`bought` tinyint(1) null,
`created_at` date null,
`updated_at` date null,
`created_by` int null,
`updated_by` int null,
primary key (`id`))
engine = innodb;
create table if not exists `inquid deployer`.`Ip` (
`id` int not null auto_increment,
`ip` varchar(45) null,
`ephemeral` tinyint(1) null,
primary key (`id`))
engine = innodb;
create table if not exists `inquid deployer`.`Zone` (
`id` int not null auto_increment,
`zone_name` varchar(45) null,
primary key (`id`))
engine = innodb;
create table if not exists `inquid deployer`.`Server` (
`id` int not null auto_increment,
`name` varchar(45) null,
`type` varchar(45) null comment 'apache / nginx',
`os` varchar(45) null,
`cpu` varchar(45) null,
`ram` varchar(45) null,
`disk` varchar(45) null,
`description` text null,
`created_at` date null,
`updated_at` date null,
`created_by` int null,
`updated_by` int null,
`project_id` int not null,
`domain_id` int not null,
`ip_id` int not null,
`zone_idzones` int not null,
primary key (`id`),
index `fk_server_project_idx` (`project_id` asc),
index `fk_server_domain1_idx` (`domain_id` asc),
index `fk_server_ip1_idx` (`ip_id` asc),
index `fk_server_zone1_idx` (`zone_idzones` asc),
constraint `fk_server_project`
foreign key (`project_id`)
references `inquid deployer`.`Project` (`id`)
on delete no action
on update no action,
constraint `fk_server_domain1`
foreign key (`domain_id`)
references `inquid deployer`.`Domain` (`id`)
on delete no action
on update no action,
constraint `fk_server_ip1`
foreign key (`ip_id`)
references `inquid deployer`.`Ip` (`id`)
on delete no action
on update no action,
constraint `fk_server_zone1`
foreign key (`zone_idzones`)
references `inquid deployer`.`Zone` (`id`)
on delete no action
on update no action)
engine = innodb;
create table if not exists `inquid deployer`.`Script` (
`id` int not null auto_increment,
`name` varchar(45) null,
`description` text null,
`filepath` varchar(45) null,
`created_at` date null,
`updated_at` date null,
`created_by` int null,
`updated_by` int null,
`server_id` int not null,
primary key (`id`),
index `fk_script_server1_idx` (`server_id` asc),
constraint `fk_script_server1`
foreign key (`server_id`)
references `inquid deployer`.`server` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Delivery term: Not specified