-
Notifications
You must be signed in to change notification settings - Fork 2
/
INSTALL.me
242 lines (177 loc) · 13.4 KB
/
INSTALL.me
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
8 888888888o. 8 888888888o. 8 8888888888 8 888888888o 8 8888 ,o888888o. `8.`8888. ,8' 8 8888888888 8 888888888o.
8 8888 `88. 8 8888 `^888. 8 8888 8 8888 `88. 8 8888 . 8888 `88. `8.`8888. ,8' 8 8888 8 8888 `88.
8 8888 `88 8 8888 `88. 8 8888 8 8888 `88 8 8888 ,8 8888 `8b `8.`8888. ,8' 8 8888 8 8888 `88
8 8888 ,88 8 8888 `88 8 8888 8 8888 ,88 8 8888 88 8888 `8b `8.`8888.,8' 8 8888 8 8888 ,88
8 8888. ,88' 8 8888 88 8 888888888888 8 8888. ,88' 8 8888 88 8888 88 `8.`88888' 8 888888888888 8 8888. ,88'
8 888888888P' 8 8888 88 8 8888 8 888888888P' 8 8888 88 8888 88 `8. 8888 8 8888 8 888888888P'
8 8888`8b 8 8888 ,88 8 8888 8 8888 8 8888 88 8888 ,8P `8 8888 8 8888 8 8888`8b
8 8888 `8b. 8 8888 ,88' 8 8888 8 8888 8 8888 `8 8888 ,8P 8 8888 8 8888 8 8888 `8b.
8 8888 `8b. 8 8888 ,o88P' 8 8888 8 8888 8 8888 ` 8888 ,88' 8 8888 8 8888 8 8888 `8b.
8 8888 `88. 8 888888888P' 8 888888888888 8 8888 8 888888888888 `8888888P' 8 8888 8 888888888888 8 8888 `88.
SINOPSIS.
El rdeployer es un shell adaptado para usar con Jenkins, el cual funciona como un plugin para realizar deploy de aplicaciones (WAR,EAR, etc.)
de una manera automatizada.
rdeployer maneja instalaciones en formato productivo y no productivo, significa que para el formato productivo podemos utilizar Request
For Comments (RFC) o del formato no productivo que consiste subir el componente WAR/EAR en modo upload, el cual lo sube al server de la
consola.
PRERREQUISITOS.
Algunos prerrequisitos que se deben tener en consideración:
- Debemos contar con acceso a Jenkins.
- Instalar rdeployer en el servidor donde se encuentre Jenkins.
- El usuario con el que se levantó Jenkins, debe ser el mismo owner para rdeployer.
- Se debe tener acceso por SSH a los servidores donde estén las consolas WebLogic/JBoss/OSB desde el servidor de Jenkins.
- Binarios de Weblogic, JBoss y de OSB/ESB.
- ANSI Color para su uso en Jenkins y el plugin rdeployer.
- Tener instalado libxml2 v 2.7.8 en adelante. (Nueva versión xmlUtil3)
Jenkins:
- Plugin "Build Name and Description Setter" (Referencia: https://plugins.jenkins.io/build-name-setter/)
- Plugin "AnsiColor" (Referencia: https://plugins.jenkins.io/ansicolor/)
ESTRUCTURA DE ARCHIVOS.
A continuación, vamos a indicar los archivos que se utilizan para crear la estructura que necesitaremos, con el fin de poder deployar bajo
Jenkins:
rdeployer.sh - Shell principal que realiza todo el deployado.
util/xmlUtil.io* - Sistema sh que permite leer el archivo consoles.xml, en el cual es donde almacenamos nuestros usuarios y passwords (deprecated)
util/xmlUtil2.io* - Sistema sh que permite leer el archivo consoles.xml, nueva version ahora leyendo de forma nativa el xml. (deprecated)
util/xmlUtil3.io - Nueva versión de lectura de xml para consoles.xml (rdeployer 4.2.x en adelante).
conf/consoles.xml - Archivo XML donde almacenamos usuarios y passwords de las consolas Weblogics, para acceder a ellas y deployar.
conf/rdeployer.conf - Archivo de configuración para rdeployer (versión 4.2.x en adelante)
conf/plantilla.conf - Archivo de configuración, usado para configuraciones necesarias en cada componente.
data/ - Directorio con un catálogo de errores para Weblogic/JBoss/ESB, rdeployer podrá validar el error que arroje e indicarte la acción o posible solución.
* - Deprecados para las nuevas versiones.
Todos los archivos mencionados, son necesarios para poder realizar los deploy en cada una de las consolas Weblogic que tengamos, por lo cual
se deben mantener con la estructura mencionada anteriormente. A continuación vamos a indicar los demás archivos que necesitamos y que
dichos archivos son necesarios para deploy:
{NombreDelComponenteWAR}.start
Archivo de liga suave, que va linkeado con rdeployer.sh, llevando el nombre del componente WAR o EAR, del que se vaya a deployar. Ejemplo:
Nuestro war se llama DeployExample.war, por lo tanto el archivo start se llamará DeployExample.start linkeado a rdeployer.sh. Se puede
realizar el copiado del archivo rdeployer.sh con el nombre del war.start, sin embargo se recomienda que sea como liga suave, ya que
cuando el shell rdeployer.sh sufra una actualización, éste actualizará a todos los jobs linkeados a él.
{NombreDelComponenteWAR}.conf
Archivo de configuración, que permite proporcionar información a reployer sobre la consola WebLogic donde vamos a deployar, se puede crear
una copia del archivo plantilla.conf que se encuentra en el directorio conf, se debe encontrar dicho archivo de configuración junto al
archivo .start, usando el ejemplo anterior del componente DeployExample.war:
DeployExample.conf
DeployExample.start -> ../rdeployer.sh*
Como dato principal, cuando configuramos la ruta en el conf donde se coloca el componente, si el componente ya está instalado; hay que tomar en cuenta que en los casos de Weblogic debe estar deployado el componente en la misma ruta donde se configura el conf. Este escenario sólo aplica para Weblogic, para casos de JBoss y ESB/OSB no es necesario.
Todos los componentes en la ruta que se le coloque, se crearán archivos link, el cual el archivo se copiará en otra estructura y apuntará mediante link a dicho archivo para un manejo estructurado.
COMO INSTALAR.
1.- Descargar los siguientes componentes del repositorio:
rdeployer.sh
util/
util/xmlUtil.io (deprecated)
util/xmlUtil2.io (deprecated)
util/xmlUtil3.io
conf/
conf/consoles.xml
conf/rdeployer.conf
conf/plantilla.conf
data/RD*.dat
Example/
Example/DeployExample.conf
Example/DeployExample.start
2.- Copiarlos en tu servidor en el directorio $HOME/rdeployer/
3.- Dependiendo de cuantos ambientes tengas (producción, no producción, etc.), dentro del directorio $HOME/rdeployer/ vamos a crear
un directorio con el nombre del ambiente, Ejemplo:
$HOME/rdeployer/QA
$HOME/rdeployer/PROD
$HOME/rdeployer/NOPROD
4.- En cada uno de los directorios, crearemos los archivos .start y .conf, para efectos de Ejemplo vamos a suponer que tenemos que
crear los archivos para un componente llamado Clock.war para el ambiente de QA:
Entrar al directorio de QA $HOME/rdeployer/QA
Ejecutar el comando: ln -s ../rdeployer.sh Clock.start
Copiar archivo conf: cp -rp ../conf/plantilla.conf Clock.conf
Editar el archivo conf y llenar las variables que se piden.
5.- Datos de consola - OSB/JBoss/Weblogic
5.1- Weblogic.
5.1.1- Agregar los datos de acceso a la consola Weblogic en el archivo consoles.xml, después de la etiqueta <Weblogic> y antes de </Weblogic> el cual los datos que se piden son:
<Console-target>
<node></node> - Nombre del nodo que se le da a dicha consola, el cual se colocará en la variable NODE del archivo conf
<host></host> - Nombre del hostname o IP de la consola WebLogic.
<port></port> - Puerto de acceso a la consola WebLogic.
<login></login> - Usuario con el que se accede a la consola WebLogic.
<password></password> - Password para acceder a la consola WebLogic.
</Console-target>
5.2- JBoss
5.2.1- Agregar los datos de acceso a la consola JBoss en el archivo consoles.xml, después de la etiqueta <JBoss> y antes de </JBoss> el cual los datos que se piden son:
<Console-target>
<node></node> - Nombre del nodo que se le da a dicha consola, el cual se colocará en la variable NODE del archivo conf
<host></host> - Nombre del hostname o IP de la consola Jboss.
<port></port> - Puerto de acceso a la consola JBoss.
<login></login> - Usuario con el que se accede a la consola JBoss.
<password></password> - Password para acceder a la consola JBoss.
</Console-target>
5.3- Oracle Services bus
5.3.1- Agregar los datos de acceso a la consola OSB/ESB en el archivo consoles.xml, después de la etiqueta <ESB> y antes de </ESB> el cual los datos que se piden son:
<Console-target>
<node></node> - Nombre del nodo que se le da a dicha consola, el cual se colocará en la variable NODE del archivo conf
<host></host> - Nombre del hostname o IP de la consola ESB/OSB.
<port></port> - Puerto de acceso a la consola ESB/OSB.
<login></login> - Usuario con el que se accede a la consola ESB/OSB.
<password></password> - Password para acceder a la consola ESB/OSB.
</Console-target>
6.- Una vez que se crearon los puntos anteriores para los diferentes componentes que vayamos a deployar, debemos ahora configurar
algunos valores en la consola de Jenkins, que permitirán integrar a nuestro rdeployer a Jenkins:
- Accesar a la consola de Jenkins.
- Entrar a "Administrar Jenkins" -> "Configuración del Sistema"
- Las variables que debemos agregar son: APHOME, JAVA_HOME, NPROD, PluginLauncher y WEBLOGIC_HOME. Ejemplos:
APHOME: Directorio Home de rdeployer: /directorio/home/rdeployer
JAVA_HOME: Directorio home de Java: /opt/apps/java/jdk1.8.0_144
NPROD: 0 #El valor que lleva es 0 y 1:
0 - Indica que rdeployer va a ejecutar todos los jobs como productivo y se instalará en el server del conf
1 - Indica que rdeployer se ejecuta como no productivo, instala el WAR en el upload del DOMAIN HOME WL
WEBLOGIC_HOME: /opt/Weblogic/wlserver_10.3 #Binarios de WebLogic (WL 10 en adelante)
JB_HOME: /opt/Jboss/bin # Binarios de JBoss (jboss 6.x en adelante)
OSB_HOME: /opt/ESB/wlserver # Binarios de ESB (OSB 11g en adelante)
PluginLauncher: Jenkins (rdeployer 4.x en adelante, debido a implementación de uso con otros CI/CD)
7.- Una vez agregado las variables anteriores en Jenkins, ya podemos proceder a crear Jobs en Jenkins, en el cual lo veremos en el
siguiente tema.
CREAR JOBS EN JENKINS.
Para este punto, ya deben de tener conocimientos en usar Jenkins, así como en la creación de Jobs; por lo cual daré los pasos para
crear un job de Jenkins usando rdeployer, de manera sencilla y práctica.
Debemos tener presente que los Jobs utilizan las siguientes partes:
- Parámetro de cadena.
- Parámetro de elección.
- ANSICOLOR configurado (Color ANSI Console Output)
- Set Build Name.
- Ejecutar líneas de comandos (shell)
1.- Creamos un Job con el nombre que gusten, con el fin de poder llevar un estándar podemos usar: NombreDelComponente_Ambiente_WL
Donde:
[NombreDelComponenteWAR]_[Ambiente]_[WL]
NombreDelComponenteWAR: ExampleWAR.war
Ambiente: QA
WL son las siglas de WebLogic
JB son las siglas para JBoss
OSB son las siglas para Oracle Services Bus
El nombre que llevará el job es: ExampleWAR_QA_WL
2.- Seleccionamos "proyecto de Estilo libre".
3.- Para instalaciones en formato RFC
3.1- Seleccionamos "Esta ejecución debe parametrizarse"
3.2- Añadimos "Parámetro de Cadena", ingresando los siguientes valores:
Nombre RFC
Valor por defecto [Dejar vacío]
Descripción Número de RFC para esta ejecución.
3.3.- Añadimos Parámetro de "Elección", ingresando los siguientes valores:
Nombre TYPEINST
Opciones new
fix
rollback
Descripción Tipo de Instalación.
3.4.- Marcar casillas "Set Build Name" y "Color ANSI Console Output" (la última se puede modificar de manera global para todos los Jobs).
Para el caso de "Set Build Name" se deben configurar los siguientes:
Build Name: ${ENV,var="RFC"} ${ENV,var="TYPEINST"}
Build Description ${FILE,path="version.txt"}
Desmarcar "Set build name before build starts"
Dejar marcado "Set build name after build ends"
3.5.- En la sección "Ejecutar", damos click en "Ejecutar linea de comandos (shell)"
3.6- Colocamos el path donde se encuentra el archivo start que es el que ejecuta la instalación, ejemplo:
$APHOME/QA/Clock.start QA
Donde QA es el directorio del ambiente, Clock.start es el archivo para ejecutar la instalación de un componente llamado Clock y
MUY IMPORTANTE, se debe poner después del archivo start el nombre del ambiente al final como parámetro, que debe ser el mismo
nombre del directorio que se creó.
3.7- Damos click en el botón "Avanzado" y en el campo "Exit code to set build unstable", agregamos el valor 4 (valor usado en el plugin para indicar cuando una instalación está en estado inestable)
3.8.- Salvamos el proyecto.
4.- Para instalaciones sin formato RFC (Estilo NPROD)
Para ello, sólo usaremos los pasos 3.4 al 3.7
5.- Ejecutamos el job para instalación del componente, previamente copiado el componente WAR/EAR en la ruta donde especificamos que
tomará el archivo en la variable "RTJK" del archivo de configuración.
6.- Disfruta creando tantos jobs como quieras :-)