Cenário de uso do ambiente de produção compatível (5): instalação em lote do cliente Splunk

Prefácio:

O Splunk é usado para coleta de logs na produção. O servidor foi instalado e vários clientes precisam ser implantados. O Ansible é usado atualmente para instalação em lote.

Descrição ambiental:

Nome da CPU Versão do sistema operacional ip versão ansible Observações
ansible-awx Centos 7.6.1810 172.27.34.51 2.9.9 servidor de gerenciamento ansible
cliente Centos 7.6.1810 172.27.34.85 / cliente splukn

1. Etapas de instalação do cliente

  • Obtenha o pacote de instalação e descompacte
  • Crie ou modifique os arquivos de configuração inputs.conf e props.conf
  • Registre o cliente no servidor
  • Inicie o serviço e configure-o para iniciar na inicialização

A instalação do terminal de atendimento ao cliente é dividida em 4 etapas. A primeira etapa é fazer o upload do pacote compactado e depois descompactar; a segunda etapa é inserir o diretório correspondente e, em seguida, criar (modificar) o arquivo de configuração; a terceira etapa é executar o comando'splunk add forward-server ', Registre o cliente no servidor, e haverá uma janela interativa neste momento, permitindo que você insira as informações de nome de usuário e senha; a quarta etapa é executar o programa e configurá-lo para iniciar automaticamente.

Este artigo usa o método ansible para instalar o cliente em lotes, chamando cada módulo correspondente para simular as 4 etapas acima.

2. Preparação

1. Instalação do módulo Python pexpect

Como o módulo expect do ansible será usado, o módulo pexpect do python precisa ser chamado quando o módulo estiver em execução. Instale o módulo pexpect do python primeiro

[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

image-20201021154802825

Lógica de execução: descompacte os dois pacotes de instalação do servidor ansible por meio do módulo de desarquivamento e transfira-os para o cliente Splunk e, em seguida, use o módulo shell para executar o comando python para instalar.

2. Pexpect módulo de verificação

[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()

image-20201021154735258

Execute o comando import no cliente Splunk. Se o módulo pexpect pode ser importado corretamente, a instalação foi bem-sucedida.

Três, visão geral da função

1. Inicialize a função

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

nome do papel é splunk

2. Arquivo de execução

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

Especifique quando a lista de hosts precisa ser executada.

3. arquivo de tarefa

[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 é o ip e a porta do servidor splunk, modificado de acordo com a situação real.

4. Instalação interativa

image-20201021164016248

Se você instalar manualmente, haverá uma interface interativa, conforme mostrado na figura, você precisa inserir as informações de confirmação e as informações de nome de usuário e senha.

5. lógica de execução do arquivo de tarefas

  • Use o módulo unarchive para fazer o upload do arquivo de instalação do cliente do host ansible para o cliente splunk;
  • Use o módulo de cópia para distribuir o arquivo de configuração props.conf;
  • Use o módulo de modelo para distribuir o arquivo de configuração inputs.conf;
  • Instalação interativa usando o módulo expect

6. arquivo de modelos

[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

O parâmetro host do arquivo de configuração inputs.con corresponde ao ip do host do cliente, que é obtido por meio de ansible_default_ipv4.address; props.conf é um arquivo fixo e não precisa ser personalizado.

Quarto, execute o papel

1. Executar função

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

image-20201021165059955

O objeto de execução é test85

2. Verificação

[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]

image-20201021165654330

Faça login no cliente, você pode ver que a porta 8089 está no estado de escuta e o processo foi iniciado; você também pode fazer login no servidor splunk para visualizar a coleção de logs através da web.

O resultado é o esperado

 

 

Todos os scripts e arquivos de configuração neste artigo foram enviados ao github: ansible-production-practice-5

Para mais informações, clique em: ansible série de artigos

Acho que você gosta

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