Start working on icinga2 server
This commit is contained in:
parent
3c526c3fa8
commit
7e1caaa2f4
5
playbook_icinga2_deploy.yml
Normal file
5
playbook_icinga2_deploy.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: icinga2_server
|
||||
roles:
|
||||
- icinga2_server
|
||||
|
43
roles/icinga2_server/README.md
Normal file
43
roles/icinga2_server/README.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
Ansible Role: icinga2_server
|
||||
=========
|
||||
|
||||
This role deploys as208585 webfiles on a GNU/Linux server.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
All variables and default values are defined in `defaults/main.yml` :
|
||||
|
||||
# Files location for as208585.net website
|
||||
website_location: "/var/www/html/as208585.net"
|
||||
|
||||
# Web user
|
||||
website_user: "www-data"
|
||||
website_group: "www-data"
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
- hosts: web_server
|
||||
roles:
|
||||
- icinga2_server
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
This role was created in 2020 by Nemo.
|
73
roles/icinga2_server/defaults/main.yml
Normal file
73
roles/icinga2_server/defaults/main.yml
Normal file
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
|
||||
icinga2_server_apt_repository: "deb http://packages.icinga.com/{{ ansible_distribution|lower }} icinga-{{ ansible_distribution_release }} main"
|
||||
icinga2_server_apt_key: "http://packages.icinga.com/icinga.key"
|
||||
|
||||
icinga2_server_icinga2_package: icinga2
|
||||
icinga2_server_monitoring_plugins_package: monitoring-plugins
|
||||
|
||||
icinga2_server_icinga2_service: icinga2
|
||||
|
||||
icinga2_server_mariadb_server_package: mariadb-server
|
||||
icinga2_server_mariadb_client_package: mariadb-client
|
||||
icinga2_server_mariadb_python_package: python-mysqldb
|
||||
icinga2_server_icinga2_ido_mysql_package: icinga2-ido-mysql
|
||||
icinga2_server_icingaweb2_package: icingaweb2
|
||||
icinga2_server_icingacli_package: icingacli
|
||||
icinga2_server_apache_httpd_package: apache2
|
||||
icinga2_server_apache_httpd_service: apache2
|
||||
|
||||
icinga2_server_user: nagios
|
||||
icinga2_server_group: nagios
|
||||
|
||||
icinga2_server_mariadb_service: mariadb
|
||||
|
||||
icinga2_server_mariadb_root_password: needToBeChanged
|
||||
|
||||
icinga2_server_mariadb_bind_address: '127.0.0.1'
|
||||
icinga2_server_mariadb_performance_schema: on
|
||||
icinga2_server_mariadb_skip_name_resolve: 1
|
||||
icinga2_server_mariadb_max_connections: 100
|
||||
icinga2_server_mariadb_connect_timeout: 2
|
||||
icinga2_server_mariadb_max_allowed_packet: 10M
|
||||
icinga2_server_mariadb_innodb_buffer_pool_instances: 1
|
||||
icinga2_server_mariadb_innodb_buffer_pool_size: 100M
|
||||
icinga2_server_mariadb_innodb_log_file_size: 25M
|
||||
icinga2_server_mariadb_table_cache: 1000
|
||||
icinga2_server_mariadb_tmp_table_size: 50M
|
||||
icinga2_server_mariadb_max_heap_table_size: 50M
|
||||
icinga2_server_mariadb_query_cache_limit: 256K
|
||||
icinga2_server_mariadb_query_cache_type: 0
|
||||
icinga2_server_mariadb_query_cache_size: 0
|
||||
icinga2_server_mariadb_query_cache_min_res_unit: 2k
|
||||
icinga2_server_mariadb_join_buffer_size: 2M
|
||||
icinga2_server_mariadb_sort_buffer_size: 256K
|
||||
icinga2_server_mariadb_read_buffer_size: 128K
|
||||
icinga2_server_mariadb_read_rnd_buffer_size: 4M
|
||||
icinga2_server_mariadb_key_buffer: 500M
|
||||
icinga2_server_mariadb_slow_query_log: true
|
||||
icinga2_server_mariadb_long_query_time: 5
|
||||
icinga2_server_mariadb_log_slow_admin_statements: true
|
||||
icinga2_server_mariadb_log_queries_not_using_indexes: true
|
||||
|
||||
icinga2_server_mariadb_databases:
|
||||
- icinga
|
||||
- icingaweb2
|
||||
|
||||
icinga2_server_mariadb_users:
|
||||
icinga_user:
|
||||
name: "icinga_user"
|
||||
password: "needToBeChanged"
|
||||
priv: "icinga.*:ALL"
|
||||
icingaweb2_user:
|
||||
name: "icingaweb2_user"
|
||||
password: "needToBeChanged"
|
||||
priv: "icinga.*:ALL"
|
||||
|
||||
icinga2_server_mariadb_icinga_schema_location: "/usr/share/icinga2-ido-mysql/schema/mysql.sql"
|
||||
|
||||
icinga2_server_api_users:
|
||||
- username: root
|
||||
password: 'needToBeChanged'
|
||||
permissions: '*'
|
||||
|
12
roles/icinga2_server/handlers/main.yml
Normal file
12
roles/icinga2_server/handlers/main.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
|
||||
- name: package repository updated
|
||||
apt:
|
||||
update_cache: yes
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- name: "restart icinga2"
|
||||
service:
|
||||
name: "{{ icinga2_server_icinga2_service }}"
|
||||
enabled: yes
|
||||
state: restarted
|
38
roles/icinga2_server/tasks/configure_icinga2_api_feature.yml
Normal file
38
roles/icinga2_server/tasks/configure_icinga2_api_feature.yml
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
- name: Apache HTTPD installed
|
||||
package:
|
||||
name: "{{ icinga2_server_apache_httpd_package }}"
|
||||
state: present
|
||||
|
||||
- name: Apache HTTPD started and enabled
|
||||
service:
|
||||
name: '{{ icinga2_server_apache_httpd_service }}'
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: api-users.conf file installed
|
||||
template:
|
||||
src: api-users.conf.j2
|
||||
dest: /etc/icinga2/conf.d/api-users.conf
|
||||
owner: "{{ icinga2_server_user }}"
|
||||
group: "{{ icinga2_server_group }}"
|
||||
mode: 0640
|
||||
notify: restart icinga2
|
||||
register: apiusers
|
||||
no_log: True
|
||||
|
||||
- name: execute icinga2 api setup command
|
||||
command: icinga2 api setup
|
||||
args:
|
||||
creates: /var/lib/icinga2/ca/ca.crt
|
||||
notify: restart icinga2
|
||||
when: apiusers.changed
|
||||
|
||||
- name: Icinga2 api feature enabled
|
||||
icinga2_feature:
|
||||
name: api
|
||||
state: present
|
||||
notify: restart icinga2
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
17
roles/icinga2_server/tasks/install_icinga2.yml
Normal file
17
roles/icinga2_server/tasks/install_icinga2.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
- name: Icinga2 installed
|
||||
package:
|
||||
name: "{{ icinga2_server_icinga2_package }}"
|
||||
state: present
|
||||
|
||||
- name: Monitoring-plugins installed
|
||||
package:
|
||||
name: "{{ icinga2_server_monitoring_plugins_package }}"
|
||||
state: present
|
||||
|
||||
- name: Icinga2 started and enabled
|
||||
service:
|
||||
name: '{{ icinga2_server_icinga2_service }}'
|
||||
enabled: true
|
||||
state: started
|
||||
|
10
roles/icinga2_server/tasks/install_icingaweb2.yml
Normal file
10
roles/icinga2_server/tasks/install_icingaweb2.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Icingaweb2 installed
|
||||
package:
|
||||
name: "{{ icinga2_server_icingaweb2_package }}"
|
||||
state: present
|
||||
|
||||
- name: Icingacli installed
|
||||
package:
|
||||
name: "{{ icinga2_server_icingacli_package }}"
|
||||
state: present
|
22
roles/icinga2_server/tasks/install_ido.yml
Normal file
22
roles/icinga2_server/tasks/install_ido.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
- name: Icinga2 IDO MySQL module installed
|
||||
package:
|
||||
name: "{{ icinga2_server_icinga2_ido_mysql_package }}"
|
||||
state: present
|
||||
register: idoinstalled
|
||||
|
||||
- name: Icinga DB schema imported
|
||||
mysql_db:
|
||||
state: import
|
||||
name: icinga
|
||||
target: "{{ icinga2_server_mariadb_icinga_schema_location }}"
|
||||
when: idoinstalled.changed
|
||||
|
||||
- name: Icinga2 ido-mysql feature enabled
|
||||
icinga2_feature:
|
||||
name: ido-mysql
|
||||
state: present
|
||||
notify: restart icinga2
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
76
roles/icinga2_server/tasks/install_mariadb.yml
Normal file
76
roles/icinga2_server/tasks/install_mariadb.yml
Normal file
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
- name: MariaDB server installed
|
||||
package:
|
||||
name: "{{ icinga2_server_mariadb_server_package }}"
|
||||
state: present
|
||||
|
||||
- name: MariaDB client installed
|
||||
package:
|
||||
name: "{{ icinga2_server_mariadb_client_package }}"
|
||||
state: present
|
||||
|
||||
- name: MariaDB Python installed
|
||||
package:
|
||||
name: "{{ icinga2_server_mariadb_python_package }}"
|
||||
state: present
|
||||
|
||||
- name: MariaDB started and enabled
|
||||
service:
|
||||
name: '{{ icinga2_server_mariadb_service }}'
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: ~/.my.cnf configured for root user
|
||||
template:
|
||||
src: my.cnf.j2
|
||||
dest: /root/.my.cnf
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0600
|
||||
no_log: True
|
||||
|
||||
- name: root password updated
|
||||
mysql_user:
|
||||
name: root
|
||||
host: "{{ item }}"
|
||||
password: "{{ icinga2_server_mariadb_root_password }}"
|
||||
state: present
|
||||
with_items:
|
||||
- 127.0.0.1
|
||||
- ::1
|
||||
- localhost
|
||||
no_log: True
|
||||
|
||||
- name: test databased deleted
|
||||
mysql_db:
|
||||
name: test
|
||||
state: absent
|
||||
|
||||
- name: anonymous users deleted
|
||||
mysql_user:
|
||||
name: ''
|
||||
host: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- localhost
|
||||
- 127.0.0.1
|
||||
- ::1
|
||||
no_log: True
|
||||
|
||||
- name: databases created
|
||||
mysql_db:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_items:
|
||||
- "{{ icinga2_server_mariadb_databases }}"
|
||||
|
||||
- name: Icinga user created
|
||||
mysql_user:
|
||||
name: "{{ item.value.name }}"
|
||||
password: "{{ item.value.password }}"
|
||||
priv: "{{ item.value.priv }}"
|
||||
state: present
|
||||
with_dict: "{{ icinga2_server_mariadb_users }}"
|
||||
no_log: True
|
||||
|
||||
|
10
roles/icinga2_server/tasks/main.yml
Normal file
10
roles/icinga2_server/tasks/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Include OS-specific variables.
|
||||
include_vars: "{{ ansible_os_family }}.yml"
|
||||
|
||||
#- import_tasks: repository.yml
|
||||
#- import_tasks: install_icinga2.yml
|
||||
- import_tasks: install_mariadb.yml
|
||||
#- import_tasks: install_ido.yml
|
||||
#- import_tasks: configure_icinga2_api_feature.yml
|
||||
#- import_tasks: install_icingaweb2.yml
|
14
roles/icinga2_server/tasks/repository.yml
Normal file
14
roles/icinga2_server/tasks/repository.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
- name: Icinga apt key installed
|
||||
apt_key:
|
||||
url: '{{ icinga2_server_apt_key }}'
|
||||
state: present
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- name: Icinga APT repository configured
|
||||
apt_repository:
|
||||
repo: '{{ icinga2_server_apt_repository }}'
|
||||
state: present
|
||||
when: ansible_os_family == 'Debian'
|
||||
notify: package repository updated
|
||||
|
23
roles/icinga2_server/templates/api-users.conf.j2
Normal file
23
roles/icinga2_server/templates/api-users.conf.j2
Normal file
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* {{ ansible_managed }}
|
||||
*/
|
||||
|
||||
{% for user in icinga2_server_api_users %}
|
||||
object ApiUser "{{ user.username }}" {
|
||||
password = "{{ user.password }}"
|
||||
{% if user.permissions is string %}
|
||||
permissions = [ "{{ user.permissions }}" ]
|
||||
{% else %}
|
||||
permissions = [
|
||||
{% for permission in user.permissions %}
|
||||
{
|
||||
permission = "{{ permission.name }}"
|
||||
{% if permission.filter is defined %}
|
||||
filter = {{ '{{' }} {{ permission.filter }} {{ '}}' }}
|
||||
{% endif %}
|
||||
},
|
||||
{% endfor %}
|
||||
]
|
||||
{% endif %}
|
||||
}
|
||||
{% endfor %}
|
5
roles/icinga2_server/templates/my.cnf.j2
Normal file
5
roles/icinga2_server/templates/my.cnf.j2
Normal file
|
@ -0,0 +1,5 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
[client]
|
||||
user=root
|
||||
password={{ icinga2_server_mariadb_root_password }}
|
38
roles/icinga2_server/templates/settings.cnf.j2
Normal file
38
roles/icinga2_server/templates/settings.cnf.j2
Normal file
|
@ -0,0 +1,38 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
[client]
|
||||
user = root
|
||||
password = {{ icinga2_server_mariadb_root_password }}
|
||||
|
||||
[mysqld]
|
||||
bind_address = {{ icinga2_server_mariadb_bind_address }}
|
||||
performance_schema = {{ icinga2_server_mariadb_performance_schema }}
|
||||
skip-name-resolve = {{ icinga2_server_mariadb_skip_name_resolve }}
|
||||
|
||||
max_connections = {{ icinga2_server_mariadb_max_connections }}
|
||||
connect_timeout = {{ icinga2_server_mariadb_connect_timeout }}
|
||||
max_allowed_packet = {{ icinga2_server_mariadb_max_allowed_packet }}
|
||||
|
||||
innodb_buffer_pool_instances = {{ icinga2_server_mariadb_innodb_buffer_pool_instances }}
|
||||
innodb_buffer_pool_size = {{ icinga2_server_mariadb_innodb_buffer_pool_size }}
|
||||
innodb_log_file_size = {{ icinga2_server_mariadb_innodb_log_file_size }}
|
||||
table_cache = {{ icinga2_server_mariadb_table_cache }}
|
||||
|
||||
tmp_table_size = {{ icinga2_server_mariadb_tmp_table_size }}
|
||||
max_heap_table_size = {{ icinga2_server_mariadb_max_heap_table_size }}
|
||||
|
||||
query_cache_type = {{ icinga2_server_mariadb_query_cache_type }}
|
||||
query_cache_limit = {{ icinga2_server_mariadb_query_cache_limit }}
|
||||
query_cache_size = {{ icinga2_server_mariadb_query_cache_size }}
|
||||
query_cache_min_res_unit = {{ icinga2_server_mariadb_query_cache_min_res_unit }}
|
||||
|
||||
join_buffer_size = {{ icinga2_server_mariadb_join_buffer_size }}
|
||||
sort_buffer_size = {{ icinga2_server_mariadb_sort_buffer_size }}
|
||||
read_buffer_size = {{ icinga2_server_mariadb_read_buffer_size }}
|
||||
read_rnd_buffer_size = {{ icinga2_server_mariadb_read_rnd_buffer_size }}
|
||||
key_buffer = {{ icinga2_server_mariadb_key_buffer }}
|
||||
|
||||
slow_query_log = {{ icinga2_server_mariadb_slow_query_log }}
|
||||
long_query_time = {{ icinga2_server_mariadb_long_query_time }}
|
||||
log_slow_admin_statements = {{ icinga2_server_mariadb_log_slow_admin_statements }}
|
||||
log_queries_not_using_indexes = {{ icinga2_server_mariadb_log_queries_not_using_indexes }}
|
17
roles/icinga2_server/vars/Debian.yml
Normal file
17
roles/icinga2_server/vars/Debian.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
|
||||
icinga2_server_icinga2_package: icinga2
|
||||
icinga2_server_monitoring_plugins_package: monitoring-plugins
|
||||
icinga2_server_icinga2_service: icinga2
|
||||
icinga2_server_mariadb_server_package: mariadb-server
|
||||
icinga2_server_mariadb_client_package: mariadb-client
|
||||
icinga2_server_mariadb_service: mariadb
|
||||
icinga2_server_mariadb_python_package: python-mysqldb
|
||||
icinga2_server_icinga2_ido_mysql_package: icinga2-ido-mysql
|
||||
icinga2_server_mariadb_icinga_schema_location: "/usr/share/icinga2-ido-mysql/schema/mysql.sql"
|
||||
icinga2_server_icingaweb2_package: icingaweb2
|
||||
icinga2_server_icingacli_package: icingacli
|
||||
icinga2_server_apache_httpd_package: apache2
|
||||
icinga2_server_apache_httpd_service: apache2
|
||||
icinga2_server_user: nagios
|
||||
icinga2_server_group: nagios
|
|
@ -15,6 +15,10 @@ All variables and default values are defined in `defaults/main.yml` :
|
|||
|
||||
# Files location for as208585.net website
|
||||
website_location: "/var/www/html/as208585.net"
|
||||
|
||||
# Web user
|
||||
website_user: "www-data"
|
||||
website_group: "www-data"
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
|
Loading…
Reference in a new issue