Install Docker Netscaler CPX
Hoy os queremos enseñar a instalar Netscaler CPX sobre una máquina virtual VMware Centos 7 mediante un sistema de Dockers. Para enseñaros como hacerlo utilizaré VMware Workstation y una máquina virtual linux Centos 7 con red en modo Bridge. Así que nos ponemos manos a la obra, y lanzamos el comando para instalar Docker:
1 |
yum –y install docker |
Ahora habilitamos el servicio:
1 |
systemctl enable docker.service |
Ahora podemos reiniciar el sistema. Al arrancar veremos que se ha generado un nuevo interface:
Podemos gestionar los servicios lanzando los siguientes comandos:
1 2 3 4 |
systemctl start docker.service ## Arranca docker ## systemctl stop docker.service ## Para docker ## systemctl restart docker.service ## Reinicia docker ## systemctl status docker.service ## Ver estado docker ## |
Descargamos la imagen de Netscaler CPX. Se pueden ver las instrucciones en la web de Docker Store:
El comando sería en este momento:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@localhost ~]# docker pull store/citrix/netscalercpx:12.0-56.20 Trying to pull repository docker.io/store/citrix/netscalercpx ... 12.0-56.20: Pulling from docker.io/store/citrix/netscalercpx 6ce531b1ca45: Pull complete 38e4a6bc2d04: Pull complete 7cbb621499da: Pull complete a2921fd6218f: Pull complete 2b4e7c8adb0a: Pull complete 980882099ccc: Pull complete 81e3dc3dd27c: Pull complete 17dabbe4b8a9: Pull complete 0e3da0d4fd64: Pull complete f2e7b4c3e799: Pull complete c3469b674821: Pull complete 9af9916546cf: Pull complete 1aeb683ace83: Pull complete 4e3ae7b95fc5: Pull complete Digest: sha256:d88b72e227efdccdf2e7a553a4207038f34825ce08ce7c9cbf5664ad5c1cf23a Status: Downloaded newer image for docker.io/store/citrix/netscalercpx:12.0-56.20 |
1 2 3 4 5 |
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/store/citrix/netscalercpx 12.0-56.20 8528cafdfa33 6 months ago 375 MB |
1 |
docker run -dt -P --privileged=true –net=host –e NS_NETMODE=”HOST” -e CPX_CORES= --name --ulimit core=-1 -e CPX_NW_DEV='' -e CPX_CONFIG=’{“YIELD”:”NO”}’ -e LS_IP= -e LS_PORT= e PLATFORM=CP1000 -v :/cpx : |
1 2 3 |
[root@localhost ~]# docker run -e EULA=yes -dt -P --ulimit core=-1 --cap-add=NET_ADMIN store/citrix/netscalercpx:12.0-56.20 9fafe15a2025db7a75e2e2efe6d5da32152736e3bfa52a372bc18e148763e555 |
- dt: Ejecutar el docker en background
- P: Abre los puertos por defecto para Netscaler CPX
- 80 se utiliza para HTTP
- 443 se usa para HTTPS
- 22 utilizado para SSH
- 161 / UDP se usa para SNMP
- p: Para cada puerto individual (Ejemplo: -p 22 -p 443 -p 161/udp)
- ulimit: No limitamos las opciones
- cap-add: Añadimos capacidades linux
MAS INFORMACION: https://docs.citrix.com/en-us/netscaler-cpx/12/deploy-using-docker-image-file.html
Comprobamos que se ha generado. Fijaros en los puertos que asigna a los puertos por defecto en el docker que son los que utilizaréis para conectaros. Ejemplo, 32770 para el 80:
1 2 3 |
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fafe15a2025 store/citrix/netscalercpx:12.0-56.20 "/var/netscaler/bi..." About a minute ago Up About a minute 443/tcp, 0.0.0.0:32771->22/tcp, 0.0.0.0:32770->80/tcp, 0.0.0.0:32769->161/udp ecstatic_swirles |
Una vez que lo tenemos generado, ahora tenemos que averiguar la IP. Para ello utilizaremos el IP del CONTAINER o DOCKER:
1 |
[root@localhost ~]# docker inspect 9fafe15a2025 |
Deberéis aseguraros que existe regla de firewall:
1 2 3 4 5 6 7 |
iptables -L Chain DOCKER (1 references) target prot opt source destination ACCEPT udp -- anywhere 172.17.0.2 udp dpt:snmp ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:http ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:ssh |
Si no queréis problemas sería mejor habilitar las iptables (y deshabilitar Selinux, salvo que os manejéis) ya que sino los dockers os darán errores aunque os dejo como hacer un disabled:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p udp -d 172.17.0.2 --dport...at chain?). ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p udp -s 172.17.0.2 -d 172.17.0.2 --dport 161 -j ... that name. ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 32774 -j DNAT --to-destination 17... that name. ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport...at chain?). ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.2 -d 172.17.0.2 --dport 80 -j M... that name. ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 32775 -j DNAT --to-destination 17... that name. ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport...at chain?). ago 01 23:12:43 localhost.localdomain firewalld[723]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.2 -d 172.17.0.2 --dport 22 -j M... that name. ago 01 23:16:17 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon... ago 01 23:16:17 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon. Hint: Some lines were ellipsized, use -l to show in full. |
Con todo esto abrimos un navegador y vamos a la url:
1 |
https://IP_DOCKER:PORT_ASIGNADO |
La imagen es sobre la propia máquina virtual, por eso voy al puerto 80. Si lo hacemos sobre el host que lanza la máquina virtual iríamos a http://IP_MAQUINA_VIRTUAL:32770 en mi caso es el puerto que me ha asignado al generar el docker para el puerto 80:
La contraseña para SSH es root / linux
Podéis comprobar que se basa en debian fácilmente:
1 2 |
root@8d694a324986:~# cat /etc/debian_version stretch/sid |
Existe un script en la instalación que se llama cli_script.sh para usar con todos los comandos de netscaler:
1 2 3 |
root@8d694a324986:~# cli_script.sh "add server test1 192.1.1.1" exec: add server test1 192.1.1.1 Done |
Otro ejemplo:
1 2 3 4 5 6 7 8 9 10 |
root@8d694a324986:~# cli_script.sh "show ns config" exec: show ns config NetScaler IP: 172.17.0.2 (mask: 255.255.0.0) Number of MappedIP(s): 0 Node: Standalone NetScaler IP Vlan: 1 Tagged: NO Bound Ports: System Time: Thu Aug 2 00:52:08 2018 Last Config Changed Time: Thu Aug 2 00:47:12 2018 Config Changed since Last Saved Config: TRUE Done |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?