Una comparación simple entre el caso de entrada ansible y jenkins, usando el paquete jar para la implementación a través de ansible-playbook

1. Ansible es realmente muy fuerte. Para comenzar, debe prestar atención a los siguientes puntos

El escenario de uso principal es un host que instala ansible para controlar otras máquinas de nodo,Pero la máquina nodo no necesita instalar el cliente., Esto nace con una ventaja muy grande

Inserte la descripción de la imagen aquí

El sistema Ansible se puede dividir en dos tipos por el host de control para los nodos administrados.A saber, adhoc y playbook

  • El modo ad-hoc (modo punto a punto)
    utiliza un solo módulo y admite la ejecución por lotes de comandos únicos. El comando ad-hoc es un comando que se puede ingresar rápidamente y no necesita ser guardado. Es equivalente a un shell de una oración en bash.

  • El modo de libro de jugadas (modo de libro de jugadas)
    es el método de administración principal de Ansible y la clave para las poderosas funciones de Ansible. El libro de jugadas completa una clase de funciones a través de una colección de múltiples tareas, como la instalación e implementación de servicios web y la copia de seguridad por lotes de servidores de bases de datos. Simplemente puede entender el libro de jugadas como un archivo de configuración que combina múltiples operaciones ad-hoc.

1.1, modo ad-hoc (modo punto a punto)

Un comando se ejecuta un comando

Los comandos que se pueden ejecutar son:

  1. ping para la prueba de conectividad del host
  2. comando Ejecute el comando en el host remoto y devuelva el resultado al host
  3. Shell llama al intérprete de shell para ejecutar comandos y admite varias funciones del shell, como tuberías, etc.
  4. La copia se utiliza para copiar archivos a un host remoto, al tiempo que admite la generación de archivos y los permisos de modificación para un contenido determinado.
  5. archivo se utiliza para establecer los atributos del archivo, como crear un archivo, crear un archivo vinculado, eliminar un archivo, etc.
  6. fetch se utiliza para obtener (copiar) archivos de un host remoto al local
  7. cron Este módulo es adecuado para administrar tareas programadas cron
  8. yum Este módulo se utiliza principalmente para la instalación de software.
  9. servicio Este módulo se utiliza para gestionar el programa de servicio
  10. usuario Este módulo se utiliza principalmente para administrar cuentas de usuario
  11. grupo Este módulo se utiliza principalmente para agregar o eliminar grupos
  12. script Este módulo se utiliza para ejecutar scripts locales en la máquina administrada

Por ejemplo: consulte el archivo en el host del nodo 1 y ejecute el comando ls (Ejecución simple de comandos de shell)
Inserte la descripción de la imagen aquí

1.2, modo de libro de jugadas (modo de secuencia de comandos)

Un libro de jugadas es una lista compuesta por una o más obras de teatro, cuya función principal es disfrazar a los anfitriones que se han fusionado previamente en un grupo en roles que se han definido de antemano a través de tareas en ansible. Básicamente hablando, la llamada tarea no es más que un módulo que llama ansible. Organice múltiples jugadas en un libro de jugadas, es decir, puede combinarlas para completar una tarea de acuerdo con un mecanismo preestablecido.

Reúna todos los comandos, que es el modo de libro de jugadas (modo de secuencia de comandos)

simplemente pon,

---                            #固定格式 
- hosts: group                 #定义需要执行主机组,应该事先配置好
  remote_user: root            #远程用户
  vars:                        ##定义变量
    jar_data_dir: /usr/local/cancan/numberingspecification  #变量
  tasks:                                                 #定义一个任务的开始
    - name: 创建jar的数据目录                             #定义任务的名称
      file: path={
    
    {
    
     jar_data_dir }} state=directory      #调用模块,具体要做的事情

Lo anterior es el caso específico

2. Combate real, use el paquete jar para el despliegue a través de ansible-playbook

2.1 Paso

  1. Cree un directorio de datos jar en el nodo, que es conveniente para que el nodo maestro mueva el paquete jar en el pasado.
  2. Mueva el frasco a una ubicación fija, es decir, la ubicación creada
  3. Eliminar el proceso java existente
  4. Ejecutar proceso java

2.2 Yml específico

java_install.yml

---
- hosts: group
  remote_user: root
  vars:
    jar_data_dir: /usr/local/cancan/numberingspecification
  tasks:
    - name: 创建jar的数据目录
      file: path={
    
    {
    
     jar_data_dir }} state=directory
    - name: 移动jar到固定位置
      copy: src=./java_install/numberingspecification-0.0.1-SNAPSHOT.jar dest={
    
    {
    
     jar_data_dir }}
    - name: 删除现有的进程
      shell: "kill -9 `ps -ef|grep numberingspecification|grep -v grep|awk '{printf $2}'`"
    - name: 部署进程
      shell: "nohup java -jar -Dserver.port=7777 -Dspring.datasource.password=123456 {
    
    { jar_data_dir }}/numberingspecification-0.0.1-SNAPSHOT.jar > {
    
    { jar_data_dir }}/log.file 2>&1 &"

2.3 La ubicación específica del archivo

[root@localhost roles]# pwd
/etc/ansible/roles

[root@localhost roles]# tree
.
├── java_install
│   └── numberingspecification-0.0.1-SNAPSHOT.jar
├── java_install.yml

2.4 Ejecución

ansible-playbook java_install.yml

PLAY [group] ******************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [172.25.10.70]

TASK [创建jar的数据目录] *************************************************************************************************************************************************
ok: [172.25.10.70]

TASK [移动jar到固定位置] *************************************************************************************************************************************************
ok: [172.25.10.70]

TASK [删除现有的进程] ****************************************************************************************************************************************************
changed: [172.25.10.70]

TASK [部署进程] *******************************************************************************************************************************************************
changed: [172.25.10.70]

PLAY RECAP ********************************************************************************************************************************************************
172.25.10.70               : ok=5    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

Tres, el final

Jenkins es el servidor de automatización de código abierto más popular escrito en el lenguaje de programación Java. Promueve el proceso automatizado de integración continua y entrega continua (CI / CD) en el proceso de desarrollo de software.

Ansible es una herramienta de automatización de TI. Puede implementar software, configurar sistemas y organizar tareas de TI más avanzadas, como CD (implementación continua) o actualizaciones continuas sin tiempo de inactividad.

Jenkins Ansible
Fácil de instalar. Difícil de instalar.
Jenkins proporciona muchos complementos. Admite menos complementos.
Es compatible con C, C ++, Java, Perl, Python, Ruby y otros lenguajes. Es compatible con los lenguajes C, Python, JavaScript y Ruby.
Jenkins es gratis. Ansible no es gratuito, pero hay una versión de prueba gratuita.
Es compatible con Windows, Mac OS X, Linux, etc. También es compatible con Windows, Mac OS X, etc. Pero Windows puede ser doloroso.
El peso no es ligero. El peso es muy ligero.
Instalar y configurar Jenkins no es fácil. Ansible es fácil de usar, configurar e instalar.
Tiene licencia de MIT. Está autorizado bajo una licencia comercial patentada.
Es una herramienta basada en servidor. Es una herramienta basada en la nube.

3.1 En resumen

Jenkins se utiliza como servidor de empaquetado y el servidor de control web
ansible publica el paquete war en la máquina remota.

Supongo que te gusta

Origin blog.csdn.net/qq_34168515/article/details/114262422
Recomendado
Clasificación