From c5b7ff922f90b9ef12b8d4454af70eb656a43c73 Mon Sep 17 00:00:00 2001 From: Adrien Waksberg Date: Fri, 6 Sep 2019 06:57:24 +0200 Subject: [PATCH] first version --- .gitignore | 1 + .kitchen.yml | 27 ++++ .yamllint | 12 ++ CHANGELOG.md | 11 ++ Gemfile | 8 ++ Gemfile.lock | 130 ++++++++++++++++++ README.md | 69 ++++++++++ defaults/main.yml | 3 + handlers/main.yml | 5 + meta/main.yml | 21 +++ tasks/main.yml | 46 +++++++ test/integration/default/default.yml | 7 + .../default/serverspec/default_spec.rb | 30 ++++ test/integration/inventory | 1 + 14 files changed, 371 insertions(+) create mode 100644 .gitignore create mode 100644 .kitchen.yml create mode 100644 .yamllint create mode 100644 CHANGELOG.md create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 test/integration/default/default.yml create mode 100644 test/integration/default/serverspec/default_spec.rb create mode 100644 test/integration/inventory diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79776e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.kitchen/* diff --git a/.kitchen.yml b/.kitchen.yml new file mode 100644 index 0000000..7a16e14 --- /dev/null +++ b/.kitchen.yml @@ -0,0 +1,27 @@ +--- +driver: + name: docker_cli + +transport: + name: docker_cli + +provisioner: + name: ansible_playbook + hosts: localhost + require_ansible_repo: false + require_ansible_omnibus: false + require_chef_for_busser: true + ansible_verbose: false + ansible_inventory: ./test/integration/inventory + +platforms: + - name: debian-9 + driver_config: + image: "nishiki/debian9:ansible-<%= ENV['ANSIBLE_VERSION'] ? ENV['ANSIBLE_VERSION'] : '2.7' %>" + command: /bin/systemd + volume: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + security_opt: seccomp=unconfined + +suites: + - name: default diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..5465b58 --- /dev/null +++ b/.yamllint @@ -0,0 +1,12 @@ +--- +extends: default + +ignore: | + .kitchen/* + vendor/ + +rules: + line-length: + max: 120 + level: warning + truthy: false diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..35b5fa8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# CHANGELOG + +This project adheres to [Semantic Versioning](http://semver.org/). +Which is based on [Keep A Changelog](http://keepachangelog.com/) + +## [Unreleased] + +### Added + +- install kibana package +- copy configuration diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..0d96441 --- /dev/null +++ b/Gemfile @@ -0,0 +1,8 @@ +source 'https://rubygems.org' + +group :development do + gem 'kitchen-ansible' + gem 'kitchen-docker_cli' + gem 'rubocop', '0.50.0' + gem 'test-kitchen' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..a7102f1 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,130 @@ +GEM + remote: https://rubygems.org/ + specs: + ast (2.4.0) + bcrypt_pbkdf (1.0.1) + builder (3.2.3) + ed25519 (1.2.4) + equatable (0.6.1) + erubis (2.7.0) + ffi (1.11.1) + gssapi (1.3.0) + ffi (>= 1.0.1) + gyoku (1.3.1) + builder (>= 2.1.2) + httpclient (2.8.3) + kitchen-ansible (0.50.1) + net-ssh (>= 3) + test-kitchen (>= 1.4) + kitchen-docker_cli (0.19.0) + test-kitchen (>= 1.3) + license-acceptance (1.0.13) + pastel (~> 0.7) + tomlrb (~> 1.2) + tty-box (~> 0.3) + tty-prompt (~> 0.18) + little-plugger (1.1.4) + logging (2.2.2) + little-plugger (~> 1.1) + multi_json (~> 1.10) + mixlib-install (3.11.21) + mixlib-shellout + mixlib-versioning + thor + mixlib-shellout (3.0.7) + mixlib-versioning (1.2.7) + multi_json (1.13.1) + necromancer (0.5.0) + net-scp (2.0.0) + net-ssh (>= 2.6.5, < 6.0.0) + net-ssh (5.2.0) + net-ssh-gateway (2.0.0) + net-ssh (>= 4.0.0) + nori (2.6.0) + parallel (1.17.0) + parser (2.6.4.0) + ast (~> 2.4.0) + pastel (0.7.3) + equatable (~> 0.6) + tty-color (~> 0.5) + powerpack (0.1.2) + rainbow (2.2.2) + rake + rake (12.3.3) + rubocop (0.50.0) + parallel (~> 1.10) + parser (>= 2.3.3.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 3.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + ruby-progressbar (1.10.1) + rubyntlm (0.6.2) + rubyzip (1.2.3) + strings (0.1.6) + strings-ansi (~> 0.1) + unicode-display_width (~> 1.5) + unicode_utils (~> 1.4) + strings-ansi (0.1.0) + test-kitchen (2.3.2) + bcrypt_pbkdf (~> 1.0) + ed25519 (~> 1.2) + license-acceptance (~> 1.0, >= 1.0.11) + mixlib-install (~> 3.6) + mixlib-shellout (>= 1.2, < 4.0) + net-scp (>= 1.1, < 3.0) + net-ssh (>= 2.9, < 6.0) + net-ssh-gateway (>= 1.2, < 3.0) + thor (~> 0.19) + winrm (~> 2.0) + winrm-elevated (~> 1.0) + winrm-fs (~> 1.1) + thor (0.20.3) + tomlrb (1.2.8) + tty-box (0.4.1) + pastel (~> 0.7.2) + strings (~> 0.1.6) + tty-cursor (~> 0.7) + tty-color (0.5.0) + tty-cursor (0.7.0) + tty-prompt (0.19.0) + necromancer (~> 0.5.0) + pastel (~> 0.7.0) + tty-reader (~> 0.6.0) + tty-reader (0.6.0) + tty-cursor (~> 0.7) + tty-screen (~> 0.7) + wisper (~> 2.0.0) + tty-screen (0.7.0) + unicode-display_width (1.6.0) + unicode_utils (1.4.0) + winrm (2.3.2) + builder (>= 2.1.2) + erubis (~> 2.7) + gssapi (~> 1.2) + gyoku (~> 1.0) + httpclient (~> 2.2, >= 2.2.0.2) + logging (>= 1.6.1, < 3.0) + nori (~> 2.0) + rubyntlm (~> 0.6.0, >= 0.6.1) + winrm-elevated (1.1.1) + winrm (~> 2.0) + winrm-fs (~> 1.0) + winrm-fs (1.3.2) + erubis (~> 2.7) + logging (>= 1.6.1, < 3.0) + rubyzip (~> 1.1) + winrm (~> 2.0) + wisper (2.0.0) + +PLATFORMS + ruby + +DEPENDENCIES + kitchen-ansible + kitchen-docker_cli + rubocop (= 0.50.0) + test-kitchen + +BUNDLED WITH + 1.16.6 diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed4ac70 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# Ansible role: Kibana + +[![Version](https://img.shields.io/badge/latest_version-1.0.0_dev-green.svg)](https://git.yaegashi.fr/nishiki/ansible-role-kibana/releases) +[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://git.yaegashi.fr/nishiki/ansible-role-kibana/src/branch/master/LICENSE) + +Install and configure kibana + +## Requirements + +* Ansible >= 2.7 +* Debian Stretch and Buster + +## Role variables + +* `kibana_major_version` set major version to install- (default: `7`) +* `kibana_config` - hash with the configuration (see [kibana documentation](https://www.elastic.co/guide/en/kibana/current/settings.html)) + +``` + console.enabled: true + elasticsearch.requestTimeout: 30000 +``` + +## How to use + +``` +- hosts: server + roles: + - kibana +``` + +## Development + +### Test syntax with yamllint + +* install `python` and `python-pip` +* install yamllint `pip install yamllint` +* run `yamllint .` + +### Test syntax with ansible-lint + +* install `python` and `python-pip` +* install yamllint `pip install ansible-lint` +* run `ansible-lint .` + +### Tests with docker + +* install [docker](https://docs.docker.com/engine/installation/) +* install ruby +* install bundler `gem install bundler` +* install dependencies `bundle install` +* run the tests `kitchen test` + +## License + +``` +Copyright (c) 2019 Adrien Waksberg + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..59ac9e4 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,3 @@ +--- +kibana_major_version: 7 +kibana_config: {} diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..c5a8be2 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart kibana + systemd: + name: kibana + state: restarted diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..41ccf73 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,21 @@ +--- +galaxy_info: + role_name: kibana + author: Adrien Waksberg + company: Adrien Waksberg + description: Install and configure kibana + license: Apache2 + min_ansible_version: 2.7 + + platforms: + - name: Debian + versions: + - stretch + - buster + + galaxy_tags: + - dashboard + - elk + - elastic + +dependencies: [] diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..8abfa10 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,46 @@ +--- +- name: install dependencies packages + apt: + name: apt-transport-https + retries: 2 + register: result + until: result is succeeded + tags: kibana + +- name: add repository key + apt_key: + url: https://artifacts.elastic.co/GPG-KEY-elasticsearch + retries: 2 + register: result + until: result is succeeded + tags: kibana + +- name: add repository + apt_repository: + repo: 'deb https://artifacts.elastic.co/packages/{{ kibana_major_version }}.x/apt stable main' + tags: kibana + +- name: install package + apt: + name: kibana + retries: 2 + register: result + until: result is succeeded + tags: kibana + +- name: copy config file + copy: + content: '{{ kibana_config|to_yaml }}' + dest: /etc/kibana/kibana.yml + owner: root + group: root + mode: 0644 + notify: restart kibana + tags: kibana + +- name: enable and start service + systemd: + name: kibana + state: started + enabled: true + tags: kibana diff --git a/test/integration/default/default.yml b/test/integration/default/default.yml new file mode 100644 index 0000000..2e56e34 --- /dev/null +++ b/test/integration/default/default.yml @@ -0,0 +1,7 @@ +--- +- hosts: localhost + connection: local + vars: + + roles: + - ansible-role-kibana diff --git a/test/integration/default/serverspec/default_spec.rb b/test/integration/default/serverspec/default_spec.rb new file mode 100644 index 0000000..98e5320 --- /dev/null +++ b/test/integration/default/serverspec/default_spec.rb @@ -0,0 +1,30 @@ +require 'serverspec' + +set :backend, :exec + +puts +puts '================================' +puts %x(ansible --version) +puts '================================' + +sleep 10 + +describe package('kibana') do + it { should be_installed } +end + +describe file('/etc/kibana/kibana.yml') do + it { should be_file } + it { should be_mode 644 } + it { should be_owned_by 'root' } + it { should be_grouped_into 'root' } +end + +describe service('kibana') do + it { should be_enabled } + it { should be_running.under('systemd') } +end + +describe port(5601) do + it { should be_listening } +end diff --git a/test/integration/inventory b/test/integration/inventory new file mode 100644 index 0000000..2fbb50c --- /dev/null +++ b/test/integration/inventory @@ -0,0 +1 @@ +localhost