Escenario de uso del entorno de producción de Ansible (5): instalación por lotes del cliente splunk

Prefacio:

Splunk se utiliza para la recopilación de registros en producción. El servidor se ha instalado y es necesario implementar decenas de clientes. Ansible se utiliza actualmente para la instalación por lotes.

Descripción ambiental:

Nombre de la CPU Versión del sistema operativo ip versión ansible Observaciones
ansible-awx Centos 7.6.1810 172.27.34.51 2.9.9 servidor de gestión ansible
cliente Centos 7.6.1810 172.27.34.85 / cliente splukn

1. Pasos de instalación del cliente

  • Obtenga el paquete de instalación y descomprímalo
  • Cree o modifique los archivos de configuración inputs.conf y props.conf
  • Registrar cliente en servidor
  • Inicie el servicio y configúrelo para que se inicie en el arranque

La instalación del terminal de servicio al cliente se divide en 4 pasos. El primer paso es cargar el paquete comprimido y luego descomprimirlo; el segundo paso es ingresar al directorio correspondiente y luego crear (modificar) el archivo de configuración; el tercer paso es ejecutar el comando 'plunk add forward-server', Registre el cliente en el servidor y habrá una ventana interactiva en este momento, que le permitirá ingresar el nombre de usuario y la información de la contraseña; el cuarto paso es ejecutar el programa y configurarlo para que se inicie automáticamente.

Este artículo utiliza el método ansible para instalar el cliente en lotes, llamando a cada módulo correspondiente para simular los 4 pasos anteriores.

2. Preparación

1. Instalación del módulo pexpect de Python

Dado que se usará el módulo de espera de ansible, es necesario llamar al módulo de pexpect de python cuando el módulo se esté ejecutando. Instale primero el módulo de pexpect de python

[root@ansible-awx yaml]# more install_pexpect.yaml 
---
- hosts: "{{ hostlist }}" 
  tasks:
  - name: Unarchive ptyprocess 
    unarchive:
      src: /tmp/splunk/ptyprocess-0.6.0.tar.gz 
      dest: /root
      mode: 0755
      owner: root
      group: root
  - name: install ptyprocess
    shell: "cd /root/ptyprocess-0.6.0;python ./setup.py install"
  - name: Unarchive pexpect 
    unarchive:
      src: /tmp/splunk/pexpect-4.8.0.tar.gz
      dest: /root
      mode: 0755
      owner: root
      group: root
  - name: install pexpect 
    shell: "cd /root/pexpect-4.8.0;python ./setup.py install"
[root@ansible-awx yaml]# ansible-playbook install_pexpect.yaml -e hostlist=test85

imagen-20201021154802825

Lógica de ejecución: descomprima los dos paquetes de instalación del servidor ansible a través del módulo de desarchivar y envíelos al cliente splunk, y luego use el módulo shell para ejecutar el comando python para instalar.

2. Verificación del módulo de pexpect

[root@client ~]# python
Python 2.7.5 (default, Oct 30 2018, 23:45:53) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pexpect
>>> 
>>> exit()

imagen-20201021154735258

Ejecute el comando de importación en el cliente splunk. Si el módulo pexpect se puede importar correctamente, la instalación es exitosa.

Tres, descripción general del rol

1. Inicialice el rol

[root@ansible-awx roles]# ansible-galaxy init splunk
- Role splunk was created successfully

el nombre del rol es splunk

2. Archivo de ejecución

[root@ansible-awx ansible]# more splunk.yaml 
---
- hosts: "{{ hostlist }}"
  roles:
  - role: splunk

Especifique cuándo debe ejecutarse la lista de hosts.

3.archivo de tareas

[root@ansible-awx tasks]# more main.yml 
---
# tasks file for splunk client install 
# author: loong576

- name: Unarchive client install file 
  unarchive:
    src: /tmp/splunk/splunkforwarder-8.0.5-a1a6394cc5ae-Linux-x86_64.tgz 
    dest: /opt
    mode: 0755
    owner: root
    group: root

- name: copy template file 
  copy:
    src: /etc/ansible/roles/splunk/templates/props.conf 
    dest: /opt/splunkforwarder/etc/system/local 
    owner: root
    group: root

- name: modify template file 
  template:
    src: /etc/ansible/roles/splunk/templates/inputs.conf 
    dest: /opt/splunkforwarder/etc/system/local/inputs.conf 

- name: use expect add forward-server 
  expect:
    command: /opt/splunkforwarder/bin/splunk add forward-server xx.xx.xx.xx:9997   --accept-license 
    responses:
      Do you agree with this license? [y/n]: "y"
      Please enter an administrator username: "admin"
      Please enter a new password: "splunk@123!"
      Please confirm new password: "splunk@123!"

- name: start the client and enable the process 
  shell: "/opt/splunkforwarder/bin/splunk start;/opt/splunkforwarder/bin/splunk enable boot-start"

xx.xx.xx.xx: 9997 es la ip y el puerto del servidor splunk, modificado según la situación real.

4. Instalación interactiva

imagen-20201021164016248

Si lo instala manualmente, habrá una interfaz interactiva, como se muestra en la figura, debe ingresar la información de confirmación y el nombre de usuario y la contraseña.

5.Lógica de ejecución del archivo de tareas

  • Utilice el módulo de desarchivar para cargar el archivo de instalación del cliente del host ansible al cliente splunk;
  • Utilice el módulo de copia para distribuir el archivo de configuración props.conf;
  • Utilice el módulo de plantilla para distribuir el archivo de configuración inputs.conf;
  • Instalación interactiva usando el módulo de espera

6.archivo de plantillas

[root@ansible-awx ansible]# cd /etc/ansible/roles/splunk/templates/
[root@ansible-awx templates]# ll
总用量 8
-rw-r--r-- 1 root root 127 10月 21 16:14 inputs.conf
-rw-r--r-- 1 root root  25 10月 21 16:14 props.conf
[root@ansible-awx templates]# more inputs.conf 
[default]
index = callcent 
host = {{ ansible_default_ipv4.address }} 
sourcetype = messageslog 
[monitor:///var/log/messages]
[root@ansible-awx templates]# more props.conf 
[callcent]
CHARSET=UTF-8

El parámetro de host del archivo de configuración inputs.con corresponde a la ip del host del cliente, que se obtiene a través de ansible_default_ipv4.address; props.conf es un archivo fijo y no necesita ser personalizado.

Cuarto, ejecutar el rol

1. Ejecutar función

[root@ansible-awx ansible]# ansible-playbook splunk.yaml -e hostlist=test85

imagen-20201021165059955

El objeto de ejecución es test85

2. Verificación

[root@client ~]# netstat -anlp|grep 8089
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      17488/splunkd       
[root@client ~]# ps -ef|grep splunk |grep -v grep
root     17488     1  0 16:48 ?        00:00:01 splunkd -p 8089 start
root     17496 17488  0 16:48 ?        00:00:00 [splunkd pid=17488] splunkd -p 8089 start [process-runner]

imagen-20201021165654330

Inicie sesión en el cliente, puede ver que el puerto 8089 está en estado de escucha y el proceso se ha iniciado; también puede iniciar sesión en el servidor splunk para ver la recopilación de registros a través de la web.

El resultado es el esperado

 

 

Todos los scripts y archivos de configuración de este artículo se han subido a github: ansible-production-practice-5

Para obtener más información, haga clic en: serie de artículos ansible

Supongo que te gusta

Origin blog.51cto.com/3241766/2542848
Recomendado
Clasificación