|
@@ -77,7 +77,7 @@ class Release extends Command
|
|
|
private $_user_system;
|
|
|
|
|
|
/**
|
|
|
- * @var string $directory Directorio de instalación
|
|
|
+ * @var string $directory Directorio de instalaci�n
|
|
|
*/
|
|
|
private $directory;
|
|
|
|
|
@@ -195,6 +195,11 @@ class Release extends Command
|
|
|
'OAUTH' => false,
|
|
|
'MODULE_INSTALL' => true
|
|
|
),
|
|
|
+ "kea" => array(
|
|
|
+ 'HOST_ENV' => false,
|
|
|
+ 'OAUTH' => false,
|
|
|
+ 'MODULE_INSTALL' => true
|
|
|
+ ),
|
|
|
"geoserver" => array(
|
|
|
'HOST_ENV' => true,
|
|
|
"VAR_ENV" => array(
|
|
@@ -238,6 +243,9 @@ class Release extends Command
|
|
|
->addOption('extra-repo', null, InputOption::VALUE_REQUIRED, 'Git clone Url fot the app Base', "git@bitbucket.org:ikflowdat/extra.git")
|
|
|
->addOption('extra-ref', null, InputOption::VALUE_REQUIRED, 'Git reference (branch or tag) to clone the Extra files and apps', "master")
|
|
|
->addOption('extra-build', null, InputOption::VALUE_REQUIRED, 'Generate image build', "false")
|
|
|
+ ->addOption('kea-repo', null, InputOption::VALUE_REQUIRED, 'Git clone Url for KEA', "git@bitbucket.org:ikflowdat/kea.git")
|
|
|
+ ->addOption('kea-ref', null, InputOption::VALUE_REQUIRED, 'Git reference (branch or tag) to clone KEA files and apps', "master")
|
|
|
+ ->addOption('kea-build', null, InputOption::VALUE_REQUIRED, 'Generate image build', "false")
|
|
|
->addOption('host-ip', null, InputOption::VALUE_REQUIRED, 'Ip of the runnning host to be added to the /etc/hosts file, eventually', "127.0.1.1")
|
|
|
->addOption('domain', null, InputOption::VALUE_REQUIRED, 'Domain where the flowdat will be installed', "flowdat.com")
|
|
|
->addOption('client', null, InputOption::VALUE_REQUIRED, 'Client name, if is not provided uses, the dirname of the installation', false)
|
|
@@ -264,6 +272,7 @@ class Release extends Command
|
|
|
$input->setOption('cablemodem-ref', $input->getOption('all-ref'));
|
|
|
$input->setOption('dhcp-ref', $input->getOption('all-ref'));
|
|
|
$input->setOption('extra-ref', $input->getOption('all-ref'));
|
|
|
+ $input->setOption('kea-ref', $input->getOption('all-ref'));
|
|
|
}
|
|
|
if (strtolower($input->getOption("modules")) == "all") {
|
|
|
// seteo todos los modulos a instalar por defecto
|
|
@@ -303,6 +312,9 @@ class Release extends Command
|
|
|
$this->_ansible_vars["CLIENT"] = $this->_client;
|
|
|
$this->_ansible_vars["CMD_USERNAME"] = $this->_user_system['users'][$this->internal_user_id]['user'];
|
|
|
$this->_ansible_vars["CMD_PASSWORD"] = $this->_user_system['users'][$this->internal_user_id]['password'];
|
|
|
+ $this->_ansible_vars["ENV_LIST"] = "prod,dev,test";
|
|
|
+ $this->_ansible_vars["API_CIDR"] = "172.20.0.0/24";
|
|
|
+ $this->_ansible_vars["MYSQL_ROOT_PASSWORD"] = $this->_mysql_root_pass;
|
|
|
|
|
|
$dObj = new DevOps\FileSystem(realpath($this->directory));
|
|
|
$dObj->dirExists()->realpath();
|
|
@@ -398,6 +410,7 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("base/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
@@ -421,14 +434,17 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("ftth/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
|
->addEnv_file($module . "." . $host_env_file)
|
|
|
->addEnv_file($module . ".oauth.env")
|
|
|
- ->addVolumes("./$module/", "/opt/" . $module);
|
|
|
+ ->addVolumes("./$module/", "/opt/" . $module)
|
|
|
+ ->addVolumes("./extra/netmiko", "/opt/netmiko")
|
|
|
+ ->addVolumes("./extra/backups-config", "/opt/ftth/web/backups-config");
|
|
|
|
|
|
$this->addBuild($module, $composer);
|
|
|
|
|
@@ -447,10 +463,11 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("stats/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("jsonep_mysql:jsonep_mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addVolumes("./$module/", "/opt/$module")
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
@@ -474,9 +491,10 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("mapas/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
|
->addEnv_file($module . "." . $host_env_file)
|
|
@@ -500,9 +518,10 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("cablemodem/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
|
->addEnv_file($module . "." . $host_env_file)
|
|
@@ -534,7 +553,7 @@ class Release extends Command
|
|
|
->image($registry . "fd3/tftp:" . $version)
|
|
|
->addEnv_file($host_env_file)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
- ->addPorts(69, 69);
|
|
|
+ ->addPorts(69, '69/udp');
|
|
|
}
|
|
|
|
|
|
function addRadius(FileFormat2 $composer, $config = array())
|
|
@@ -549,9 +568,10 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("radius/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
|
->addEnv_file($module . "." . $host_env_file)
|
|
@@ -574,14 +594,17 @@ class Release extends Command
|
|
|
->addService($module)
|
|
|
->image($registry . "fd3/$module:" . $version)
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->build("dhcp/")
|
|
|
->addLinks("mysql:mysql")
|
|
|
->addLinks("base")
|
|
|
- ->addLinks("base", $this->getDomain("base"))
|
|
|
+ //->addLinks("base", $this->getDomain("base"))
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
|
->addEnv_file($module . "." . $host_env_file)
|
|
|
->addEnv_file("$module.oauth.env")
|
|
|
- ->addVolumes("./$module/", "/opt/$module");
|
|
|
+ ->addVolumes("./$module/", "/opt/$module")
|
|
|
+ ->addVolumes("./kea/conf", "/opt/dhcp/web/kea")
|
|
|
+ ;
|
|
|
|
|
|
$this->addBuild($module, $composer);
|
|
|
|
|
@@ -603,6 +626,14 @@ class Release extends Command
|
|
|
->restart($this->_docker_restart_default)
|
|
|
->addPorts(80, 80)
|
|
|
->addPorts(443, 443)
|
|
|
+ ->addVolumes("./base/", "/opt/base")
|
|
|
+ ->addVolumes("./ftth/", "/opt/ftth")
|
|
|
+ ->addVolumes("./mapas/", "/opt/mapas")
|
|
|
+ ->addVolumes("./radius/", "/opt/radius")
|
|
|
+ ->addVolumes("./stats/", "/opt/stats")
|
|
|
+ ->addVolumes("./cablemodem/", "/opt/cablemodem")
|
|
|
+ ->addVolumes("./dhcp/", "/opt/dhcp")
|
|
|
+ ->addVolumes("./grafana/", "/opt/grafana")
|
|
|
->addVolumes("/var/run/docker.sock", "/tmp/docker.sock:ro")
|
|
|
->addVolumes("./extra/nginx/certs", "/etc/nginx/certs:ro")
|
|
|
->addVolumes("./extra/nginx/conf.d", "/etc/nginx/conf.d")
|
|
@@ -645,6 +676,7 @@ class Release extends Command
|
|
|
->addVolumes("./extra/supervisord/bin/fiberhome", "/usr/bin/fiberhome")
|
|
|
->addVolumes("./extra/supervisord/bin/fiberlink", "/usr/bin/fiberlink")
|
|
|
->addVolumes("./extra/supervisord/bin/huawei", "/usr/bin/huawei")
|
|
|
+ ->addVolumes("./extra/supervisord/bin/zte", "/usr/bin/zte")
|
|
|
->addVolumes("./stats", "/opt/stats")
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file($host_env_file)
|
|
@@ -861,7 +893,9 @@ class Release extends Command
|
|
|
->addEnv_file("host.env")
|
|
|
->addEnv_file("ftth.host.env")
|
|
|
->addEnviroment("AMQP_KEY", "ftth")
|
|
|
- ->addVolumes("./ftth/", "/opt/ftth");
|
|
|
+ ->addVolumes("./ftth/", "/opt/ftth")
|
|
|
+ ->addVolumes("./extra/netmiko", "/opt/netmiko")
|
|
|
+ ->addVolumes("./extra/backups-config", "/opt/ftth/web/backups-config");
|
|
|
|
|
|
$composer
|
|
|
->addService("cablemodem_tasklogger_worker")
|
|
@@ -878,6 +912,21 @@ class Release extends Command
|
|
|
->addEnviroment("AMQP_KEY", "cablemodem")
|
|
|
->addVolumes("./cablemodem/", "/opt/cablemodem");
|
|
|
|
|
|
+ $composer
|
|
|
+ ->addService("dhcp_tasklogger_worker")
|
|
|
+ ->image($registry . "fd3/dhcp:" . $version)
|
|
|
+ ->build("./dhcp/")
|
|
|
+ ->command("bin/console rabbitmq:consumer flowdat_tasklogger")
|
|
|
+ ->restart($this->_docker_restart_default)
|
|
|
+ ->addLinks("mysql")
|
|
|
+ ->addLinks("base")
|
|
|
+ ->addLinks("nginx", $this->getDomain("base"))
|
|
|
+ ->addEnv_file("running.env")
|
|
|
+ ->addEnv_file("host.env")
|
|
|
+ ->addEnv_file("dhcp.host.env")
|
|
|
+ ->addEnviroment("AMQP_KEY", "dhcp")
|
|
|
+ ->addVolumes("./dhcp/", "/opt/dhcp");
|
|
|
+
|
|
|
$composer
|
|
|
->addService("ftth_command_worker")
|
|
|
->image($registry . "fd3/ftth:" . $version)
|
|
@@ -960,14 +1009,49 @@ class Release extends Command
|
|
|
$registry = "";
|
|
|
extract($config);
|
|
|
|
|
|
+ $module = 'kea';
|
|
|
$composer
|
|
|
->addService("kea")
|
|
|
- ->image($registry . "fd3/kea:" . $version)
|
|
|
- ->build("./extra/kea/")
|
|
|
+ ->image($registry . "fd3/kea-1.4.0:" . $version)
|
|
|
+ // ->build("./extra/kea/")
|
|
|
->restart($this->_docker_restart_default)
|
|
|
+ ->addPorts(8086, 8080)
|
|
|
+ ->addPorts(67, '67/udp')
|
|
|
+ ->addPorts(68, '68/udp')
|
|
|
->addEnv_file("running.env")
|
|
|
->addEnv_file("host.env")
|
|
|
+ ->addEnv_file($module . "." . $host_env_file)
|
|
|
+ ->addVolumes("./kea/conf/kea-ctrl-agent.conf", "/usr/local/etc/kea/kea-ctrl-agent.conf")
|
|
|
+ ->addVolumes("./kea/conf/kea-dhcp4.conf", "/usr/local/etc/kea/kea-dhcp4.conf")
|
|
|
+ ->addVolumes("/kea/supervisord", "/etc/supervisord")
|
|
|
+ ->addVolumes("./kea/hooks", "/opt/hooks")
|
|
|
;
|
|
|
+ $this->writeVariablesEnviroment($module . "." . $host_env_file, $module,
|
|
|
+ array(
|
|
|
+ "MYSQL_ROOT_PASSWORD" => $this->_mysql_root_pass,
|
|
|
+ "MYSQL_USER" => $this->_mysql_user,
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param FileFormat2 $composer
|
|
|
+ * @param array $config
|
|
|
+ */
|
|
|
+ public function addSwagger(FileFormat2 $composer, $config = array())
|
|
|
+ {
|
|
|
+ $version = "latest";
|
|
|
+ $registry = "";
|
|
|
+ extract($config);
|
|
|
+
|
|
|
+ $composer
|
|
|
+ ->addService("swagger-ui")
|
|
|
+ ->image($registry . "fd3/swagger-ui:" . $version)
|
|
|
+ ->build("./extra/swagger/")
|
|
|
+ ->restart($this->_docker_restart_default)
|
|
|
+ ->addEnviroment("SWAGGER_JSON", "/foo/ftth.json")
|
|
|
+ ->addEnv_file("running.env")
|
|
|
+ ->addEnv_file("host.env")
|
|
|
+ ->addPorts(8085, 8080);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -998,7 +1082,9 @@ class Release extends Command
|
|
|
$this->addMySql($composer, $base_vars);
|
|
|
$composer
|
|
|
->addService("amqp")
|
|
|
+ ->build("./extra/amqp/")
|
|
|
->image("rabbitmq:3-management")
|
|
|
+ ->addPorts(15674, 15674)
|
|
|
->restart($this->_docker_restart_default);
|
|
|
$this->addMongDb($composer, $base_vars);
|
|
|
$this->addRedis($composer, $base_vars);
|
|
@@ -1019,6 +1105,9 @@ class Release extends Command
|
|
|
// Kea
|
|
|
$this->addKea($composer, $base_vars);
|
|
|
|
|
|
+ // Swagger
|
|
|
+ $this->addSwagger($composer, $base_vars);
|
|
|
+
|
|
|
$this->_dObj->file("docker-compose.yml")->content($composer->render());
|
|
|
|
|
|
// escribo un archivo inventory.ini por defecto para no tener que lanzar los docker
|