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.
118 lines
4.0 KiB
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
|
|
|