Ansible搭建ELK

# Ansible简介

* 自动化运维工具Ansible

* Ansible基于python开发的自动化运维工具(Saltstack)

* Python语言是运维人员最佳的语言

* 其功能实现基于SSH远程链接服务

* 批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能

## 特点:

* 不需要单独安装客户端,基于SSHD服务的。SSHD久相当于Ansible的客户端。

* 不需要服务端

* 依靠大量的模块实现功能

## 安装Ansible

* yum install epel-release -y

* yum install ansible -y

### 客户端(如果开启selinux则)安装

* yum install libselinux-python -y

### 查看:

![图片](https://uploader.shimo.im/f/J7J6mlBmvgUQFvOh.png!thumbnail)

### ansible配置文件:

![图片](https://uploader.shimo.im/f/ROMWn4Y0xXURspXq.png!thumbnail)

## Ansible配置文件读取顺序

* ANSIBLE_CONFIG (如果设置了环境变量)

* ansible.cfg (在当前目录中)

* ~/.ansible.cfg (在root目录中)

* /etc/ansible/ansible.cfg

## Ansible内置变量

* ansible-connection

  * 连接类型到主机。这可以是任何ansible连接插件的名称。SSH协议类型是smart,ssh或paramiko。默认是智能的。基于非SSH的类型将在下一节中介绍。

* ansible_host

  * 要连接的主机的名称,如果与您希望提供给它的别名不同。

* ansible_port 

  * ssh端口号,如果不是22

* ansible_user 

  * 要使用的默认ssh用户名。

* ansible_user 

  * 要使用的默认ssh用户名。

* ansible_ssh_pass

  * 要使用的ssh密码(永远不要将此变量存储为纯文本;始终使用保险库。请参阅变量和保险柜)

* ansible_ssh_private_key_file

  * ssh使用的私钥文件,如果使用多个密钥且不想使用SSH代理。则很有用

* ansible_ssh_common_args

  * 此设置始终附加到sftp,scp和ssh的默认命令行。ProxyCommand用于为特定主机(或组)配置

* ansible_sftp_extra_args

  * 此设置始终附加到默认的sftp命令行

* ansible_scp_extra_args

  * 此设置始终附加到默认scp命令行

* ansible_ssh_extra_args

  * 此设置始终附加到默认的ssh命令行

* ansible_ssh_pipelining

  * 确定是否使用SSH流水线。这可以覆盖中的pipelining设置ansible.cfg

* ansible_ssh_executable(在2.2版中添加)

  * 此设置将覆盖使用系统ssh的默认行为。这可以覆盖中的ssh_executable设置ansible.cfg

* ansible_become

  * 等同于ansible_sudo或ansible_su允许强制权限升级

* ansible_become_method

  * 允许设置权限提升方法

* ansible_become_user

  * 等同于ansible_sudo_user或ansible_su_user允许通过权限提升设置您成为的用户

* ansible_become_pass

  * 等效于ansible_sudo_pass或ansible_su_pass允许您设置权限提升密码(永远不要将此变量存储为纯文本;始终使用保管库。请参阅变量和保管库)

* ansible_become_exe

  * 等效于ansible_sudo_exe或ansible_su_exe允许您为所选的升级方法设置可执行文件

* ansible_become_flags

  * 等效于ansible_sudo_flags或ansible_su_flags允许您设置传递给选定升级方法的标志。这也可以ansible.cfg在sudo_flags选项中全局设置

* ansible_shell_type

  * 目标系统的shell类型。除非已将ansible_shell_executable设置为非Bourne(sh)兼容shell,否则不应使用此设置 。默认情况下,命令使用sh-style语法格式化。将此设置为csh或fish将导致在目标系统上执行的命令遵循这些shell的语法。

* ansible_python_interpreter

  * 目标主机python路径。这对于具有多个Python或不位于/ usr / bin / python的系统(如* BSD)或/ usr / bin / python 不是2.X系列Python的系统非常有用。我们不使用/ usr / bin / env机制,因为它需要设置远程用户的路径,并假设python可执行文件名为python,其中可执行文件可能被命名为python2.6。

* ansible_shell_executable

  * 这将设置ansible控制器将目标机器上使用的shell,将覆盖executable在ansible.cfg其中默认为 / bin / sh的。如果无法使用/ bin / sh(即/ bin / sh未安装在目标计算机上或无法从sudo运行),您应该只更改它

## Ansible软件颜色信息

* 绿色:表示查看信息,对远程主机未作改动的命令

* 红色:批量管理生产错误信息

* 黄色:对远程主机做了相应改动

* 粉色:对操作提出建议或忠告

# Ansible模块

## 参数信息

* path --- 指定远程主机上已有的一个文件数据

* mode --- 修改数据权限值

* owner --- 修改属性

* group --- 修改属组

* state --- directory touch link hard absent

* recurse=yes --- 修改目录权限时,进行递归修改

### 参考:

ansible test -m file -a "path=/backup/test mode=666 owner=dc group=dc"  --- 修改文件权限

ansible test -m file -a "path=/backup/test state=directory"  --- 创建目录

ansible test -m file -a "path=/backup/test/test01/test02/ state=directory"                --- 创建多级目录

ansible test -m file -a "path=/backup/test state=touch"  --- 创建文件

ansible test -m file -a "src=/backup/test path=/backup/test_soft_link.txt state=link"  --- 创建软链接

ansible test -m file -a "src=/backup/test  path=/backup/test_hard_link.txt state=hard"  --- 创建硬链接

ansible test -m file -a "path=/backup/test_hard_link.txt state=absent"                        --- 删除数据操作

ansible test -m file -a "path=/backup/test02.txt state=file"                                  --- 检查文件是否存

## yum  --- 批量安装软件模块

* name --- 指定要安装的软件名称

* state --- 安装软件,或是卸载软件

* present --- 安装软件 installed

* latest --- 更新软件

* removed --- 移除软件 absent

### 参考:

ansible test -m yum -a "name=htop state=absent"    --- 卸载软件

ansible test -m yum -a "name=htop state=installed" --- 安装软件

ansible test -m yum -a "name=htop state=removed"  --- 卸载软件

## service --- 批量管理服务器启动状态

* name --- 管理哪个服务名称

* state --- 指定服务运行状态

* reloaded

* restarted

* started

* stoped

### 参考:

      ansible test -m service -a "name=crond state=stopped"

      ansible test -m service -a "name=crond state=started"

      ansible test -m service -a "name=crond state=restarted"

      enabled --- 设置服务是否开机运行

      ansible test -m service -a "name=crond enabled=no"  --- 开机不运行

      ansible test -m service -a "name=crond enabled=yes"  --- 开机自动运行服务

## corn --- 批量部署定时任务

* name --- 定义定时任务注释信息

* state --- absent删除定时任务

* disabled --- 给定时任务添加注释

### 参考:

minute hour day month weekday job="ntpdate ntp1.aliyun.com"

ansible定时任务设置命令

      01. 要求: 每隔五分钟,进行时间同步

      ansible test -m cron -a "minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null'"

      02. 要求: 每周五,晚上10:30, 需要去test

      ansible test -m cron -a "name='test' minute=30 hour=22 weekday=5 job='make shufu &>/dev/null'"

      说明: 定时任务配置时.需要添加name注释信息,否则会出现反复创建相同定时任务


      ansible test -m cron -a "name='test03' state=absent"  --- 删除指定定时任务

      ansible test -m cron -a "name='test02' job='make shufu &>/dev/null' disabled=yes"  --- 给定时任务添加注释

      ansible test -m cron -a "name='test02' job='make shufu &>/dev/null' disabled=no"  --- 取消定时任务注释

## user --- 批量创建用户

* name --- 创建的用户名称

* password --- 设置用户密码信息,必须设置为密文

* create_home --- yes表示创建家目录,no为不创建家目录

* shell --- 指定用户登录方式 shell=/sbin/nologin

* gourp --- 指定用户属于哪个组,主要组

* groups --- 指定用户属于哪个组,附属组

* uid --- 指定用户uid数值

* state --- absent删除用户

* remove --- yes 删除家目录

### 参考:

ansible test -m user -a "name=alex create_home=no shell=/sbin/nologin"  --- 批量创建虚拟用户

      ansible test -m user -a "name=alex group=oldboy groups=oldgirl"          --- 指定用户所属组

      ansible test -m user -a "name=alex uid=2000"                            --- 指定用户uid

      ansible test -m user -a "name=alex state=absent"                        --- 删除用户


      ansible test -m user -a 'name=oldbaby password="$6$oldgirl$kAUTXVC2z1agr1HlmpFe9abFhWKwJ1fNyg64F95U3rVumwQfqOuhV3YkyZU9.H79TChzIKn5epl5M18B199qV1"'

      --- 给用户设置密码

### 密码密文生产方式:

*    方法一:

    ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"

    mypassword      --- 明文密码信息

    sha512          --- 明文转换为密文加密方法

    mysecretsalt    --- 用什么做算法依据生成密文信息

    ansible all -i localhost, -m debug -a "msg={{ 'oldboy123' | password_hash('sha512', 'oldgirl') }} 

    $6$oldgirl$kAUTXVC2z1agr1HlmpFe9abFhWKwJ1fNyg64F95U3rVumwQfqOuhV3YkyZU9.H79TChzIKn5epl5M18B199qV1


    实践操作:

    [root@m01 ~]# ansible all -i localhost, -m debug -a "msg={{ '123456' | password_hash('sha512', 'oldboy123') }}"

    localhost | SUCCESS => {

        "msg": "$6$oldboy123$W3jkmkkVTr.9UStm4S50RT2uIEjB/4GEtaAeVCSZ..uWVN1YGxHvluss9JVfAPV0gSJoGn1qAfxGyttIsTjcz0"

    }

*  方法二:  利用python模块功能

    yum install python-pip

    pip install passlib

    优化pip源

    ~/.pip/pip.conf

    中添加或修改:

    [global]

    index-url = https://mirrors.aliyun.com/pypi/simple/


    [install]

    trusted-host=mirrors.aliyun.com

    python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"

## mount --- 批量挂载模块

* src --- 需要挂载的存储设备

* path --- 挂载点信息

* fstype --- 挂载文件系统类型 NFS

* state --- 挂载和卸载设置参数

* mounted :实现立即挂载,和开机自动挂载(推荐)

* present :只能实现开机自动挂载

* unmounted :立即挂载,但是不能永久卸载

* absent :立即挂载,永久卸载、错误提示

### 参考:

ansible test -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted"

ansible test -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=unmounted"

## command --- 批量执行命令

command命令执行模块,但命令中不能包含>,<,;,&,|

### 参考:

ansible test -m command -a "cat /etc/hosts"

## shell --- 万能模块

shell是一个万能模块,能够执行shell命令。能够在远程节点上。调用/bash/sh来执行,能够使用特殊参数

### 参考:

ansible test -m shell -a "source /etc/profile"

## script --- 执行主机脚本批量运行在远程主机上

script是一个执行脚本模块,在链接远程主机后、能够在远程主机上运行本地脚本

### 参考:

[root@elastic-stack ~]# cat test.sh 

#!/bin/bash

echo `seq 10`

[root@elastic-stack ~]# ansible test -m script -a "/root/test.sh"

10.0.0.122 | CHANGED => {

    "changed": true, 

    "rc": 0, 

    "stderr": "Shared connection to 10.0.0.122 closed.\r\n", 

    "stderr_lines": [

        "Shared connection to 10.0.0.122 closed."

    ], 

    "stdout": "1 2 3 4 5 6 7 8 9 10\r\n", 

    "stdout_lines": [

        "1 2 3 4 5 6 7 8 9 10"

    ]

}

## copy --- 批量复制文件模块

copy模块是可以将本地的文件,copy到远程主机上。

### 参数:

* src --- 服务端本地的目录文件

* dest --- 远端主机目录,如果远端目录没有,那么将会创建

* owner --- 目录或文件所属的主

* group --- 目录或文件所属的组

* mode --- 目录或文件的权限

* backup --- 开始数据的备份功能

* remote_src --- 相当于远程主机上的cp功能,备份远程主机的数据、在管理端主机可以没有文件

* content --- 可以百安及文件信息,直接复制到的远程主机、不用再管理的创建文件

### 参考:

ansible test -m copy -a 'src=/root/metricbeat-6.8.2-x86_64.rpm dest=/root/'

## file --- 管理文件和文件属性

### 参数:

* path --- 指定文件路径信息

* mode --- 修改文件权限

* owner --- 修改文件的属主

* group --- 修改文件的属组

* state --- 修改文件状态信息

  * hard --- 硬链接、soft --- 软连接、touch --- 创建文件、directory --- 目录

* src --- 针对软链接和硬链接,目录或文件的源路径

* dest --- 针对软连接和硬链接,目录或文件的目标路径

* rescure --- 是否递归修改目录里面文件的属性 yes/no

## blockinfile --- 批量修改文件模块

blockinfile模块可以帮助我们再指定的文件中插入”一段文本“,这段文本时被标记过的,也就是我们在这段文本上做了记号,一边在以后的操作中可以通过”标记“找到文本。然后进行修改、或删除。

## 参数:

* path --- 指定要操作的文件

* block --- 用以指定想要操作的一段文本。此参数有一个别名叫---content---、作用相同

* marker --- ansible会自动为这段文本添加两个标记,一个开始标记"BEGIN ANSIBLE MANAGED BLOCK",结束标记为"END ANSIBLE MANAGED BLOCK"。可以使用marker参数定义标记。例如:marker=#{mark}test,开始标记变成了# BEGIN test,结束为# END test。

* state --- state有两个可选值,present与absent。默认情况下,我们会将指定的一段文本插入到文件中,如果对应的文件中已经存在对应标记文本,默认会过呢更新对应段落。在执行插入操作或更新操作时,state的值为present,默认值就是present,如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记段落。

* insertafter --- 在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面。如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾。

* insertbefore --- 在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面。如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为BOF,表示将文本插入到文档开头。

* backup --- 是否在修改文件前进行文件备份

* create --- 当要操作的文件不存在时,是否创建对应的文件。

# 使用Ansible搭建Elastaic Stack

## 首先在ansible/hosts文件中定义组

![图片](https://uploader.shimo.im/f/tSLHJFDCGfknTdNs.png!thumbnail)

## 分发密钥

* ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.122

* ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.123

* ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.124

## 编写ansible剧本

### 下载所需环境JDK

* - hosts: elastic-stack

*  tasks:

*  - name: Download the JDK environment

*    yum: name=java-1.8.0-openjdk state=installed

需检查openJDK版本:使用'java -version'

### 写入/etc/profile变量

*  - name: Write environment variable-01

*    lineinfile: "dest=/etc/profile line='export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre'"

*  - name: Write environment variable-02

*    lineinfile: "dest=/etc/profile line='export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar'"

*  - name: Write environment variable-03

*     lineinfile: "dest=/etc/profile line='export PATH=$PATH:$JAVA_HOME/bin'"

### 生效环境变量

*  - name: Effect environment variable

*    shell: 'source /etc/profile'

注: 这里使用生效环境变量,需使用shell,使用command模块会报错。

### 下载并安装公共签名密钥

*  - name: Download and install the public signature key

*    command: "rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch"

这里会出现警告,需使用yum模块,但yum模块尝试无法下载。

### 传输elasticsearch-RPM包

###官网下载地址wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.rpm

*  - name: Copy installation package

*    copy: src=/root/elasticsearch-6.8.6.rpm dest=/root/

### 安装elasticsearch-RPM包

*  - name: Install the elasticsearch

*    yum: name=/root/elasticsearch-6.8.6.rpm state=installed

### 关闭swap

*  - name: 关闭swap

*     command: "swapoff -a"

### elasticsearch内存锁定

*   - name: 内存锁定

*     replace: path=/etc/elasticsearch/jvm.options regexp='^-Xms.*' replace='-Xms2g'

*   - name: 内存锁定2

*     replace: path=/etc/elasticsearch/jvm.options regexp="^-Xmx.*" replace='-Xmx2g'

内存锁定是为了让elasticsearch有足够的内存使用,内存锁定的设定为”内存的一半“,当内存大于64G时应当设置低于32G,不然会使系统指针变长。浪费内存。

### elasticsearch配置文件文件更改,集群名称

*  - name: Elasticsearch configuration file change, cluster name

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='cluster.name:\ elasticsearch'"

## 针对主master所作更改

* - hosts: el-master-01

*  tasks:

### 主机在elasticsearch中所起名称

*  - name:  Name found in elasticsearch

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.name:\ el-master'"

默认,elasticsearch会对主机起名,但会变化。所以为了将来我们好查找,定义主机名称

### 为了减轻主节点压力,所以我们关闭主节点的数据节点

*  - name: Close data node

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.data:\ false'"

### master01对外提供服务IP

*  - name: Provide external service IP

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='network.host:\ 10.0.0.122'"

### 防止脑裂

*  - name: Prevent fissure

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='discovery.zen.minimum_master_nodes:\ 2'"

脑裂:当主机宕机后,其余候补机器权重一样。这样的时候,就无法分配,继续正常运行服务。

## 针对于master-02更改

* - hosts: el-master-02

*  tasks:

### 主机在elasticsearch中所起名称

*  - name: Name found in elasticsearch

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.name:\ el-master-02'"

### master02对外提供服务IP

*  - name: Provide external service IP

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.name:\ el-master-02'"

### 防止脑裂

*  - name: Prevent fissure

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='discovery.zen.minimum_master_nodes:\ 1'"

## 针对于master-03更改

* - hosts: el-master-03

*  tasks:

### 主机在elasticsearch中所起名称

*  - name: Name found in elasticsearch

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.name:\ el-master-03'"

### master03对外提供服务IP

*  - name: Provide external service IP

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='network.host:\ 10.0.0.124'"

### 防止脑裂

*  - name: Prevent fissure

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='discovery.zen.minimum_master_nodes:\ 2'"

## 针对所有主机的操作

* - hosts: elastic-stack

*  tasks:

### 锁内存

*  - name: lock memory

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='bootstrap.memory_lock:\ true'"

### 集群IP

*  - name: The cluster IP

*    lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='discovery.zen.ping.unicast.hosts:\ [\"10.0.0.122\",\"10.0.0.123\",\"10.0.0.124\"]'"

注:这里需把所有的主机IP填入,这样他们会自动发现。

### 配置最少3个节点启动完成,才开始进行集群恢复动作

*   - name: 配置最少3个节点启动完成,才开始进行集群恢复动作

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='getway.recover_after_nodes:\ 3'"

### 集群的预期节点

*   - name: Cluster expected node

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='getway.expected_nodes:\ 3'"

### 等待凑齐预期节点时间

*   - name: Waiting time

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='getway.recover_after_time:\ 5'"

### 禁止启动多个节点

*  - name: Multiple nodes are forbidden to start

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='node.max_local_storage_nodes:\ 1'"

### 防止同一个分片的副本放在同一台机器上

*   - name: 防止同一个分片的副本放在同一台主机上

*     lineinfile: "dest=/etc/elasticsearch/elasticsearch.yml line='cluster.routing.allocation.same_shard.host:\ true'"

### 针对Iptabales优化

*  - name: Iptables to optimize the

*     lineinfile: "dest=/etc/sysctl.conf line='net.ipv4.ip_forward\ =\ 0\nnet.ipv4.conf.default.rp_filter\ =\ 1\nnet.ipv4.conf.default.accept_source_route\ =\ 0\nkernel.sysrq\ =\ 0\nkernel.core_uses_pid\ =\ 1\nnet.ipv4.tcp_syncookies\ =\ 1\nkernel.msgmnb\ =\ 65536\nkernel.msgmax\ =\ 65536\nkernel.shmmax\ =\ 68719476736\nkernel.shmall\ =\ 5294967296\nvm.max_map_count\ =\ 655360\nvm.swappiness\ =\ 1'"

### modprobe bridge

*   - name: modprobe bridge

*     shell: "modprobe bridge"

### 生效规则

*  - name: Effectibe rules

*     shell: 'sysctl -p'

### 更改limits

*  - name: Limits to optimize

*     lineinfile: "dest=/etc/security/limits.conf line='*\ soft\ nofile\ 65536\n*\ hard\ nofile\ 131072\n*\ soft\ nproc\ unlimited\n*\ hard\ nproc\ unlimited'"

### 加入开机启动

*   - name: Add boot start

*     shell: "/bin/systemctl daemon-reload"

*   - name: Add boot start-2

*     shell: "/bin/systemctl enable elasticsearch.service"

### 启动elasticsearch

*   - name: Start elasticsearch

*     shell: "systemctl start elasticsearch.service"

## 在master02上安装kibana

* - hosts: el-master-02

*  tasks:

### 导入弹性PGP密钥

*   - name: Import the Elastic PGP key

*     command: "rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch"

### 拷贝Kibana-RPM包

###官方下载地址:curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.8.6-linux-x86_64.tar.gz

*   - name: Copy the Kibana installation package

*     copy: "src=/root/kibana-6.8.6-x86_64.rpm dest=/root/"

### 安装Kibana

*   - name: Install Kibana

*     yum: name=/root/kibana-6.8.6-x86_64.rpm state=installed

### 更改kibana配置文件

*   - name: Change the kibana configuration file

*     lineinfile: "dest=/etc/kibana/kibana.yml line='server.port:\ 5601\nserver.host:\ \"10.0.0.123\"\nelasticsearch.url:\ \"http://10.0.0.122:9200\"'"

### 加入开机启动

*   - name: Kibana join boot start

*     command: "systemctl enable kibana.service"

### 启动Kibana

*   - name: Kibana join boot start

*     command: "systemctl enable kibana.service"

## 所有主机操作

* - hosts:

*  tasks:

### 复制Metricbeat-RPM包

###官网下载地址:curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.8.6-x86_64.rpm

*   - name: Copy the Metricbeat RPM package

*     copy: src=/root/metricbeat-6.8.2-x86_64.rpm dest=/root/

### 安装Mentricbeat

*   - name: Install Mentricbeat

*     yum: name=/root/metricbeat-6.8.6-x86_64.rpm state=installed

### 从Metricbeat安装目录中启动系统模块

*   - name: From the Metricbeat installation directory,start the system module

*     shell: "metricbeat modules enable system"

### 加入开机启动

*   - name: Metricbeat joins the boot

*     command: "systemctl enable metricbeat"

### 启动Metricbeat

*   - name: Start Metricbeat

*     command: "systemctl start metricbeat"

### 复制Logstash-RPM包

*   - name: Copy Logstash RPM

*     copy: src=/root/logstash-6.8.2.rpm dest=/root/

### 安装Logstash

###官网下载地址:curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.8.6.rpm

*   - name: Install Logstash

*     yum: name=/root/logstash-6.8.2.rpm state=installed

你可能感兴趣的:(Ansible搭建ELK)