08-ansible-02-playbook
Данный плейбук разворачивает на хостах kibana
и elascticsearch
соответствующие сервисы и Oracle jdk
Oracle jdk
необходимо поместить в папку files
в формате .tar.gz
предварительно скачав с официального сайта.
Kibana
и Elasticsearch
скачиваются напрямую с сайтов разработчиков ( нужен VPN для РФ)
В каталогах расположены переменные для соответствующих хостов.
Для всех хостов.
vars.yml
---
java_jdk_version: 11.0.16
java_oracle_jdk_package: jdk-11.0.16_linux-x64_bin.tar.gz
java_jdk_version
- версия JDK для установки
java_oracle_jdk_package
- имя пакета, скачиваемого с оф. сайта
Для хоста elasticsearch
.
vars.yml
---
elastic_version: "8.3.3"
elastic_home: "/opt/elastic/{{ elastic_version }}"
elastic_version
- версия elasticsearch
для установки
elastic_home
- директория установки elasticsearch
Для хоста kibana
.
vars.yml
---
kibana_version: "8.3.3"
kibana_home: "/opt/kibana/{{ kibana_version }}"
kibana_version
- версия kibana
для установки
kibana_home
- директория установки kibana
Шаблоны
Шаблон с экспортом переменных среды Elasticsearch
# Warning: This file is Ansible Managed, manual changes will be overwritten on next playbook run.
#!/usr/bin/env bash
export ES_HOME={{ elastic_home }}
export PATH=$PATH:$ES_HOME/bin
Шаблон с экспортом переменных среды Oracle JDK
# Warning: This file is Ansible Managed, manual changes will be overwritten on next playbook run.
#!/usr/bin/env bash
export JAVA_HOME={{ java_home }}
export PATH=$PATH:$JAVA_HOME/bin
Шаблон с экспортом переменных среды Kibana
# Warning: This file is Ansible Managed, manual changes will be overwritten on next playbook run.
#!/usr/bin/env bash
export KB_HOME={{ kibana_home }}
export PATH=$PATH:$KB_HOME/bin
Описание, на каких хостах необходимо выполнять действия
---
elasticsearch:
hosts:
elasticsearch:
ansible_connection: docker
kibana:
hosts:
kibana:
ansible_connection: docker
У нас 2 хоста, elasticsearch
и kibana
. Поднимаются в docker-compose
.
version: "3.9"
services:
elasticsearch:
image: pycontribs/ubuntu
container_name: elasticsearch
entrypoint: "tail -f /dev/null"
kibana:
image: pycontribs/ubuntu
container_name: kibana
entrypoint: "tail -f /dev/null"
Сам плейбук с плеями
---
- name: Install Java
hosts: all
tasks:
- name: Set facts for Java 11 vars
set_fact:
java_home: "/opt/jdk/{{ java_jdk_version }}"
tags: java
- name: Upload .tar.gz file containing binaries from local storage
copy:
src: "{{ java_oracle_jdk_package }}"
dest: "/tmp/jdk-{{ java_jdk_version }}.tar.gz"
mode: 0755
register: download_java_binaries
until: download_java_binaries is succeeded
tags: java
- name: Ensure installation dir exists
become: true
file:
state: directory
path: "{{ java_home }}"
mode: 0755
tags: java
- name: Extract java in the installation directory
become: true
unarchive:
copy: false
src: "/tmp/jdk-{{ java_jdk_version }}.tar.gz"
dest: "{{ java_home }}"
extra_opts: [--strip-components=1]
creates: "{{ java_home }}/bin/java"
mode: 0755
tags:
- java
- name: Export environment variables
become: true
template:
src: jdk.sh.j2
dest: /etc/profile.d/jdk.sh
mode: 0755
tags: java
- name: Install Elasticsearch
hosts: elasticsearch
tasks:
- name: Upload tar.gz Elasticsearch from remote URL
get_url:
url: "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{{ elastic_version }}-linux-x86_64.tar.gz"
dest: "/tmp/elasticsearch-{{ elastic_version }}-linux-x86_64.tar.gz"
mode: 0755
timeout: 60
force: true
validate_certs: false
register: get_elastic
until: get_elastic is succeeded
tags: elastic
- name: Create directrory for Elasticsearch
file:
state: directory
path: "{{ elastic_home }}"
mode: 0755
tags: elastic
- name: Extract Elasticsearch in the installation directory
become: true
unarchive:
copy: false
src: "/tmp/elasticsearch-{{ elastic_version }}-linux-x86_64.tar.gz"
dest: "{{ elastic_home }}"
extra_opts: [--strip-components=1]
creates: "{{ elastic_home }}/bin/elasticsearch"
mode: 0755
tags:
- elastic
- name: Set environment Elastic
become: true
template:
src: templates/elk.sh.j2
dest: /etc/profile.d/elk.sh
mode: 0755
tags: elastic
- name: Install Kibana
hosts: kibana
tasks:
- name: Upload tar.gz Kibana from remote URL
get_url:
url: "https://artifacts.elastic.co/downloads/kibana/kibana-{{ kibana_version }}-linux-x86_64.tar.gz"
dest: "/tmp/kibana-{{ kibana_version }}-linux-x86_64.tar.gz"
mode: 0755
timeout: 60
force: true
validate_certs: false
register: get_kibana
until: get_kibana is succeeded
tags: kibana
- name: Create directrory for Kibana
file:
state: directory
path: "{{ kibana_home }}"
mode: 0755
tags: kibana
- name: Extract Kibana in the installation directory
become: true
unarchive:
copy: false
src: "/tmp/kibana-{{ kibana_version }}-linux-x86_64.tar.gz"
dest: "{{ kibana_home }}"
extra_opts: [--strip-components=1]
creates: "{{ kibana_home }}/bin/kibana"
mode: 0755
tags:
- kibana
- name: Set environment Kibana
become: true
template:
src: templates/kib.sh.j2
dest: /etc/profile.d/kib.sh
mode: 0755
tags: kibana
На всех хостах.
Установка переменной - set fact
Загрузка локального архива Oracle JDK
на хосты - copy
.
Создание директории для Java
- file
Разархивирование архива в директорию - unarchive
Экспорт переменных среды из шаблона - template
На хосте elasticsearch
Скачивание архива - get_url
Создание директории для Elasticsearch
- file
Разархивирование архива в директорию - unarchive
Экспорт переменных среды из шаблона - template
На хосте kibana
Скачивание архива - get_url
Создание директории для Elasticsearch
- file
Разархивирование архива в директорию - unarchive
Экспорт переменных среды из шаблона - template
java
,elastic
,kibana
.