Initial collection structure

Migrated from legacy playbook repo into Ansible collection format:

Roles (171 total):
- common: 44 roles (fact gathering, SSH setup, utilities)
- configuration: 32 roles (system config, networking, satellite)
- provisioning: 16 roles (VMware, Azure, physical server deployment)
- security: 15 roles (OpenSCAP hardening, certificates, AD integration)
- monitoring: 12 roles (Zabbix, logging agents, metrics)
- networking: 12 roles (DNS, DHCP, network interfaces)
- satellite: 4 roles (Pulp/Satellite management)
- misc: 36 roles (various utilities)

Playbooks (159 total):
- provisioning: 14 playbooks
- azure: 13 playbooks
- configuration: 22 playbooks
- maintenance: 10 playbooks
- security: 10 playbooks
- monitoring: 9 playbooks
- vcenter: 6 playbooks
- networking: 7 playbooks
- misc: 65 playbooks
This commit is contained in:
2026-06-27 21:48:22 +02:00
commit a3b8959ca9
1825 changed files with 79105 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,6 @@
---
# defaults file for cls-install-filebeat
log_url: '"logstash-onprem.sheplog.EXAMPLE-CORP.COM", "clsulogstashi01.DMZ.EXAMPLE.COM", "clsulogstashi03.DMZ.EXAMPLE.COM", "clsulogstashi03.DMZ.EXAMPLE.COM"'
datacenter: onpremise
repo_id: CORP_Elasticsearch_Elasticsearch
# DEFINE log_stream IN INVENTORY

View File

@@ -0,0 +1,2 @@
---
# handlers file for cls-install-filebeat

View File

@@ -0,0 +1,57 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# platforms is a list of platforms, and each platform has a name and a list of versions.
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,78 @@
---
# tasks file for cls-install-filebeat
- import_role:
name: cls-configure-rsyslog
- import_role:
name: enable-repository
when: datacenter == 'onpremise'
vars:
pool_name: "{{ repo_id }}"
- import_role:
name: azure-setup-repositories
when: datacenter == 'azure'
- name: Install filebeat
yum:
name: filebeat
state: latest
- name: Create filebeat user and add to log-readers group
user:
name: filebeat
comment: Filebeat logging user
uid: 151
group: log-readers
- name: Configure filebeat to start as filebeat user
lineinfile:
path: /usr/lib/systemd/system/filebeat.service
regexp: '^User=.*'
insertafter: '^\[Service\]'
line: 'User=filebeat'
- name: Configure filebeat to start with filebeat group
lineinfile:
path: /usr/lib/systemd/system/filebeat.service
regexp: '^Group=.*'
insertafter: '^User=.*'
line: 'Group=log-readers'
- name: Configure filebeat permissions on /etc/filebeat/
file:
state: directory
path: /etc/filebeat
recurse: yes
owner: filebeat
group: log-readers
- name: Configure filebeat permissions on /var/log/filebeat/
file:
state: directory
path: /var/log/filebeat
recurse: yes
owner: filebeat
group: log-readers
- name: Configure filebeat permissions on /var/lib/filebeat/
file:
state: directory
path: /var/lib/filebeat
recurse: yes
owner: filebeat
group: log-readers
- name: Configure filebeat.yml
template:
src: filebeat.yml
dest: /etc/filebeat/filebeat.yml
mode: 0600
owner: filebeat
group: log-readers
- name: Restart filebeat
service:
name: filebeat
state: restarted
daemon_reload: yes # Reloads systemd config before restarting

View File

@@ -0,0 +1,42 @@
filebeat:
modules:
- module: logstash
inputs:
- type: log
tags: ["{{ log_source }}_filebeat"]
paths:
- /var/log/filebeat/filebeat
- type: log
tags: ["{{ log_source }}_messages"]
paths:
- /var/log/cls/messages.log
- type: log
tags: ["{{ log_source }}_audit"]
paths:
- /var/log/cls/audit.log
- type: log
tags: ["{{ log_source }}_cron"]
paths:
- /var/log/cls/cron.log
# enable docker log collection (host var)
# - type: docker
# containers:
# path: "/var/lib/docker/containers"
# stream: "stdout"
# ids:
# - "*"
# json.overwrite_keys: true
# json.keys_under_root: true
# fields_under_root: true
output:
logstash:
hosts: [{{ log_url }}]
enabled: true
logging:
level: info
metrics:
enabled: false

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- cls-install-filebeat

View File

@@ -0,0 +1,2 @@
---
# vars file for cls-install-filebeat

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,22 @@
---
# defaults file for cls-install-fluentbit
datacenter: onpremise
pool_id: Fluentbit
repo_id: CORP_Fluentbit_Fluentbit
# DEFINE agent and log_sources in group_vars/hostname.yml
# agent:
# log_url: 'logstash-onprem.sheplog.EXAMPLE-CORP.COM'
# log_prefix: 'some_org_prefix'
# log_key: 'a key'
# log_sources:
# - streams:
# - name: 'messages'
# prefix: 'some_org_prefix'
# key: 'a key'
# - name: 'audit'
# prefix: 'some_org_prefix'
# key: 'a key'
# - name: 'cron'
# prefix: 'some_org_prefix'
# key: 'a key'

View File

@@ -0,0 +1,2 @@
---
# handlers file for cls-install-fluentbit

View File

@@ -0,0 +1,60 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 2.4
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,75 @@
---
# tasks file for cls-install-fluentbit
- import_role:
name: cls-configure-rsyslog
- import_role:
name: add-subscription-pool
when: datacenter == 'onpremise'
vars:
pool_name: "{{ pool_id }}"
- import_role:
name: enable-repository
when: datacenter == 'onpremise'
vars:
pool_name: "{{ repo_id }}"
- import_role:
name: azure-setup-repositories
when: datacenter == 'azure'
- name: Install td-agent-bit
yum:
name: td-agent-bit
state: latest
- name: Create td-agent-bit user and add to log-readers group
user:
name: td-agent-bit
comment: td-agent-bit logging user
uid: 152
group: log-readers
- name: Configure td-agent-bit to start as td-agent-bit user
lineinfile:
path: /usr/lib/systemd/system/td-agent-bit.service
regexp: '^User=.*'
insertafter: '^\[Service\]'
line: 'User=td-agent-bit'
- name: Configure td-agent-bit to start with td-agent-bit group
lineinfile:
path: /usr/lib/systemd/system/td-agent-bit.service
regexp: '^Group=.*'
insertafter: '^User=.*'
line: 'Group=log-readers'
- name: Configure td-agent-bit permissions on /etc/td-agent-bit/
file:
state: directory
path: /etc/td-agent-bit
recurse: yes
owner: td-agent-bit
group: log-readers
- name: Configure td-agent-bit permissions on /var/log/td-agent-bit/
file:
state: directory
path: /var/log/td-agent-bit
owner: td-agent-bit
group: log-readers
- name: Configure td-agent-bit.conf
template:
src: td-agent-bit.conf
dest: /etc/td-agent-bit/td-agent-bit.conf
mode: 0644
owner: td-agent-bit
group: log-readers
- name: Restart td-agent-bit
service:
name: td-agent-bit
state: restarted
daemon_reload: yes # Reloads systemd config before restarting

View File

@@ -0,0 +1,45 @@
# td-agent-bit config
[SERVICE]
Parsers_File /etc/td-agent-bit/parsers.conf
Log_File /var/log/td-agent-bit/td-agent-bit.log
Log_Level Error
# Agent logs
[INPUT]
Name tail
Path /var/log/td-agent-bit/td-agent-bit.log
db /var/log/td-agent-bit/td-agent-bit.db
Tag {{ agent.log_prefix }}
[OUTPUT]
Name http
Match {{ agent.log_prefix }}
Host {{ agent.log_url }}
Port 443
URI /{{ agent.log_prefix }}/{{ agent.log_key }}
Format json
tls On
tls.verify On
# Log streams
{% for log_source in log_sources %}
{% for stream in log_source.streams %}
[INPUT]
Name tail
Path /var/log/cls/{{ stream.name }}.log
db /var/log/td-agent-bit/{{ stream.prefix }}.db
Tag {{ stream.prefix }}
parser syslog-rfc5424
[OUTPUT]
Name http
Match {{ stream.prefix }}
Host {{ agent.log_url }}
Port 443
URI /{{ stream.prefix }}/{{ stream.key }}
Format json
tls On
tls.verify On
{% endfor %}
{% endfor %}

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- cls-install-fluentbit

View File

@@ -0,0 +1,2 @@
---
# vars file for cls-install-fluentbit

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,7 @@
---
# defaults file for cls-install-fluentd
log_url: logstash-onprem.sheplog.EXAMPLE-CORP.COM
datacenter: onpremise
pool_id: Fluentd
repo_id: CORP_Fluentd_Fluentd
# DEFINE log_source IN INVENTORY

View File

@@ -0,0 +1,2 @@
---
# handlers file for cls-install-fluentd

View File

@@ -0,0 +1,57 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# platforms is a list of platforms, and each platform has a name and a list of versions.
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,45 @@
---
# tasks file for cls-install-fluentd
- import_role:
name: cls-configure-rsyslog
- import_role:
name: add-subscription-pool
when: datacenter == 'onpremise'
vars:
pool_name: "{{ pool_id }}"
- import_role:
name: enable-repository
when: datacenter == 'onpremise'
vars:
pool_name: "{{ repo_id }}"
- import_role:
name: azure-setup-repositories
when: datacenter == 'azure'
- name: Install td-agent
yum:
name: td-agent
state: latest
- name: Add td-agent to log-readers group
user: name=td-agent
group=td-agent
groups=log-readers
append=yes
- name: Configure td-agent.conf
template:
src: td-agent.conf
dest: /etc/td-agent/td-agent.conf
mode: 0644
owner: td-agent
group: td-agent
- name: Restart td-agent
service:
name: td-agent
state: restarted
daemon_reload: yes # Reloads systemd config before restarting

View File

@@ -0,0 +1,49 @@
# Read logs from the cls files
<source>
@type tail
path /var/log/cls/messages.log
pos_file /var/log/td-agent/messages.pos
tag {{ log_source }}_messages
format syslog
</source>
<source>
@type tail
path /var/log/cls/audit.log
pos_file /var/log/td-agent/audit.pos
tag {{ log_source }}_audit
format syslog
</source>
<source>
@type tail
path /var/log/cls/cron.log
pos_file /var/log/td-agent/cron.pos
tag {{ log_source }}_cron
format syslog
</source>
# I don't know what format to use for parsing td-agent's own log files...
#<source>
# @type tail
# path /var/log/td-agent/td-agent.log
# pos_file /var/log/td-agent/td-agent.pos
# tag fluentd
# format syslog
#</source>
# enable docker log collection (host var)
# Insert any custom filter/matching blocks before the ** catch-all
# Catch-all - match anything and send it to the log server in HTTP JSON format
<match **>
@type forward
# Must be set for logstash to ingest fluentd logs
time_as_integer true
<server>
name {{ log_url }}
host {{ log_url }}
port 24224
</server>
</match>

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- cls-install-fluentd

View File

@@ -0,0 +1,2 @@
---
# vars file for cls-install-fluentd

View File

@@ -0,0 +1,29 @@
---
- name: Install Fluendtd Agent
yum:
name: td-agent
state: latest
- name: Fluentd Config
template:
src: td-agent.conf
dest: /etc/td-agent/td-agent.conf
backup: yes
- name: Setup Rsyslog forwarding to local port
lineinfile:
path: /etc/rsyslog.conf
insertafter: "# rsyslog configuration file"
line: "*.* @127.0.0.1:5140"
- name: Restart Fluentd service
service:
name: td-agent
state: restarted
enabled: True
- name: Restart rsyslog service
service:
name: rsyslog
state: restarted
enabled: True

View File

@@ -0,0 +1,27 @@
# Listen to local syslog input
<source>
@type syslog
port 5140
bind 0.0.0.0
tag graylog2.syslog
</source>
<match graylog2.**>
@type copy
# Local copy for redundancy and troubleshooting
<store>
@type file
path /var/log/td-agent/output
</store>
<store>
@type forward
heartbeat_interval 1s
# main server
<server>
name {{ log_server }}
host {{ log_server }}
port 24224
</server>
</store>
</match>

View File

@@ -0,0 +1 @@
log_server: graylog.EXAMPLE-CORP.COM

View File

@@ -0,0 +1,29 @@
---
language: python
python: "2.7"
# Use the new container infrastructure
sudo: false
# Install ansible
addons:
apt:
packages:
- python-pip
install:
# Install ansible
- pip install ansible
# Check ansible version
- ansible --version
# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg
script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@@ -0,0 +1,2 @@
---
# defaults file for install-microsoft-defender

View File

@@ -0,0 +1,449 @@
$ANSIBLE_VAULT;1.1;AES256
65393262623732366462316431623033363961396430616263353365646230333763626165333535
3266373336663066613437623935336333356337333439340a316436323539333761383765613533
39323238333836366463393763313132336336383032333731653330323038616138303436353464
6133336333616538330a343032353865383636653766643631643066393362623538386430383430
35323831396662376439363130376538613462336463343934363837333261636662383037643864
63626539616362366136656465386165646438313663356362396561636535653861613332376261
36303139306634616534313633623531353835346335343264656530393132386662653335646333
39623335326366386637306265313561643162323163636264363239353933366239336361656637
62373038616338326362316538343231623735323835313436626163353533333466653763373166
38333937643937666336613863306263303837333461626363663736623961396365366264633533
31613961386661363838656663323866623636363939653034343066396336613136396139313134
34343832303262316537656535326439663530616131633535323239636261393165343238376434
31363431613661373065636130653264633866346163326239623332363831393337343937313866
63626134653633613731643438396133396539313561383432376664653930616630306466326435
62316566643131376565636665393436613734656565643262663834393232643865616637333865
31353564656463313233303262393836313337663034316535616535636261323038363163636437
32346330363835383164666535646664633336653262323230323036323538303738333966613766
63323662333661653462346434316535313139376465356439653762383135636334653232336164
36363237383261663066316139323634346231343263393365623562613166383631666132306566
63623338616437636161616639353936663332336237366261303334343035653362666139333231
66393531633366646635363135636265613162356362393335666332646633326631656135656639
65316563366436616263663838393563633932316331653636626166353032323864336439633063
36346335346538353030373837356536333935633838636232366366373966663466626233333031
61663461393462373263383265666132333163626533393261666338313337313562656566633565
62313964323162396461366266313037663664356662343565353261353062316264316464666233
34303234373137326161386234653162666162343531663261616661336435333737376538626562
35626666383465343431636434346633323236326639323165336634353063653231616265666434
61363936633338613764656565653930363234336335356664356235393661396332643031373331
35656433316238613437623639343231333765633834383462306563653632663937653138376664
35306338613865613335666538656638356338373063623331323238653535373338306265653738
39613863636130616531346165346339353366393439373263396539353736386331633130653230
32363061353931353834306634356465623739626631383763343464623535666137326230396431
65653331313765326136356535376562623331373136363866383962653861353139316263656563
62643334653261633963356665353662366264373361336335636130366331656430356133626566
35393662396561383435653237616165663762653530363533363437623663643664313961336261
37376331663533633662653431626533663461353332333465666664393737626530623534613633
64303936303135373132613166613364383035643064323466396634336331333538643633616463
63386463313262353363376466663637646366303830316363396336646535323162633466376664
30356330616163336539346137653365366430636438623733316639623761643731363937373634
64343534333330623335373339663863613338356261386439373535383334393730623935323530
63363362396630636432616566373764373232353262636238653634656230356639326230393537
61346662623863343637643864383134303439653765623461326138373534326636343939356634
30363833656432646137326630653230353334303361326666633964646361353964356637373263
35616534663234366639343664656332376463353665656462353535316532363563376538643564
39363365353630396561393138646262333035633264346264653066353932323263396336333032
30393632346633353561643764393162313932393866663335653738663432343463303165303766
64643336396435633032623561393338613266363530316330616163323631356335646231633431
65323031336166336138356531393230626338646466383463613132323433376263653062343035
31656437386237643539613764653638613232633937383035303165366565643735633563396632
62303131653961323933653165663861316437306633613137376366656265646634363337396137
31353239653665643133376331326462366332643334323934396363613634333835326561663165
63656462666434363863316232623733366338363933393036376561396164636533643862633435
31643462316335333030396335303030643064653338326338636461353033303166396665313534
64316664653863643634333234653637343132383461373534343431636562373864633863386235
62633338656261356230343832306461313164363430663333643539333563616537346231336266
33343464623336613462613334656539316565313233633132386462396265653538346461663837
38623161623439663164636531613163653030623338363337383432356635346661353462343462
35366232343361333362613863393463656566393863316163363032346264386365633437326336
30626539363234616237313032636562373738613033346136323133373038666565656364316539
36313234376134643531663836303665653165623731353138616136393138663264373164376131
30363332363166393139366131343830373561663565613039613365386232393032323131633431
66666236656662323866613134613163666236383536643235336635366464313635373834626535
35653233353736653433396131623863626535303533613533376263336435656565333764393063
34613964613165336231326237613462386264303533326265343561656130326263323635336137
35313730613762646539326532366234333033356561356164666637626161393236396439373537
36323439336332396436396435636532363931316333356362616432366531663963363036313630
36326135396664353561613861656633626436343835316264623435393131383935616266323864
37363839393361376336643430376533303762323837613633353630306665616266316562633736
38383362636361306165366366653334653938323565633431383733353335653533346462323439
33303032366566376435636266316337393164346532666634633430386436316662396532313165
61366337653538393361333738356662316166346264313435623166653265396666326531353564
30646364343165653531343432653139656633396632653964363933616339316239626163326362
61343734636635613638313165346236366636393337623935336632323161343038623532633835
62383531633837643833613665393066626630373534633861316636356632393766646638616337
30656332653261383238626239346430633036356166636365393162653535353636666465643835
64396262636466393330303336623331316433353630356563653032356165666561656630393662
32386361316564336536643536663535613730353335306533303062633830643530313338333433
62643138656434636231353533303965383864336435373261386431653163613439613066643734
35346433646531393333663234313233643561643465313531666264646236633437376439343130
64626331643431623963663337643763626637303465343161363332653836656565346130613061
65303136643461323534633862393534333562363165326232343235383461373330306533323738
38613265336262353637663935666233376431613533363932353638306461353434333235613361
31643065346461323362653865393933316265376366346431643937373637343062303966633636
31383662336662633431646164343262313631623031316261313333363935643163626334373830
35366235333537653637316164656533313463656262306435616138626263353434306134346434
61326430343035363633333936663931653363303933633666643037303237306133646263363132
36393035663838303764656264633036353634306336643131643336626163363063356136336233
37376331653734313133656564326232393963353566616166626639623562386666643033616265
64356430636363353735393832346438626239336461626261393661356265343832373666653839
39383565376339343065323237656261653339356533333030363236386666653635636236396236
39393032313837616333386635396231396138633062626439316330656436653439336264623863
63396633373332393139626263653730653334663837396234626330353066353933346537363736
37643965613238636164613061306630323839373166623134343466356131643363323766623234
36326539653437616136316462373030333766376432383562353462623733303238663264363730
39393332656239303038333431313434663432653662613566336562353736663265646464326238
62316461646339333363343361366466636436613538383062656130383534316566623134356538
30306537386138323137356136653565356430363433346463643036373233633665363430663932
62653636663535393962326466306431643739386266643235333138626339303465386339373166
37623033393464633636326262666662363363656164323362396563323066343236383430633764
34346531383131333964393035663264366635366631386631373730646336326462366334316139
62633334393132653930326639656565646336633332353330666365383230666465623335326139
32343162303330393232313037653636373833393136633866643934653663633331363636633136
30346262323731626337626235313836343864316532353262356431333465613232366261303464
33316338353839653634633166623739396535356338303535623539373336373562353632363434
32626330363138633762626462323736366262613466636166396265643434303161366235386163
65663235303363313238326566376534386138366362636465333264336362663462646566313961
32363030313136633136373065363639303335343734646438303638643362363666383866393766
63333434306431613230613635343132373862386638613938666437313963353539313033396361
66383636656634393630366338393861346634656331396664333937363837363430326438386133
35646137326362393462386161383039613534393234303036303534383938383332613832323231
62386435363563653831303063353561316130376665326266316432323735626239663465663533
37613465616530663034623436353335313163366464363931656264373136633739396137666439
33346566636466346465393834303162363135393261646262373561373535623133373537343065
38386661643165633633646330313165356339373064346238616564373766396437613439636234
34336230656661623239653365666433366338626139373462613630326335613830363035326437
34653862356531656239363239663039643934373739626536306239333839346464643932376132
63626537343839626366326336666134333362633435626630666263383539343839333831386666
64653633633666633566323930626538626565643232346639323566373839656465663564653730
35336632653339303830343738393931383362646538646564323932393264343763336166303964
66626464623363626336643832333238373863303966396537663263336162333838313864663539
38326539633434333064333530623834623161623731636562313939336638376435613839633839
66393633353666636265666231396230303464336662303263376333323761353561643339653563
65353936363430333263653739333464323135623362653233323538663037646131336431353531
38626135346265633763633065383530376665376133336163363738383165633538393139616662
62333135653337653234333931373265336166643363376562616364393234623061366538613564
34356431313137376638636366373335316533373937383034306662656337316563313834346439
63306265633137613964353135383930393737623030376131643332633237646235326365656561
34613061313663643263636535653937343235353163366365366361636337353764326237636265
63633663353032663534346336656334613938343763346330323137646239666165613561356634
35353631646562666234643162333735323530383266366231626439366264353132623863623534
63396665636234666561366532306137353536383332363563653062373265643362396435373630
64633234333430346334303166333661623936656135376639356263376335333531356638303864
31636562366130313239643331346464333065333866343639383136656139313837353031386237
62353733663866313461663563316637393962346235623830313262323961303332383366623435
62633561643335643363633831636464306565316139313733656431366538303238653138343539
62396630656565353931323563303732643265636535363736383133633836623635613536623165
30663830356661373965393232356166333165623565636239633731646230626137396664623763
35323633393065656434613362383566616235323734313439616537623230393165623938343130
31356134373832656135333639636130383033626438373637383638393765346636623638623433
30616438663936386262333437393833363339616238313034383936333337313464323063316633
31623935373439373962636335373230316434626261386239653531663031616664323238313735
32393731303931346336316631663564333537373238346137326135613865663035363634623132
31653632323738393933616666366263646137383731346262366262653630313661623239343034
66633238353837363034303337643439363135646530393462663366313232303063326562646536
33323930346662393839666666646362386236643734376237366231326234363766623165343033
64376661343365373234633965636339326330376566393966656666373863396638636465316532
66376632613132303733363063346138313664653538663139303931616339623231623765306233
35343035366363356465396532646337663332663364643231376662653562353631653338396461
35393763613531626339373563386433663039646539626436313461346465333031393937343063
38333330623938633566353964626233383262333335396137313938323466613735386232633338
66653137643330623436643539343265343134663032316463383063333835383031343534346162
32373233323138326266663464646161626661373462396132653366303839343466636665346465
34623261616165386531353431336561656261396338303135626562333430636465366133663461
63663666313362333165383130356539393134623564323362653630653134643230343563613464
38613438623666653461653838386462363630613934376435313735356363343430663530343762
66613634366263646236353130316331366262633637376562613037663639333434613633383634
33663134623139626264336236663139656664353363636532363466306235303233303266663533
62356661306539333461623932626232316237613836626436663836636439653531316361383231
61363039653863333130353531373830663632396464666531386130396263373433303036313362
66396564393733623336396561376133393434663266613162623734633238396661613934663065
62633534356336316164326464393536336534613663623933613039313161323461656235643564
62346562343132633135346630336265353734623436353138313763626632316561373030633134
30326165353464633363313064613733363833303761666334333831383437643461373431666532
39306462633231363064386333323832623630633063306261323938303462316262633039353635
33613932343232373265303461303539643066326535616438333037366564326632326130363665
36366639646133663738333131313833336637666534323830646565643131386232366430373361
61303966316464323763393735353737396632363430623035343135613635343931313964383739
33353861326461663961653234653239303433643839396362363537666132373234393131366638
31323030313539353261613733653165363636313932383363386233623664626133393762356262
35343936323261356234326234343636613135376136316436643738623936376133366665316362
63333663383438306232626134323237356437363433633638616365643636623931346365333132
62633466653737613533303732336134323737313139643764323864393937313962313463356666
38313637313138653361643536323234623139663439363066316635323266393337626138646239
35306462643064313763323362613666313234343933323335346131363137373666623338393563
38306335343431386238636563363030656263333839303231363862613030326634353036643336
65346236396537336235313635313336643761633033643037613834303465306536643534616366
64366535303132626463306666623330376364373339393737346533663964343934306162386537
32663061383631313339343037643262313438613738636638303165646535666563633230643963
30386665326561333635653434666238393539356661626663326265343464646661653062613534
66663030393961303864653639383031313563653831353733303631313636616563356332323965
32316461353734653335306464626164343462336266323231303566666537326330633431616562
66656136633738393534343663306234333535356430663961313636353235616536383637343434
36373835306636326562343666613563663330623238353634626266616433663962353662386136
36323261666231656461376164633964666566316633306430643865613634636166313164393963
37633161343532613166613362656139313431653165633230626161366266633761623135346637
32666634633631623563643731643331656462643739653635613535363331356234646330373934
37613035333630396137326331663738313665383432666262386632323865613461333834613064
66343037343630646562393465326530396564326434666230663435646438366630393537643563
38343761666565383561376165653037333832323665336239613264356161336165616533376531
66353132396361626464613265383331633230643033393937326135636632663162393736626237
33373638393439333134326230656135333135313864333562383537613532353039336561393738
34656162376265353366633138396331663230343366663031633464633364663062366161333539
64626131643236663231393139663433326162363463613037633963376137633662363931373464
65353237333764623036666365393666343032653463366332323730653364626236316562646238
31366435383635616562333364313935623831393634636137666464653762666237366166613433
64336466666231646165353963353866336132356261633131323761653065623634353363656139
30616232316162623330616536333035393538323362313838653662363937346636313632626565
65373836363836353932303666623733353732333932646561336333663334623864303162323733
31643762373732386432393566376538363930333036366537336633323239633965396663613466
30656230663535653061613462646532353937613661326537383435383262333934366230616337
39633839396530333837366234653666323135343664363061336665343033356164343263636366
32633235316365333361363434626365336364393833363336373264633563653062613636353064
36313936353164646233656237366164633964646234376665366532333134366164346362316364
31316334303130376633356634353039636231313466306338636362303331373766663965306565
31323466616233633232353263653333663332353339343764633834343733613339373366376531
61663231363936626139366331646638623436656139643736346635313532393237356633616461
31393039313831636232666235346562343838636432306633613730613936663162636434666663
34623832633438633231303237383838656433623538316439313131633464643066336236396432
30636637643633616235613731623434353231346162353265666562323437333037656161303439
30623465656363386530383466323731653835636436633131663536613738373961633462353434
61303434613934313266303964376562633739373832323461663736363839353338633335653564
34356432306662613436653066353634643839373236633531633534646466306639336635353833
30653866373731613935303136353632613835666633323934613133323732323764383730326162
38643264326263313336646264666163353239346661376632333961306136313632643633666630
38376533376236333930323430376165353966383439396562336661643966656261383937316364
39346363626437333763383738336537373462336461373736303563373062613662363132656161
36383065666630333439646332326465356330373736646434653130313139623661313134313766
37616361663334303862633237383631643935393634633431333332663565396631323761393235
38643830636362383931633334646132373761346536646139393034313430393465366336323262
63356263323830323835396465643431633633636530623739653262626538393661636365363939
62326264623534633230616538636338313261653839643834396664353062343866306462353065
36633031356662383133313564356361373037306163383236343238343337393763306133333662
35646134336665306532386337303235323336626661376464313236613066323235326632613864
30623062626366623766303466303663633733623130393531616137333037373762643633643738
37636435653062396134313565333837313333353262663435313137623363336361666362633234
39396665613763626561383939626462326364373633623436316233333664626138356336363662
61323762393037633533323239656566623562343361386161343764633661656439383635653862
37393937386437396232326566643131613137666537353032383433396530353432313632613363
33386565306238323061633734633939386332373664353662343261313563656263393362626331
39356132313334383564613438356363396361333531666563346431666537316334613937613661
38623930373966616538613861653230663466356562303733306130353163626631373463386238
34613233656535326636646331343766313766663761616633313663663837636333303336363961
61363463306434333732646265346134343132343533353231313038633836363335333430643466
62306539613630383731343637663565613130316135386461383866613235323462393332653466
31326364353164353534373036393231646534373636623666336431336532313632623532303865
33356236613534343737363562303132623761653539306364353131626365616337636333326639
32323635656561306536336132346665316263626432343133353431633266386236626133346137
65363535333664373638636165626535376266303131333832376538306666343738393361323762
62336261366536613236363939613863613063653434316261623865373538636339386436656531
35303361626137643165346536376166353734306234646139623965313531663533616233613266
35613861383538323765646166633536663330373563633361336561383133616139643738323162
35313135343439393035356533626464636165333438343431363464663333613235336230653639
36323339373436666338356533616366653732313036353333656235363934373266636366336363
35653731306261623531633436363463653462343536666663656163616237633632333439326364
64316363646133643435653631346530626239313962623064653939326236313066363832623832
63633237396565386533356364353137363762363839613938323338646563343331633464303862
38306230363962323865623735646564313565313863323861306533356438393339376661303061
63636437636135626262323234353930313839386239356266363233373761303137356366396638
37656534383032666133323763306338633964346537613965613237363337323937383262333937
66376434356134306539386137663937353538396336313433303430633530356264653033373834
34363761666331643431353962633461646361613935366364666466643637633262386233353063
65623834633436323766663835343263343935616530613065303137393739316434333434646230
31393237613761346438333434373635326362613439313332373037626265303063626235633165
63323337313335343566633064613632343738636335613439643833356337346261353237386665
30323165643666353965626338626432306566616332326639623132656664396666343564333633
30326664356337393737636164303332626536373330646234616230323334396162333764623666
30613434306364633833663632613438363564373264376233313734663137633332323933343031
63336234653035336466633865363236626539643366366161316634316436656563393764613366
31306266353231366464643265633062373632343035656430356461656136643666366431353132
32313732666133373534313262383061333566623035366465336466386666666633393933343863
32323631373766386362306333353166646266363437656530646233663935623165323933316432
38333562666361323235353166383163336264623338333937396664666234373465373338623131
31643433663664633665353666363933323931396133323431353061346537353161383964316434
62663266636663353531333336383361633832313066303537313332376164306434636635323961
34383765646139633135366433356539613739353539343938313761376365363231303536323735
32303232613864643565313739343631626237346231633165353637373563396564313238323135
31656137623461623230373731666436663538306665653237383132626633363131396431613334
31656131326337346337393238373637396139656165306139663438646563656161656639343365
65633232336333626539396562393164613265633536303863626433383432313464343562323631
65303531333062616239356335623838326238353038353461343737386238373838363761643362
37303162376538316566303736643037393933643230613861343236346639306137366535353863
39366531326435393231396638666264356465636138336161326163373565623938613663633964
31623663303337303366373138623639396435623462383762326164336364636362666333316138
37656565333561356265363265363238616139336138633262333266376164643934623739373265
34613636313631643165303563353463323861636434656437363166306438376532383636363761
36623764303632393031643839383032623635613039373836336663653064656133366234303133
34613866623237363063336264336435353532336564373439653937316363626436303233323463
65336335313431343133643937376435356631303835346139636537306264616138393332303930
35663532393166323132323563666661623961353034363338616264343438643536303334343039
65626335313335366531663136616361383333666636316136323136353261343465633233383737
36613632393164613039333366363434336234333438386639363761666433636662323530336637
32353231396539623838393834323462663433623936333839336163353861386465333233653335
30383438363139303834626235623832623538376566666266643064303534313839613830616230
33333035316539313535666364323730353362653766653065386366396335313839353762373365
36363838346165623932306134353839326566303539643233633534616230343839636537393833
63653863343839353132666232386539316437633538323035623330656633343634336663396661
63333065616665323133303231303563353132306164393538366230666137323037303666323336
30626134633665363161653033653532323539343937653162323838323532303732363164376231
31346431373830333363653839656462306430363037313636653264386335343063663634326363
38646131313963663234616463646338343633623036646536393462313430313766326634666666
36663762396531323437613364646461626336386165316366333130616635393166373266353733
35646235656164386565386138383536383664623438643766306664613832383039653865303337
37353963666432316463633936656361306562343965626238613435316633393666643238623033
35383365336133383932386637373463663233303534313861613061323334353665373064366634
65363130613561363037626236313930633038633839303663316236323539366532303130623130
32623163653033386462346530373834376465303334333163636562653134623961373963366437
35323665303562653931646436303338383430626564396536306434363436316339376262383865
61393061663936356234343936633338643732626437356566376163393466613336663362363936
61376566323837616432666433386530393231303261316261653334653033663562636239376137
35373039613162323465636131353463666139316233313236643762376335343263636331316339
33383038616233316437346631643037643738663564363564366535363964636264383631333739
34356631643166386462353533326665333733366261386335376234346161633161613066626664
35343065306261383563626430633663336464353361363265613033666461316166346339623064
34366535633932326435653636336234336561373638633835623963303934626562386665383561
66396133386361306430643230636233323539613365353266373166393933303338646162643939
62383338323838353333343936303131623835316337636638656434386363356132376136303235
36653331376433323665653932663638393539396234303462346338636535316165346438626630
61666262376562393233663166356534346165616436643033386135306162663336633762623139
62613831326133346438316137326139653938626363313232623964363164353134326463343961
38633037306164396538326430613837363837623733353662636230323834666632643234313861
64346662386263646134323632386230333864343431333438396634393563636539383832326436
66613735363463656336353064616166663131346630636461366262313765623032383930643065
33343464666232613331386131313231333931303335643164363565386263326239373564363164
37613035623839306537616635623033626332666162613831356631666662303434363031316637
65383932656262383863356337363833353730656465303364303731613365613630323061623131
32316362383465356538386339313930363563353237616564633138306532613339316132306366
34316237626432306165323566343834663163356365643261643162353761383064643434396566
66613366663665656563306639366536643936613764363162373131376563626236323037393362
30653134336332646362303235343735396164326265373432396465316335353335343665336238
64303434646564613031656130653431326139383132316531326366383161383165643166326533
36636537646139346263373438623664343436646162626436313936393330666163656135313862
65666238323065306333306364366563633533333130313436643131333732626635613239373861
33313266396130323736323037613064613535323531313662353439306530363761373663636263
35346438313833323861363664386361663165376339326434383366313664346630633130636530
38306635306533666364353431313034643665333431626536326165306465613264333333313738
64343563646163653034333733626536646162373332366134623433623730356537386230373031
35643737366138626561353631616565366363643262373335343562613736653466393363643834
36346230623231333839356265343638396664363764626133313637373439343266363766396631
35396138623738333138386331343933666333313132376539356264633630623766393332303965
62343531336463643738663664653066376134333264336537356235386562633661336361353963
30313966303364613761633234393461383166653131393033613739396161666263653832346632
38313737306563613535353930633361363931373661346435313063393462386234303037373833
39613661613565663139626331363938336232636264396235386362613734623834363734653534
62393536666236623232326364393338303139633638393036666366646363313766326638363361
63656237353035366632316339393234626361393565653761393761366530393361633232323530
65356535386164373364376663343834633539643466343032663463643936376332363361623634
38333839623439333365303364333132373664316238653830343666623166383364356234393831
38386231323264343230386539393161383436313235633537383936333137363233636661363037
62353434666536333563343737366331323831313436666365333835313163666263376163303137
63656133653731643834633366383938636463366631666535363139323836356366393339373865
39326235363933316637336433383131613364653539646532623934643166653233333336336531
37373565393165323135353639653866396135623438646332663265373066393530613363666564
66636563323638333233303739636535653233333833326230336639616162373061663361363661
32633736383865313837376663393033343266396639623639616237303037303562396665393962
32383436313031333839636537313162643865643837326330323064646534353465383166316237
33393930646563303131383934613731383562326437303262616561303832343739346566303766
66313964656438306563313239303061356134393766623933616161623336313666353533323438
32376438303861643766376233663530623162333663313636653364396637336264653535613631
64656634643836306464616265383561616437323166323932636338653931343361333636333330
62333132613965636365383339313032616165363766333464656264653865363333376662393966
38393662343762343262306530333533343032623532346137623639636166326165326137313564
32663061643563326230363733393435326133386237626331373936373734323263343963363132
39396463323339366266643065316362383530363331626662373138363864323838623034306239
63366531313461393466613562393361363931343539623731386536353335613437633538323236
34623133643230376139613166373032636231353962386233396638396365656263326335363732
37366563663864336361343030306334643736363365323038396265313531376638636566336662
37643761353463633764316634613062393662373035306132363535366230333762626639333066
31316161343633306439306663626130323033366330306136396664363766333135336138303730
35303865616532343935633436656133383061396465346164383633653362326461366632373762
63326430613838633264646461396638353663376634656131613438393431613039396635393266
61333238346531356365313063623234383737633232386334386131636635366365613538666536
62323439623562333430666363313233663032393130396535616431633730323133326331653763
30363966663566326530306439343764303063633261343738343137656164333162323138393465
61323237363333366135623134643439333734333430623763393039653537646332663030623933
36346434373634623036373962623833303863323631346631353939353163363962633239323730
32646638653063616535323461646434663139353131383231623630643831383032663462316330
33643662396631363066653063373331666132653635643463396434373063646330616365623162
36666232316435373733366230373437323661373830373662373837316639626337366465303865
66363761393532663965626430356539663762613066613065643139363963393932343935633339
38343761373338616261343331333365613331333661353936613931353632306563663239636365
38383164636366626235333133353061353535663239626431396438313634613862353161353539
33356165396466646162666361373332646134306632303465326564316239346631393364653961
37313566353863363464653439343635323333376262346364613337333638303166346230623431
63643536646361306636613533313830656561313263346666366138653035386366383961656164
39636239323230316634643163386533363836343730656235303737343935323336333966653030
63333662336434643163636662643338653831633738313439643833666338643430396439333562
35313332326433343362363565613837376366373765666632656366666337323932623435356134
38643031393732626334623963343033613436396631633861333064666437373437666265623363
30666565376661663839643665393961666363323066653831623530366564343238306636353935
32396239613634393366336164313536376662363333653537373437383139313736656633323739
32623765323063303663386336346263303863313433613432383238636535313437633737643933
36316132613231363564306237346466353634613638643630333230643866613137613536336430
38323766633638386565653264626565303736616133396332616564303732376333353663653036
32656533313563633665613332396331366433323537303235333764636437363563346564343336
39396565376461626531633634393937323863323438393663336566383837663866653439656538
61383963326432383533383965356332646134656534306230386265363266636461613139333732
66326364323764363164613065343438353462346339346339633065623533386533346266636633
39303465613233653636373833663737653465646362323036633261666565626133666338353434
63646636303539663361636466306665613838363934393961323264333964636430336130373066
64313331623834313762626636323562393733376537643364626630656237626239313330393835
66383336666263396436666236346330643834376438313464363034323338333664353034366263
64346531313330356262626638363637376533373865643730383266366230663333643732363839
35353435663936366163663133356138383638323164306164626234656335653361383133343662
62393330613333393037656231333764366664316136626263303236326663653137366238303963
66613332333139653862333234323033613861326564353961666636616137363464646330383635
30643536653838376163336464653866316630316434663234363562336365313537356461376165
33646137646162643736636234653462363031306261623064333638656265643735316330663566
35623138626463326361303064356336663436373163666266303839623562633665343861326335
33323336336261356130366136653066653861643938646265363034363766333539313635376237
39393832326532336461326266643031623739366438666634363064333634323566613233653339
37393961366634353137303035663732386538616533353936306361396536313261663064333438
65373435356237366665623338326661653534666431623638376436613661626434303663313036
61613662623731376132373265626363346636643864623764333063373463333866626565303562
36303462303138353864663030666363663532626235643739323338613961636234363962323637
66303231653437653463626364616662633961343437616366393862376434343635386237626463
32623864663838356339356664323833643337623530396137663836656663633061356633363336
66303963303164306161326233323865313038316337343363376661623238386337633265633865
37633830303437363935663735616164373037363963633763633866323334323633373535656531
36623034346138623134393230353430666335386663663861313537616664663737356564376138
62376631626238303861386261346237386664393365643234353438356661656432626564383533
61343638396232636465666237373231623739346638383132383765626266613436313335636266
63326335343066363262306563333966353036363036346636656666666261626239643062356233
61373565636135653061376230376335623065306663653163653839306562323632666531626461
31363139353733306363333836363633356566666335366665663362656264373135643331656466
38376562633039326661643365356239653938323966656665666565306433643539346462316235
63616130376237343930623234313664383636383865626161663730623464613264393038343362
65356234393031363261303333373235376232373137623535366231323737656262633231653561
36666234303938666635316331353361643537333637313138313833373531326563636562326264
39366638303330396461643235633765313938393266626562356130386239613137633336306639
31636534393464613835303035623933336564636138396530346465633161356364383037313234
30613361316431326337633166323032386637666330613432613539616234646434366232613161
33613134363661323239653536383231306437646232666666633737353931396133343132346165
33393435393565633662663433396332356431653464393032346635343338633839626632643830
37646461633037313062333864326165333339636266376538323038393635633033306135623434
32343337346331393833363831626337373431613335313435396166613264613331666232303739
62386433616535323131346662613866666630316536363665636337366436393831643130343566
30393463376134316432316561633963313736303038366163633062333836336639666438613033
38626665626334633063373932623237313238646561393762643836366434636562393662353633
36396361363766393732663762376562653038313561363131316232653539653762636462383965
63373330633539303762616263316461633435633063336435323439303531346165636665333038
37306332663466633962356661323533376139333836353736616333353165363638303535336335
37313264626462393738663739316233653436356463613964323563303033333961386264613231
64366634626231303536666334313432303135613066616234376335396632633536643465626636
34373839333466333461363030653738356332333037393563653664356433613066303031396531
39643035636461396466323261323164376430333866653663656132643062653261616538393634
63373662626665393830656136323136623632343030323833326238333034303638353736333431
36323262383066323865666363633030333361336332326334643532626138623032343666663834
35613736383235343432333136363165353862613265663261323865353139333437636339633263
34343965393331666362633464656136626563663838626339383563376630653865303030353332
35336661353833643864613434386235613265306433643431636361343165316363363839396163
64353733383766383266303061313764323062303564633064383164386364333034393638333665
33646362346466376464646331333235653039373363623162336661623662373663636263623332
64636264653862653464343266616235356238303330633132363638313232393437343935633163
30373866643961623163303264386131326138653931643530656166623564303734383035316263
62343431643263343866633564636536616132353738663232353263333730316565356636323735
64316433646661306336646237373635656632656639623965373439333535383031303235353135
39356566653331303332316238663133343066323462663761343130336563303237346664316162
65643734303937353263

View File

@@ -0,0 +1,2 @@
---
# handlers file for install-microsoft-defender

View File

@@ -0,0 +1,53 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)
min_ansible_version: 2.9
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,40 @@
---
# tasks file for install-microsoft-defender
- name: Setup Microsoft repository (if Azure)
include_role:
name: azure-setup-repositories
tasks_from: microsoft
when: datacenter == 'azure'
- name: Create MDATP directories
file:
path: /etc/opt/microsoft/mdatp/
recurse: true
state: directory
mode: 0755
owner: root
group: root
- name: Register mdatp_onboard.json
template:
src: mdatp_onboard.json
dest: /etc/opt/microsoft/mdatp/mdatp_onboard.json
- name: Install MDATP
yum:
name: mdatp
state: latest
- name: Restart mdatp
service:
name: mdatp
state: restarted
- name: Pause for 5 seconds to allow mdatp to fully start
pause:
seconds: 5
- name: Set PUA mode to block
command: mdatp threat policy set --type potentially_unwanted_application --action block
failed_when: False

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- install-microsoft-defender

View File

@@ -0,0 +1,2 @@
---
# vars file for install-microsoft-defender

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,2 @@
---
# defaults file for oms-logrotate-fix

View File

@@ -0,0 +1,2 @@
---
# handlers file for oms-logrotate-fix

View File

@@ -0,0 +1,60 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 2.4
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,9 @@
---
- name: Run semanage on /var/opt/microsoft/omsconfig/log
command: semanage fcontext -a -t var_log_t '/var/opt/microsoft/omsconfig/log(/.*)?'
- name: Run semanage on /var/opt/microsoft/omsconfig/log
command: semanage fcontext -a -t var_log_t /var/opt/microsoft/omsagent/936b007d-ed8b-473b-8ce8-271c9a6353ce/log/omsagent.log
- name: Run restorecon on /var/opt/microsoft/omsconfig
command: restorecon -R -v /var/opt/microsoft/*

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- oms-logrotate-fix

View File

@@ -0,0 +1,2 @@
---
# vars file for oms-logrotate-fix

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@@ -0,0 +1,12 @@
---
# defaults file for passbolt-install
ssl_certificate_path: "/etc/ssl/certs/passbolt_certificate.crt"
ssl_privkey_path: "/etc/ssl/certs/passbolt_private.key"
passbolt_hostname: "EXAMPLE-CORP.COM"
passbolt_certificate: !vault |
$ANSIBLE_VAULT;1.2.6;AES256
REDACTED_FOR_PUBLIC_SHARING
passbolt_private_key: !vault |
$ANSIBLE_VAULT;1.2.6;AES256
REDACTED_FOR_PUBLIC_SHARING

View File

@@ -0,0 +1,5 @@
---
- name: Restart nginx
service:
name: nginx
state: restarted

View File

@@ -0,0 +1,52 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)
min_ansible_version: 2.1
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,95 @@
---
# Step 1: Enable repositories
- name: Enable a RHSM repository
community.general.rhsm_repository:
name:
- CORP_Passbolt_Passbolt_PRO_for_RHEL
- CORP_EPEL_EPEL_for_RHEL9
state: enabled
# Step 2: Set SELinux booleans for SSO and GPG
- name: Configure SELinux for Passbolt
command: "{{ item }}"
loop:
- setsebool -P httpd_can_network_connect 1
- setsebool -P httpd_use_gpg=on
- setsebool -P gpg_web_anon_write=on
- semanage permissive -a gpg_web_t
# Step 3: Firewall configuration
- name: Ensure mysql is open in the firewall
ansible.posix.firewalld:
service: mysql
zone: public
permanent: yes
state: enabled
# Step 3.5: restart firewalld:
- name: Reload firewalld
ansible.buildin.service:
name: firewalld
state: reloaded
# Step 4: Install Passbolt server
- name: Install Passbolt Pro server
ansible.builtin.dnf:
name: passbolt-pro-server
state: present
# Step 5: Copy SSL certificate and private key
- name: Copy SSL certificate
ansible.builtin.copy:
content: " {{passbolt_certificate }} "
dest: "{{ ssl_certificate_path }}"
mode: '0644'
# Step 5.5: Copy SSL certificate and private key
- name: Copy SSL key
ansible.builtin.copy:
content: " {{passbolt_private_key }} "
dest: "{{ ssl_privkey_path }}"
mode: '0600'
# Step 6: Run passbolt-configure (expect script)
- name: Configure Passbolt server
expect:
command: /usr/local/bin/passbolt-configure
responses:
'Do you want to configure a local mariadb server on this machine?': 'no'
'Install Haveged ?': 'yes'
'Hostname:': "{{ passbolt_hostname }}"
'Setting up SSL...': 'manual'
'Enter the path to the SSL certificate:': "{{ ssl_certificate_path }}"
'Enter the path to the SSL privkey:': "{{ ssl_privkey_path }}"
when: ansible_os_family == "RedHat"
# Step 7: Copy Passbolt custom PHP config
- name: Copy Passbolt configuration file
ansible.builtin.template:
src: passbolt_config.php.j2
dest: /etc/passbolt/config/passbolt.php
mode: '0644'
# Copy the Nginx SSL configuration file
- name: Deploy Passbolt Nginx SSL configuration
ansible.builtin.template:
src: passbolt_ssl.conf.j2
dest: /etc/nginx/conf.d/passbolt_ssl.conf
mode: '0644'
notify:
- Restart nginx
# Step 8: Ensure services are running
- name: Ensure services are running
ansible.builtin.service:
name: nginx
state: started
enabled: yes
# Step 9: Ensure services are running
- name: Ensure services are running
ansible.builtin.service:
name: php-fpm
state: started
enabled: yes

View File

@@ -0,0 +1,65 @@
<?php
/**
* Passbolt ~ Open source password manager for teams
* Copyright (c) Passbolt SA (https://www.passbolt.com)
*
* Licensed under GNU Affero General Public License version 3 of the or any later version.
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
* @link https://www.passbolt.com Passbolt(tm)
* @since 2.0.0
*/
/**
* PASSBOLT CONFIGURATION FILE
*
* This is a generated configuration file, which was generated by the passbolt web installer.
*
* To see all available options, you can refer to the default.php file, or replace this file
* by a copy of passbolt.default.php
* Do not modify default.php or you may break your upgrade process.
*
* Read more about how to install passbolt: https://www.passbolt.com/help/tech/install
* Any issue, check out our FAQ: https://www.passbolt.com/faq
* An installation issue? Ask for help to the community: https://community.passbolt.com/
*/
return [
'App' => [
// A base URL to use for absolute links.
// The url where the passbolt instance will be reachable to your end users.
// This information is need to render images in emails for example
'fullBaseUrl' => 'https://pbolt.EXAMPLE-CORP.COM',
],
// Database configuration.
'Datasources' => [
'default' => [
'driver' => 'Cake\\Database\\Driver\\Mysql',
'host' => 'pboltdba.EXAMPLE-CORP.COM',
'port' => '3306',
'username' => 'passbolt',
'password' => 'VRoebHLNo758XnDY',
'database' => 'passbolt',
],
],
'passbolt' => [
// GPG Configuration.
// The keyring must be owned and accessible by the webserver user.
// Example: www-data user on Debian
'gpg' => [
// Main server key.
'serverKey' => [
// Server private key fingerprint.
'fingerprint' => 'FCD77CEA617947EA29D1D65B4D3A0C5C77C59A8A',
'public' => CONFIG . DS . 'gpg' . DS . 'serverkey.asc',
'private' => CONFIG . DS . 'gpg' . DS . 'serverkey_private.asc',
],
],
'ssl' => [
'force' => true,
]
],
];

View File

@@ -0,0 +1,40 @@
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name pbolt.EXAMPLE-CORP.COM;
client_body_buffer_size 100K;
client_header_buffer_size 1k;
client_max_body_size 5M;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
ssl_certificate /etc/ssl/certs/passbolt_certificate.crt;
ssl_certificate_key /etc/ssl/certs/passbolt_private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_tickets off;
root /usr/share/php/passbolt/webroot;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_split_path_info ^(.+\.php)(.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_param PHP_VALUE "upload_max_filesize=5M \n post_max_size=5M";
}
}

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- passbolt-install

View File

@@ -0,0 +1,2 @@
---
# vars file for passbolt-install

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@@ -0,0 +1,2 @@
---
# defaults file for setup-insight-agent

View File

@@ -0,0 +1,2 @@
---
# handlers file for setup-insight-agent

View File

@@ -0,0 +1,60 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 2.4
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,9 @@
---
# tasks file for setup-insight-agent
- name: install insight agent
yum:
name: insights-client
state: latest
- name: Register insight-client
command: insights-client --register

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- setup-insight-agent

View File

@@ -0,0 +1,2 @@
---
# vars file for setup-insight-agent

View File

@@ -0,0 +1,2 @@
---
# defaults file for zabbix-agent-disable

View File

@@ -0,0 +1,18 @@
---
# tasks file for zabbix-agent-disable
- name: Create a new host or update an existing host's info
vars:
ansible_network_os: community.zabbix.zabbix
ansible_connection: httpapi
ansible_httpapi_port: 443
ansible_httpapi_use_ssl: true
ansible_httpapi_validate_certs: false
ansible_zabbix_url_path: /
ansible_zabbix_auth_key: ad7d2b1e80fa86567d08ac18f4737aabbfd3ab7e91faf205f39a8e7b55b8d7a8
ansible_host: zabbixprd.EXAMPLE-CORP.COM
ignore_errors: true
delegate_to: zbx-web-01.EXAMPLE-CORP.COM
community.zabbix.zabbix_host:
host_name: "{{ inventory_hostname }}"
status: disabled

View File

@@ -0,0 +1,2 @@
---
# vars file for zabbix-agent-disable

View File

@@ -0,0 +1,44 @@
Role Name
=========
This role will install and configure the Zabbix agent on a remote host and create a host profile on the Zabbix server
Requirements
------------
python >= 2.6
zabbix-api >= 0.5.3
Role Variables
--------------
zabbix_server=z23zabproxy.DMZ23.EXAMPLE.COM
zabbix_proxy=z23zabproxy.DMZ23.EXAMPLE.COM # If installing in dmz23 or dmz24, make sure to set a proxy server
zabbix_host_groups=DMZ23
zabbix_link_template="Linux CORP 7.5"
Dependencies
------------
N/A
Example Playbook
----------------
- hosts: all
become: yes
become_method: sudo
roles:
- determine-jump-host
- check-dns-name
- zabbix-agent
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,8 @@
---
# defaults file for zabbix-agent
datacenter: onpremise
pool_id: 4028218b5dd07042015e4d1564c10de3
tapi_zabbix_host_groups: Default
zabbix_link_template: UFST - Linux - OS
zabbix_overwrite_psk: False

View File

@@ -0,0 +1,2 @@
---
# handlers file for zabbix-agent-remove

View File

@@ -0,0 +1,57 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# platforms is a list of platforms, and each platform has a name and a list of versions.
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,13 @@
#- name: Install Zabbix agent
# yum:
# name: zabbix-agent
# state: installed
# enablerepo: CORP_Zabbix_Zabbixrepo
# when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == '7'
#- name: Install Zabbix agent
# yum:
# name: zabbix-agent
# state: installed
# enablerepo: CORP_Zabbix_RHEL_8_Zabbix_RHEL_8
# when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == '8'

View File

@@ -0,0 +1,47 @@
---
# tasks file for zabbix-agent
- include_vars: credentials.yml
- include_tasks: ccta.yml
when: datacenter == "onpremise" or datacenter == "onpremise (fysisk)"
- name: Create a new host or update an existing host's info
vars:
ansible_network_os: community.zabbix.zabbix
ansible_connection: httpapi
ansible_httpapi_port: 443
ansible_httpapi_use_ssl: true
ansible_httpapi_validate_certs: false
ansible_zabbix_url_path: /
ansible_zabbix_auth_key: ad7d2b1e80fa86567d08ac18f4737aabbfd3ab7e91faf205f39a8e7b55b8d7a8
ansible_host: zabbixprd.EXAMPLE-CORP.COM
ignore_errors: true
delegate_to: zbx-web-01.EXAMPLE-CORP.COM
connection: local
zabbix_host:
# server_url: https://{{ zabbix_main_server }}
# http_login_user: "{{ zabbix_user }}"
# http_login_password: "{{ zabbix_password }}"
host_name: "{{ inventory_hostname }}"
visible_name: "{{ inventory_hostname }}"
host_groups:
- "{{ tapi_zabbix_host_groups }}"
link_templates:
- "{{ zabbix_link_template }}"
status: disabled
state: absent
# inventory_mode: automatic
# interfaces:
# - type: 1
# main: 1
# useip: 1
# ip: "{{ ansible_default_ipv4.address }}"
# dns: "{{ inventory_hostname }}"
# port: "{{ zabbix_port | default(10050) }}"
# tls_connect: 2
# tls_accept: 2
# tls_psk_identity: "PSK-{{ inventory_hostname }}"
# tls_psk: "{{ zabbix_psk.stdout }}"
# proxy: "{{ zabbix_proxy | default(omit) }}"
become: false

View File

@@ -0,0 +1,55 @@
---
# tasks file for zabbix-agent
- name: Set facts for CCTA onpremise server
set_fact:
zabbix_server: zabproxy01.EXAMPLE-CORP.COM
zabbix_proxy: zabproxy01.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'onpremise' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for CCTA onpremise physical server
set_fact:
zabbix_server: zabproxy01.EXAMPLE-CORP.COM
zabbix_proxy: zabproxy01.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'onpremise (fysisk)' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for DMZ23 onpremise server
set_fact:
zabbix_server: z23zabproxy.DMZ23.EXAMPLE.COM
zabbix_proxy: z23zabproxy.DMZ23.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'onpremise' and dc_domain == 'DMZ23.EXAMPLE.COM'
- name: Set facts for DMZ24 onpremise server
set_fact:
zabbix_server: z24zabproxy.DMZ.EXAMPLE.COM
zabbix_proxy: z24zabproxy.DMZ.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'onpremise' and dc_domain == 'DMZ.EXAMPLE.COM'
- name: Set facts for CCTA azure server
set_fact:
zabbix_server: zabproxy02.EXAMPLE-CORP.COM
zabbix_proxy: zabproxy02.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'azure' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for DMZ23 azure server
set_fact:
zabbix_server: zabproxy03.DMZ23.EXAMPLE.COM
zabbix_proxy: zabproxy03.DMZ23.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'azure' and dc_domain == 'DMZ23.EXAMPLE.COM'
- name: Set facts for DMZ24 azure server
set_fact:
zabbix_server: zabproxy04.DMZ.EXAMPLE.COM
zabbix_proxy: zabproxy04.DMZ.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
when: datacenter == 'azure' and dc_domain == 'DMZ.EXAMPLE.COM'
- debug:
msg: "zabbix_server: {{ zabbix_server }}, zabbix_proxy: {{ zabbix_proxy }}, zabbix_link_template: {{ zabbix_link_template }}"

View File

@@ -0,0 +1,9 @@
ServerActive={{ zabbix_server }}
Server={{ zabbix_server }}
Hostname={{ inventory_hostname }}
# Password encryption
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK-{{ inventory_hostname }}
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- zabbix-agent

View File

@@ -0,0 +1,4 @@
---
# vars file for zabbix-agent
zabbix_main_server: zabbixprd.EXAMPLE-CORP.COM

View File

@@ -0,0 +1,44 @@
Role Name
=========
This role will install and configure the Zabbix agent on a remote host and create a host profile on the Zabbix server
Requirements
------------
python >= 2.6
zabbix-api >= 0.5.3
Role Variables
--------------
zabbix_server=z23zabproxy.DMZ23.EXAMPLE.COM
zabbix_proxy=z23zabproxy.DMZ23.EXAMPLE.COM # If installing in dmz23 or dmz24, make sure to set a proxy server
zabbix_host_groups=DMZ23
zabbix_link_template="Linux CORP 7.5"
Dependencies
------------
N/A
Example Playbook
----------------
- hosts: all
become: yes
become_method: sudo
roles:
- determine-jump-host
- check-dns-name
- zabbix-agent
License
-------
BSD
Author Information
------------------
Created by the UFST Linux team

View File

@@ -0,0 +1,8 @@
---
# defaults file for zabbix-agent
datacenter: onpremise
pool_id: 4028218b5dd07042015e4d1564c10de3
tapi_zabbix_host_groups: Default
zabbix_link_template: UFST - Linux - OS
zabbix_overwrite_psk: False

View File

@@ -0,0 +1,2 @@
---
# handlers file for zabbix-agent

View File

@@ -0,0 +1,57 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# platforms is a list of platforms, and each platform has a name and a list of versions.
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,22 @@
- name: Install Zabbix agent
yum:
name: zabbix-agent
state: installed
enablerepo: CORP_Zabbix_Zabbix_7_for_RHEL7
when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == '7'
- name: Install Zabbix agent
yum:
name: zabbix-agent
state: installed
enablerepo: CORP_Zabbix_Zabbix_7_for_RHEL8
disablerepo: CORP_EPEL_EPEL_for_RHEL8
when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == '8'
- name: Install Zabbix agent
yum:
name: zabbix-agent
state: installed
enablerepo: CORP_Zabbix_Zabbix_7_for_RHEL9
disablerepo: CORP_EPEL_EPEL_for_RHEL9
when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == '9'

View File

@@ -0,0 +1,105 @@
---
# tasks file for zabbix-agent
- include_vars: credentials.yml
# We'd like to fall back on defaults facts when possible
# to reduce number of variables required by the user
- include_tasks: set_facts.yml
when: zabbix_server is undefined
- name: Uninstall Zabbix agent
yum:
name: zabbix-agent
state: absent
- include_tasks: ccta.yml
when: datacenter == "onpremise" or datacenter == "onpremise (fysisk)"
- name: Install Zabbix agent
yum:
name: zabbix-agent
state: installed
when: datacenter == "azure"
- name: Delete Zabbix psk
file:
path: /etc/zabbix/zabbix_agentd.psk
state: absent
when: zabbix_overwrite_psk|bool
- name: Generate Zabbix psk
command: openssl rand -hex -out /etc/zabbix/zabbix_agentd.psk 32 creates=/etc/zabbix/zabbix_agentd.psk
- name: Change the owner of zabbix_agentd.psk to zabbix
file:
path: /etc/zabbix/zabbix_agentd.psk
owner: zabbix
- name: Register Zabbix agent psk
command: cat /etc/zabbix/zabbix_agentd.psk
register: zabbix_psk
- name: Configure Zabbix agent
template:
src: zabbix-agent.conf
dest: /etc/zabbix/zabbix_agentd.d/agent.conf
- name: Ensure that /etc/zabbix/zabbix_agentd.d is included in conf
ini_file:
path: /etc/zabbix_agentd.conf
option: Include
value: /etc/zabbix/zabbix_agentd.d/*.conf
backup: true
- name: Create a new host or update an existing host's info
vars:
ansible_network_os: community.zabbix.zabbix
ansible_connection: httpapi
ansible_httpapi_port: 443
ansible_httpapi_use_ssl: true
ansible_httpapi_validate_certs: false
ansible_zabbix_url_path: /
ansible_zabbix_auth_key: ad7d2b1e80fa86567d08ac18f4737aabbfd3ab7e91faf205f39a8e7b55b8d7a8
ansible_host: zabbixprd.EXAMPLE-CORP.COM
ignore_errors: true
delegate_to: zbx-web-01.EXAMPLE-CORP.COM
connection: local
community.zabbix.zabbix_host:
host_name: "{{ inventory_hostname }}"
visible_name: "{{ inventory_hostname }}"
host_groups:
- "{{ tapi_zabbix_host_groups }}"
link_templates:
- "{{ zabbix_link_template }}"
status: enabled
state: present
inventory_mode: automatic
interfaces:
- type: 1
main: 1
useip: 1
ip: "{{ ansible_default_ipv4.address }}"
dns: "{{ inventory_hostname }}"
port: "{{ zabbix_port | default(10050) }}"
tls_connect: 2
tls_accept: 2
tls_psk_identity: "PSK-{{ inventory_hostname }}"
tls_psk: "{{ zabbix_psk.stdout }}"
proxy: "{{ zabbix_proxy | default(omit) }}"
proxy_group: "{{ zabbix_proxy_group }}"
tags:
- tag: SystemID
value: "{{ tapi_system_id }}"
- tag: SystemName
value: "{{ tapi_systemname }}"
become: false
- name: Enable Zabbix on Reboot
service:
name: zabbix-agent
enabled: true
- name: Restart Zabbix
service:
name: zabbix-agent
state: restarted

View File

@@ -0,0 +1,96 @@
---
# tasks file for zabbix-agent
- name: Set facts for CCTA onpremise server
set_fact:
zabbix_server: zabbixprd.EXAMPLE-CORP.COM
zabbix_proxy: zbx-proxy-01.EXAMPLE-CORP.COM
zabbix_proxy_active_server: zbx-proxy-01.EXAMPLE-CORP.COM:10051,zbx-proxy-02.EXAMPLE-CORP.COM:10051
zabbix_proxy_server: zbx-proxy-01.EXAMPLE-CORP.COM,zbx-proxy-02.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group CCTA
when: datacenter == 'onpremise' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for CCTA onpremise physical server
set_fact:
zabbix_server: zabbixprd.EXAMPLE-CORP.COM
zabbix_proxy: zbx-proxy-01.EXAMPLE-CORP.COM
zabbix_proxy_active_server: zbx-proxy-01.EXAMPLE-CORP.COM:10051,zbx-proxy-02.EXAMPLE-CORP.COM:10051
zabbix_proxy_server: zbx-proxy-01.EXAMPLE-CORP.COM,zbx-proxy-02.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group CCTA
when: datacenter == 'onpremise (fysisk)' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for DMZ23 onpremise server
set_fact:
zabbix_server: zbx-proxy-01.DMZ23.EXAMPLE.COM
zabbix_proxy: zbx-proxy-01.DMZ23.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ23.EXAMPLE.COM:10051,zbx-proxy-02.DMZ23.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ23.EXAMPLE.COM,zbx-proxy-02.DMZ23.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ23
when: datacenter == 'onpremise' and dc_domain == 'DMZ23.EXAMPLE.COM'
- name: Set facts for DMZ23 onpremise physical server
set_fact:
zabbix_server: zbx-proxy-01.DMZ23.EXAMPLE.COM
zabbix_proxy: zbx-proxy-01.DMZ23.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ23.EXAMPLE.COM:10051,zbx-proxy-02.DMZ23.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ23.EXAMPLE.COM,zbx-proxy-02.DMZ23.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ23
when: datacenter == 'onpremise (fysisk)' and dc_domain == 'DMZ23.EXAMPLE.COM'
- name: Set facts for DMZ24 onpremise server
set_fact:
zabbix_server: zbx-proxy-01.DMZ.EXAMPLE.COM
zabbix_proxy: zbx-proxy-01.DMZ.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ.EXAMPLE.COM:10051,zbx-proxy-02.DMZ.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ.EXAMPLE.COM,zbx-proxy-02.DMZ.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ24
when: datacenter == 'onpremise' and dc_domain == 'DMZ.EXAMPLE.COM'
- name: Set facts for DMZ24 onpremise physcal server
set_fact:
zabbix_server: zbx-proxy-01.DMZ.EXAMPLE.COM
zabbix_proxy: zbx-proxy-01.DMZ.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ.EXAMPLE.COM:10051,zbx-proxy-02.DMZ.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ.EXAMPLE.COM,zbx-proxy-02.DMZ.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ24
when: datacenter == 'onpremise (fysisk)' and dc_domain == 'DMZ.EXAMPLE.COM'
- name: Set facts for CCTA azure server
set_fact:
zabbix_server: zabbixprd.EXAMPLE-CORP.COM
zabbix_proxy: zbx-proxy-02.EXAMPLE-CORP.COM
zabbix_proxy_active_server: zbx-proxy-01.EXAMPLE-CORP.COM:10051,zbx-proxy-02.EXAMPLE-CORP.COM:10051
zabbix_proxy_server: zbx-proxy-01.EXAMPLE-CORP.COM,zbx-proxy-02.EXAMPLE-CORP.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group CCTA
when: datacenter == 'azure' and dc_domain == 'EXAMPLE-CORP.COM'
- name: Set facts for DMZ23 azure server
set_fact:
zabbix_server: zbx-proxy-02.DMZ23.EXAMPLE.COM
zabbix_proxy: zbx-proxy-02.DMZ23.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ23.EXAMPLE.COM:10051,zbx-proxy-02.DMZ23.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ23.EXAMPLE.COM,zbx-proxy-02.DMZ23.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ23
when: datacenter == 'azure' and dc_domain == 'DMZ23.EXAMPLE.COM'
- name: Set facts for DMZ24 azure server
set_fact:
zabbix_server: zbx-proxy-02.DMZ.EXAMPLE.COM
zabbix_proxy: zbx-proxy-02.DMZ.EXAMPLE.COM
zabbix_proxy_active_server: zbx-proxy-01.DMZ.EXAMPLE.COM:10051,zbx-proxy-02.DMZ.EXAMPLE.COM:10051
zabbix_proxy_server: zbx-proxy-01.DMZ.EXAMPLE.COM,zbx-proxy-02.DMZ.EXAMPLE.COM
zabbix_link_template: "{{ zabbix_link_template | default('UFST - Linux OS') }}"
zabbix_proxy_group: Zabbix proxy group DMZ24
when: datacenter == 'azure' and dc_domain == 'DMZ.EXAMPLE.COM'
- debug:
msg: "zabbix_server: {{ zabbix_server }}, zabbix_proxy: {{ zabbix_proxy }}, zabbix_link_template: {{ zabbix_link_template }}"

View File

@@ -0,0 +1,9 @@
ServerActive={{ zabbix_proxy_active_server }}
Server={{ zabbix_proxy_server }}
Hostname={{ inventory_hostname }}
# Password encryption
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK-{{ inventory_hostname }}
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

View File

@@ -0,0 +1,2 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- zabbix-agent

View File

@@ -0,0 +1,4 @@
---
# vars file for zabbix-agent
zabbix_main_server: zabbixprd.EXAMPLE-CORP.COM

View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@@ -0,0 +1,3 @@
---
dbname: zabbix
dbuser: zabbixuser

View File

@@ -0,0 +1,2 @@
---
# handlers file for zabbix-proxy

View File

@@ -0,0 +1,60 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 2.4
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@@ -0,0 +1,103 @@
---
# Database
- name: Install MariaDB Server
yum:
name:
- mariadb
- mariadb-server
- python2-PyMySQL
state: latest
- name: Enable MariaDB server on start
systemd:
state: started
name: mariadb
enabled: yes
- name: Sets the root SQL password
mysql_user:
user: root
password: "{{ mysql_root_password }}"
host: localhost
ignore_errors: yes
- name: Deletes anonymous MySQL server user for ansible_fqdn
mysql_user:
login_user: root
login_password: '{{ mysql_root_password }}'
user: ""
host: "{{ ansible_fqdn }}"
state: absent
- name: Deletes anonymous MySQL server user for localhost
mysql_user:
login_user: root
login_password: '{{ mysql_root_password }}'
user: ""
state: absent
- name: Secures the MySQL root user for localhost domain (localhost)
mysql_user:
user: "root"
login_password: '{{ mysql_root_password }}'
password: "{{ mysql_root_password }}"
host: "localhost"
- name: Secures the MySQL root user for server_hostname domain
mysql_user:
user: "root"
login_password: '{{ mysql_root_password }}'
password: "{{ mysql_root_password }}"
host: "{{ ansible_fqdn }}"
- name: Create a new zabbix database
mysql_db:
login_password: '{{ mysql_root_password }}'
name: '{{ dbname }}'
state: present
- name: Create Zabbix DB User
mysql_user:
login_password: '{{ mysql_root_password }}'
name: '{{ dbuser }}'
password: '{{ dbpassword }}'
priv: '*.*:ALL,GRANT'
state: present
# Zabbix Proxy init
- name: Install zabbix-proxy-mysql packages
yum:
name: zabbix-proxy-mysql
state: latest
- name: Setting up config
template:
src: zabbix_proxy.j2
dest: /etc/zabbix/zabbix_proxy.conf
owner: zabbix
group: zabbix
- name: Check if schema file is zipped
stat:
path: /usr/share/doc/zabbix-proxy-mysql-4.0.3/schema.sql.gz
register: stat_result
- name: Unzip DB Scheme
command: "/bin/gunzip /usr/share/doc/zabbix-proxy-mysql-4.0.3/schema.sql.gz"
when: stat_result.stat.exists == True
- name: Import DB Scheme to Mariadb
mysql_db:
name: '{{ dbname }}'
state: import
login_user: '{{ dbuser }}'
login_password: '{{ dbpassword }}'
target: /usr/share/doc/zabbix-proxy-mysql-4.0.3/schema.sql
- name: Enable zabbix-proxy-server on start
systemd:
state: started
name: zabbix-proxy
enabled: yes

View File

@@ -0,0 +1,726 @@
# This is a configuration file for Zabbix proxy daemon
# To get more information about Zabbix, visit http://www.zabbix.com
############ GENERAL PARAMETERS #################
### Option: ProxyMode
# Proxy operating mode.
# 0 - proxy in the active mode
# 1 - proxy in the passive mode
#
# Mandatory: no
# Default:
ProxyMode=0
### Option: Server
# If ProxyMode is set to active mode:
# IP address or DNS name of Zabbix server to get configuration data from and send data to.
# If ProxyMode is set to passive mode:
# List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix server.
# Incoming connections will be accepted only from the addresses listed here.
# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
# and '::/0' will allow any IPv4 or IPv6 address.
# '0.0.0.0/0' can be used to allow any IPv4 address.
# Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes
# Default:
# Server=
Server=172.20.242.250
### Option: ServerPort
# Port of Zabbix trapper on Zabbix server.
# For a proxy in the passive mode this parameter will be ignored.
#
# Mandatory: no
# Range: 1024-32767
# Default:
ServerPort=10051
### Option: Hostname
# Unique, case sensitive Proxy name. Make sure the Proxy name is known to the server!
# Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname={{ ansible_fqdn }}
### Option: HostnameItem
# Item used for generating Hostname if it is undefined.
# Ignored if Hostname is defined.
#
# Mandatory: no
# Default:
# HostnameItem=system.hostname
### Option: ListenPort
# Listen port for trapper.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# ListenPort=10051
### Option: SourceIP
# Source IP address for outgoing connections.
#
# Mandatory: no
# Default:
# SourceIP=
### Option: LogType
# Specifies where log messages are written to:
# system - syslog
# file - file specified with LogFile parameter
# console - standard output
#
# Mandatory: no
# Default:
# LogType=file
### Option: LogFile
# Log file name for LogType 'file' parameter.
#
# Mandatory: yes, if LogType is set to file, otherwise no
# Default:
# LogFile=
LogFile=/var/log/zabbix/zabbix_proxy.log
### Option: LogFileSize
# Maximum size of log file in MB.
# 0 - disable automatic log rotation.
#
# Mandatory: no
# Range: 0-1024
# Default:
# LogFileSize=1
LogFileSize=1
### Option: DebugLevel
# Specifies debug level:
# 0 - basic information about starting and stopping of Zabbix processes
# 1 - critical information
# 2 - error information
# 3 - warnings
# 4 - for debugging (produces lots of information)
# 5 - extended debugging (produces even more information)
#
# Mandatory: no
# Range: 0-5
# Default:
DebugLevel=3
### Option: EnableRemoteCommands
# Whether remote commands from Zabbix server are allowed.
# 0 - not allowed
# 1 - allowed
#
# Mandatory: no
# Default:
EnableRemoteCommands=0
### Option: LogRemoteCommands
# Enable logging of executed shell commands as warnings.
# 0 - disabled
# 1 - enabled
#
# Mandatory: no
# Default:
# LogRemoteCommands=0
### Option: PidFile
# Name of PID file.
#
# Mandatory: no
# Default:
# PidFile=/tmp/zabbix_proxy.pid
PidFile=/var/run/zabbix/zabbix_proxy.pid
### Option: SocketDir
# IPC socket directory.
# Directory to store IPC sockets used by internal Zabbix services.
#
# Mandatory: no
# Default:
# SocketDir=/tmp
SocketDir=/var/run/zabbix
### Option: DBHost
# Database host name.
# If set to localhost, socket is used for MySQL.
# If set to empty string, socket is used for PostgreSQL.
#
# Mandatory: no
# Default:
# DBHost=localhost
### Option: DBName
# Database name.
# For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
# Warning: do not attempt to use the same database Zabbix server is using.
#
# Mandatory: yes
# Default:
# DBName=
DBName={{ dbname }}
### Option: DBSchema
# Schema name. Used for IBM DB2 and PostgreSQL.
#
# Mandatory: no
# Default:
# DBSchema=
### Option: DBUser
# Database user. Ignored for SQLite.
#
# Default:
# DBUser=
DBUser={{ dbuser }}
### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword={{ dbpassword }}
### Option: DBSocket
# Path to MySQL socket.
#
# Mandatory: no
# Default:
# DBSocket=
# Option: DBPort
# Database port when not using local socket. Ignored for SQLite.
#
# Mandatory: no
# Default:
# DBPort=
######### PROXY SPECIFIC PARAMETERS #############
### Option: ProxyLocalBuffer
# Proxy will keep data locally for N hours, even if the data have already been synced with the server.
# This parameter may be used if local data will be used by third party applications.
#
# Mandatory: no
# Range: 0-720
# Default:
ProxyLocalBuffer=2
### Option: ProxyOfflineBuffer
# Proxy will keep data for N hours in case if no connectivity with Zabbix Server.
# Older data will be lost.
#
# Mandatory: no
# Range: 1-720
# Default:
ProxyOfflineBuffer=92
### Option: HeartbeatFrequency
# Frequency of heartbeat messages in seconds.
# Used for monitoring availability of Proxy on server side.
# 0 - heartbeat messages disabled.
# For a proxy in the passive mode this parameter will be ignored.
#
# Mandatory: no
# Range: 0-3600
# Default:
HeartbeatFrequency=60
### Option: ConfigFrequency
# How often proxy retrieves configuration data from Zabbix Server in seconds.
# For a proxy in the passive mode this parameter will be ignored.
#
# Mandatory: no
# Range: 1-3600*24*7
# Default:
ConfigFrequency=300
### Option: DataSenderFrequency
# Proxy will send collected data to the Server every N seconds.
# For a proxy in the passive mode this parameter will be ignored.
#
# Mandatory: no
# Range: 1-3600
# Default:
# DataSenderFrequency=1
############ ADVANCED PARAMETERS ################
### Option: StartPollers
# Number of pre-forked instances of pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartPollers=5
### Option: StartIPMIPollers
# Number of pre-forked instances of IPMI pollers.
# The IPMI manager process is automatically started when at least one IPMI poller is started.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartIPMIPollers=0
### Option: StartPollersUnreachable
# Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).
# At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers
# are started.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartPollersUnreachable=5
### Option: StartTrappers
# Number of pre-forked instances of trappers.
# Trappers accept incoming connections from Zabbix sender and active agents.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartTrappers=5
### Option: StartPingers
# Number of pre-forked instances of ICMP pingers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartPingers=10
### Option: StartDiscoverers
# Number of pre-forked instances of discoverers.
#
# Mandatory: no
# Range: 0-250
# Default:
# StartDiscoverers=1
### Option: StartHTTPPollers
# Number of pre-forked instances of HTTP pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartHTTPPollers=10
### Option: JavaGateway
# IP address (or hostname) of Zabbix Java gateway.
# Only required if Java pollers are started.
#
# Mandatory: no
# Default:
# JavaGateway=
### Option: JavaGatewayPort
# Port that Zabbix Java gateway listens on.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# JavaGatewayPort=10052
### Option: StartJavaPollers
# Number of pre-forked instances of Java pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartJavaPollers=0
### Option: StartVMwareCollectors
# Number of pre-forked vmware collector instances.
#
# Mandatory: no
# Range: 0-250
# Default:
# StartVMwareCollectors=0
### Option: VMwareFrequency
# How often Zabbix will connect to VMware service to obtain a new data.
#
# Mandatory: no
# Range: 10-86400
# Default:
# VMwareFrequency=60
### Option: VMwarePerfFrequency
# How often Zabbix will connect to VMware service to obtain performance data.
#
# Mandatory: no
# Range: 10-86400
# Default:
# VMwarePerfFrequency=60
### Option: VMwareCacheSize
# Size of VMware cache, in bytes.
# Shared memory size for storing VMware data.
# Only used if VMware collectors are started.
#
# Mandatory: no
# Range: 256K-2G
# Default:
# VMwareCacheSize=8M
### Option: VMwareTimeout
# Specifies how many seconds vmware collector waits for response from VMware service.
#
# Mandatory: no
# Range: 1-300
# Default:
# VMwareTimeout=10
### Option: SNMPTrapperFile
# Temporary file used for passing data from SNMP trap daemon to the proxy.
# Must be the same as in zabbix_trap_receiver.pl or SNMPTT configuration file.
#
# Mandatory: no
# Default:
# SNMPTrapperFile=/tmp/zabbix_traps.tmp
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
### Option: StartSNMPTrapper
# If 1, SNMP trapper process is started.
#
# Mandatory: no
# Range: 0-1
# Default:
# StartSNMPTrapper=0
### Option: ListenIP
# List of comma delimited IP addresses that the trapper should listen on.
# Trapper will listen on all network interfaces if this parameter is missing.
#
# Mandatory: no
# Default:
# ListenIP=0.0.0.0
### Option: HousekeepingFrequency
# How often Zabbix will perform housekeeping procedure (in hours).
# Housekeeping is removing outdated information from the database.
# To prevent Housekeeper from being overloaded, no more than 4 times HousekeepingFrequency
# hours of outdated information are deleted in one housekeeping cycle.
# To lower load on proxy startup housekeeping is postponed for 30 minutes after proxy start.
# With HousekeepingFrequency=0 the housekeeper can be only executed using the runtime control option.
# In this case the period of outdated information deleted in one housekeeping cycle is 4 times the
# period since the last housekeeping cycle, but not less than 4 hours and not greater than 4 days.
#
# Mandatory: no
# Range: 0-24
# Default:
# HousekeepingFrequency=1
### Option: CacheSize
# Size of configuration cache, in bytes.
# Shared memory size, for storing hosts and items data.
#
# Mandatory: no
# Range: 128K-8G
# Default:
CacheSize=512G
### Option: StartDBSyncers
# Number of pre-forked instances of DB Syncers.
#
# Mandatory: no
# Range: 1-100
# Default:
StartDBSyncers=4
### Option: HistoryCacheSize
# Size of history cache, in bytes.
# Shared memory size for storing history data.
#
# Mandatory: no
# Range: 128K-2G
# Default:
HistoryCacheSize=512M
### Option: HistoryIndexCacheSize
# Size of history index cache, in bytes.
# Shared memory size for indexing history cache.
#
# Mandatory: no
# Range: 128K-2G
# Default:
HistoryIndexCacheSize=256M
### Option: Timeout
# Specifies how long we wait for agent, SNMP device or external check (in seconds).
#
# Mandatory: no
# Range: 1-30
# Default:
Timeout=10
### Option: TrapperTimeout
# Specifies how many seconds trapper may spend processing new data.
#
# Mandatory: no
# Range: 1-300
# Default:
# TrapperTimeout=300
### Option: UnreachablePeriod
# After how many seconds of unreachability treat a host as unavailable.
#
# Mandatory: no
# Range: 1-3600
# Default:
# UnreachablePeriod=45
### Option: UnavailableDelay
# How often host is checked for availability during the unavailability period, in seconds.
#
# Mandatory: no
# Range: 1-3600
# Default:
# UnavailableDelay=60
### Option: UnreachableDelay
# How often host is checked for availability during the unreachability period, in seconds.
#
# Mandatory: no
# Range: 1-3600
# Default:
# UnreachableDelay=15
### Option: ExternalScripts
# Full path to location of external scripts.
# Default depends on compilation options.
# To see the default path run command "zabbix_proxy --help".
#
# Mandatory: no
# Default:
# ExternalScripts=${datadir}/zabbix/externalscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
### Option: FpingLocation
# Location of fping.
# Make sure that fping binary has root ownership and SUID flag set.
#
# Mandatory: no
# Default:
# FpingLocation=/usr/sbin/fping
### Option: Fping6Location
# Location of fping6.
# Make sure that fping6 binary has root ownership and SUID flag set.
# Make empty if your fping utility is capable to process IPv6 addresses.
#
# Mandatory: no
# Default:
# Fping6Location=/usr/sbin/fping6
### Option: SSHKeyLocation
# Location of public and private keys for SSH checks and actions.
#
# Mandatory: no
# Default:
# SSHKeyLocation=
### Option: LogSlowQueries
# How long a database query may take before being logged (in milliseconds).
# Only works if DebugLevel set to 3 or 4.
# 0 - don't log slow queries.
#
# Mandatory: no
# Range: 1-3600000
# Default:
# LogSlowQueries=0
LogSlowQueries=3000
### Option: TmpDir
# Temporary directory.
#
# Mandatory: no
# Default:
# TmpDir=/tmp
### Option: AllowRoot
# Allow the proxy to run as 'root'. If disabled and the proxy is started by 'root', the proxy
# will try to switch to the user specified by the User configuration option instead.
# Has no effect if started under a regular user.
# 0 - do not allow
# 1 - allow
#
# Mandatory: no
# Default:
# AllowRoot=0
### Option: User
# Drop privileges to a specific, existing user on the system.
# Only has effect if run as 'root' and AllowRoot is disabled.
#
# Mandatory: no
# Default:
# User=zabbix
### Option: Include
# You may include individual files or all files in a directory in the configuration file.
# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
#
# Mandatory: no
# Default:
# Include=
# Include=/usr/local/etc/zabbix_proxy.general.conf
# Include=/usr/local/etc/zabbix_proxy.conf.d/
# Include=/usr/local/etc/zabbix_proxy.conf.d/*.conf
### Option: SSLCertLocation
# Location of SSL client certificates.
# This parameter is used only in web monitoring.
# Default depends on compilation options.
# To see the default path run command "zabbix_proxy --help".
#
# Mandatory: no
# Default:
# SSLCertLocation=${datadir}/zabbix/ssl/certs
### Option: SSLKeyLocation
# Location of private keys for SSL client certificates.
# This parameter is used only in web monitoring.
# Default depends on compilation options.
# To see the default path run command "zabbix_proxy --help".
#
# Mandatory: no
# Default:
# SSLKeyLocation=${datadir}/zabbix/ssl/keys
### Option: SSLCALocation
# Location of certificate authority (CA) files for SSL server certificate verification.
# If not set, system-wide directory will be used.
# This parameter is used only in web monitoring.
#
# Mandatory: no
# Default:
# SSLCALocation=
####### LOADABLE MODULES #######
### Option: LoadModulePath
# Full path to location of proxy modules.
# Default depends on compilation options.
# To see the default path run command "zabbix_proxy --help".
#
# Mandatory: no
# Default:
# LoadModulePath=${libdir}/modules
### Option: LoadModule
# Module to load at proxy startup. Modules are used to extend functionality of the proxy.
# Format: LoadModule=<module.so>
# The modules must be located in directory specified by LoadModulePath.
# It is allowed to include multiple LoadModule parameters.
#
# Mandatory: no
# Default:
# LoadModule=
####### TLS-RELATED PARAMETERS #######
### Option: TLSConnect
# How the proxy should connect to Zabbix server. Used for an active proxy, ignored on a passive proxy.
# Only one value can be specified:
# unencrypted - connect without encryption
# psk - connect using TLS and a pre-shared key
# cert - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=unencrypted
### Option: TLSAccept
# What incoming connections to accept from Zabbix server. Used for a passive proxy, ignored on an active proxy.
# Multiple values can be specified, separated by comma:
# unencrypted - accept connections without encryption
# psk - accept connections secured with TLS and a pre-shared key
# cert - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=unencrypted
### Option: TLSCAFile
# Full pathname of a file containing the top-level CA(s) certificates for
# peer certificate verification.
#
# Mandatory: no
# Default:
# TLSCAFile=
### Option: TLSCRLFile
# Full pathname of a file containing revoked certificates.
#
# Mandatory: no
# Default:
# TLSCRLFile=
### Option: TLSServerCertIssuer
# Allowed server certificate issuer.
#
# Mandatory: no
# Default:
# TLSServerCertIssuer=
### Option: TLSServerCertSubject
# Allowed server certificate subject.
#
# Mandatory: no
# Default:
# TLSServerCertSubject=
### Option: TLSCertFile
# Full pathname of a file containing the proxy certificate or certificate chain.
#
# Mandatory: no
# Default:
# TLSCertFile=
### Option: TLSKeyFile
# Full pathname of a file containing the proxy private key.
#
# Mandatory: no
# Default:
#TLSKeyFile=/etc/zabbix/zabbix_proxy.psk
### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
#TLSPSKIdentity=zabproxy04psk
### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
#TLSPSKFile=/etc/zabbix/zabbix_proxy.psk
#TLSConnect=psk
#TLSAccept=psk
#TLSPSKIdentity=zabproxy04psk
#TLSPSKFile=/etc/zabbix/zabbix_proxy.psk

Some files were not shown because too many files have changed in this diff Show More