💻 Тестовое для ТрейдСофт
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
test-tradesoft/roles/fluentd/tasks/prepare_build.yml

118 lines
4.0 KiB

- name: set container mount dirs
set_fact:
container_config_mount: /fluentd/etc/
- name: set additional exposed ports
set_fact:
container_role_config:
exposed_ports: "{{ fluentd_syslog_port }}"
when: fluentd_syslog_port is defined
- name: set fluentd sections
set_fact:
fluentd_filters:
- __postfix: 'nginx.**'
_type: parser
key_name: message
parse:
_type: json
json_parser: yajl
fluentd_matches:
- __postfix: 'nginx.**'
_type: sql
adapter: mysql2
_log_level: trace
port: 3306
host: "{{ hostvars['mysql']['container_address'] | d(hostvars['mysql']['ansible_host']) }}"
database: "{{ fluentd_database_name }}"
username: "{{ fluentd_database_user }}"
password: "{{ fluentd_database_pass }}"
flush_interval: 1s
table:
table: "{{ fluentd_database_table }}"
column_mapping: "time_iso8601:time_iso8601,\
request_time:request_time,\
upstream_response_time:upstream_response_time,\
remote_addr:remote_addr,\
remote_user:remote_user,\
time_local:time_local,\
request:request,\
status:status,\
body_bytes_sent:body_bytes_sent,\
http_referer:http_referer,\
http_user_agent:http_user_agent,\
geoip_country_code:geoip_country_code"
- block:
- name: initialize ansible mysql connection
include_tasks: init_mysql.yml
- name: create fluentd database
mysql_db:
name: "{{ fluentd_database_name }}"
encoding: utf8
login_host: "{{ hostvars['mysql']['container_address'] | d(hostvars['mysql']['ansible_host']) }}"
login_user: "{{ hostvars['mysql']['mysql_root_username'] | d('root') }}"
login_password: "{{ hostvars['mysql']['mysql_root_password'] | d(omit) }}"
- name: create fluentd database user
mysql_user:
name: "{{ fluentd_database_user }}"
password: "{{ fluentd_database_pass }}"
plugin: mysql_native_password
host: "{{ container_address | d(ansible_host) }}"
priv: "{{ fluentd_database_name }}.*:ALL"
login_host: "{{ hostvars['mysql']['container_address'] | d(hostvars['mysql']['ansible_host']) }}"
login_user: "{{ hostvars['mysql']['mysql_root_username'] | d('root') }}"
login_password: "{{ hostvars['mysql']['mysql_root_password'] | d(omit) }}"
register: result
- name: flush privileges
mysql_query:
query: FLUSH PRIVILEGES
login_host: "{{ hostvars['mysql']['container_address'] | d(hostvars['mysql']['ansible_host']) }}"
login_user: "{{ hostvars['mysql']['mysql_root_username'] | d('root') }}"
login_password: "{{ hostvars['mysql']['mysql_root_password'] | d(omit) }}"
when: result.changed
- name: initialize mysql database
mysql_query:
query: |
CREATE TABLE IF NOT EXISTS {{ fluentd_database_table | quote }} (
time_iso8601 DATETIME,
request_time FLOAT,
upstream_response_time FLOAT,
remote_addr TEXT,
remote_user TEXT,
time_local TEXT,
request TEXT,
status INTEGER,
body_bytes_sent INTEGER,
http_referer TEXT,
http_user_agent TEXT,
geoip_country_code TEXT
);
login_db: "{{ fluentd_database_name }}"
login_host: "{{ hostvars['mysql']['container_address'] | d(hostvars['mysql']['ansible_host']) }}"
login_user: "{{ hostvars['mysql']['mysql_root_username'] | d('root') }}"
login_password: "{{ hostvars['mysql']['mysql_root_password'] | d(omit) }}"
changed_when: no
delegate_to: localhost
- name: template fluentd config
template:
src: fluentd.j2
dest: "{{ (conf_dir, 'fluent.conf') | path_join }}"
lstrip_blocks: yes
force: yes