Skip to content
Snippets Groups Projects
Commit b17bf4aa authored by Aleksandr Kurbatov's avatar Aleksandr Kurbatov
Browse files

Playbooks - remove all `remote_user` references

parent c116d8db
No related branches found
No related tags found
1 merge request!116Cleanup
Showing
with 426 additions and 10 deletions
...@@ -2,7 +2,5 @@ ...@@ -2,7 +2,5 @@
hosts: all hosts: all
connection: netconf connection: netconf
gather_facts: false gather_facts: false
# remote_user: "{{ gap_ansible_user }}"
remote_user: geant-ne-na-lab
roles: roles:
- ../roles/base_config_checks - ../roles/base_config_checks
- name: Check iBGP status on P - name: Check iBGP status on P
hosts: all hosts: all
# remote_user: "{{ gap_ansible_user }}"
remote_user: geant-ne-na-lab
gather_facts: false gather_facts: false
roles: roles:
- Juniper.junos - Juniper.junos
......
- name: Manage iptrunks checks playbook - name: Manage iptrunks checks playbook
hosts: all hosts: all
# remote_user: "{{ gap_ansible_user }}"
# remote_user: geant-ne-na-lab
gather_facts: false gather_facts: false
roles: roles:
- Juniper.junos - Juniper.junos
......
- name: Manage iptrunks migration - name: Manage iptrunks migration
hosts: all hosts: all
# remote_user: "{{ gap_ansible_user }}"
remote_user: geant-ne-na-lab
gather_facts: false gather_facts: false
roles: roles:
- Juniper.junos - Juniper.junos
......
- name: Manage iBGP mesh - name: Manage iBGP mesh
hosts: all hosts: all
# remote_user: "{{ gap_ansible_user }}"
remote_user: geant-ne-na-lab
gather_facts: false gather_facts: false
roles: roles:
- Juniper.junos - Juniper.junos
......
---
- name: Load variables from pre and post check results
ansible.builtin.include_vars:
dir: vars
files_matching: "{{ check_id }}.yml"
- name: TEST Print PRE interface statistics
ansible.builtin.debug:
var: pre_check
when: verb == 'pre_check'
- name: TEST Print POST interface statistics
ansible.builtin.debug:
var: post_check
when: verb == 'post_check'
- name: Get the interface status
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.interface_status == 'up'"
fail_msg: "FAIL: physical interface is DOWN"
success_msg: "PASS: physical interface is UP"
failed_when: false
- name: Check the interface input errors
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.input_error_count <= {{ input_error_count_threshold }}"
fail_msg: "FAIL: input errors detected"
success_msg: "PASS: no input errors detected"
failed_when: false
- name: Check the interface output errors
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_error_count <= {{ output_error_count_threshold }}"
fail_msg: "FAIL: output errors detected"
success_msg: "PASS: no output errors detected"
failed_when: false
- name: Check the interface FEC statistics
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_count is defined"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_count.0.data <= {{ fec_ccw_count_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_error_rate.0.data == {{ fec_ccw_error_rate_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_nccw_count.0.data == {{ fec_nccw_count_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_nccw_error_rate.0.data == {{ fec_nccw_error_rate_threshold }}"
fail_msg: "FAIL: FEC statistics errors detected or FEC statistics not found - please check results in relevant yaml file"
success_msg: "PASS: no FEC statistics errors detected"
failed_when: false
- name: Check the interface PCS statistics
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.ethernet_pcs_statistics_bit_error_secs | int <= {{ pcs_bit_error_seconds_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_pcs_statistics_errored_blocks_secs | int <= {{ pcs_bit_error_blocks_seconds_threshold }}"
fail_msg: "FAIL: PCS statistics errors detected"
success_msg: "PASS: PCS statistics errors are below threshold"
failed_when: false
- name: Check the optical levels output Tx power low threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_power_dbm > {{ min_tx_power_dbm }}"
fail_msg: "FAIL: Low Tx output power detected (dBm)"
success_msg: "PASS: Tx Output power above minimum threshold (dBm) "
failed_when: false
- name: Check the optical levels output Tx power high threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_power_dbm < {{ max_tx_power_dbm }}"
fail_msg: "FAIL: High Tx output power detected (dBm)"
success_msg: "PASS: Tx Output power below maximum threshold (dBm) "
failed_when: false
- name: Check the optical levels input Rx power low threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.rx_signal_avg_power_dbm > {{ min_rx_power_dbm }}"
fail_msg: "FAIL: Low Rx signal power detected (dBm)"
success_msg: "PASS: Rx signal power above minimum threshold (dBm) "
failed_when: false
- name: Check the optical levels input Rx power high threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.rx_signal_avg_power_dbm < {{ max_rx_power_dbm }}"
fail_msg: "FAIL: High Rx signal power detected (dBm)"
success_msg: "PASS: Rx signal power below maximum threshold (dBm) "
failed_when: false
---
- name: Get output file information
ansible.builtin.stat:
path: roles/check_demarcation_point/vars/{{ check_id }}.yml
register: file_status
- name: Load variables from pre and post check results
ansible.builtin.include_vars:
dir: vars
files_matching: "{{ check_id }}.yml"
- name: Check if PRE and POST measurements exist prior to compare command
ansible.builtin.assert:
that:
- "pre_check.{{ check_id }} is defined"
- "post_check.{{ check_id }} is defined"
fail_msg: "FAIL: PRE and POST measurements have not been performed before COMPARE"
success_msg: "PASS: PRE and POST values exist "
- name: Compare PRE and POST interface status
ansible.builtin.assert:
that:
- "pre_check.{{ check_id }}.interface_status == post_check.{{ check_id }}.interface_status"
fail_msg: "FAIL: Interface status on PRE and post POST is not equal"
success_msg: "PASS: Interface status PRE and POST check is equal "
- name: Compare PRE and POST interface input errors
ansible.builtin.assert:
that:
- "{{ pre_check[check_id].input_error_count | int }} <= {{ post_check[check_id].input_error_count | int }}"
fail_msg: "WARNING: Interface input errors have been increased"
success_msg: "PASS: Interface input errors have not been increased "
failed_when: false
- name: Compare PRE and POST interface output errors
ansible.builtin.assert:
that:
- "{{ pre_check[check_id].output_error_count | int }} <= {{ post_check[check_id].output_error_count | int }}"
fail_msg: "WARNING: Interface output errors have been increased"
success_msg: "PASS: Interface output errors have not been increased "
failed_when: false
- name: Set facts
ansible.builtin.set_fact:
tx_power_dbm_post: "{{ post_check[check_id].output_power_dbm }}"
tx_power_dbm_pre: "{{ pre_check[check_id].output_power_dbm }}"
rx_power_dbm_post: "{{ post_check[check_id].rx_signal_avg_power_dbm }}"
rx_power_dbm_pre: "{{ pre_check[check_id].rx_signal_avg_power_dbm }}"
input_error_count_post: "{{ post_check[check_id].input_error_count }}"
input_error_count_pre: "{{ pre_check[check_id].input_error_count }}"
output_error_count_post: "{{ post_check[check_id].output_error_count }}"
output_error_count_pre: "{{ pre_check[check_id].output_error_count }}"
when:
- pre_check[check_id] is defined
- post_check[check_id] is defined
- name: Set facts calculate diffs
ansible.builtin.set_fact:
tx_power_dbm_diff: "{{ '{:0.2f}'.format(tx_power_dbm_post | float - tx_power_dbm_pre | float) }}"
rx_power_dbm_diff: "{{ '{:0.2f}'.format(rx_power_dbm_post | float - rx_power_dbm_pre | float) }}"
input_error_count_diff: "{{ input_error_count_post | int - input_error_count_pre | int }}"
output_error_count_diff: "{{ output_error_count_post | int - output_error_count_pre | int }}"
- name: Add PRE and POST comparison values to yaml
ansible.builtin.blockinfile:
path: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
marker: "# {mark} -------------- DIFFS (POST - PRE) ----------------------------- #"
block: |
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'tx_power_diff:' }} {{ tx_power_dbm_diff }}
{{ 'rx_power_diff:' }} {{ rx_power_dbm_diff }}
{{ 'input_error_count_diff:' }} {{ input_error_count_diff }}
{{ 'output_error_count_diff:' }} {{ output_error_count_diff }}
when:
- pre_check[check_id] is defined
- post_check[check_id] is defined
- file_status.stat.exists
- name: Check if Rx power in POST check is way lower than PRE check (above permitted threshold)
ansible.builtin.assert:
that:
- "{{ rx_power_dbm_diff | float }} > {{ rx_power_allowed_diff | float }} "
fail_msg: "WARNING: Rx Power (dBm) diff between pre/post check is bigger than allowed threshold."
success_msg: "PASS: Rx Power (dBm) diff between pre/post check is normal."
failed_when: false
- name: Check if Tx power in POST check is way lower than PRE check (above permitted threshold)
ansible.builtin.assert:
that:
- "{{ tx_power_dbm_diff | float }} > {{ tx_power_allowed_diff | float }} "
fail_msg: "WARNING: Rx Power (dBm) diff between pre/post check is bigger than allowed threshold."
success_msg: "PASS: Rx Power (dBm) diff between pre/post check is normal."
failed_when: false
- name: Check if input_errors increase diff between PRE and POST checks is above permitted threshold
ansible.builtin.assert:
that:
- "{{ input_error_count_diff | int }} < {{ input_error_count_threshold | int }} "
fail_msg: "WARNING: Input errors count in POST check have been increased above threshold."
success_msg: "PASS: Input errors count diffs between PRE and POST check is normal."
failed_when: false
- name: Check if output_errors increase diff between PRE and POST checks is above permitted threshold
ansible.builtin.assert:
that:
- "{{ output_error_count_diff | int }} < {{ output_error_count_threshold | int }} "
fail_msg: "WARNING: Output errors count in POST check have been increased above threshold."
success_msg: "PASS: Output errors count diffs between PRE and POST check is normal."
failed_when: false
\ No newline at end of file
---
- name: Get output file information
ansible.builtin.stat:
path: roles/check_demarcation_point/vars/{{ check_id }}.yml
register: file_status
- name: Creating a yaml file with pre_check results content
ansible.builtin.copy:
content: |
{{ '---' }}
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'interface:' }} {{ interface }}
{{ 'device:' }} {{ inventory_hostname }}
{{ 'interface_status:' }} {{ interface_status }}
{{ 'input_error_count:' }} {{ input_error_count }}
{{ 'output_error_count:' }} {{ output_error_count }}
{{ 'ethernet_pcs_statistics_bit_error_secs:' }} {{ ethernet_pcs_statistics_bit_error_secs }}
{{ 'ethernet_pcs_statistics_errored_blocks_secs:' }} {{ ethernet_pcs_statistics_errored_blocks_secs }}
{{ 'ethernet_fec_statistics:' }} {{ ethernet_fec_statistics }}
{{ 'output_power_dbm:' }} {{ output_power_dbm }}
{{ 'rx_signal_avg_power_dbm:' }} {{ rx_signal_avg_power_dbm }}
dest: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
mode: '0660'
when:
- not file_status.stat.exists
- name: Add post_check parameters to yaml
ansible.builtin.blockinfile:
path: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
marker: "# {mark} -------------- POST CHECKS ----------------------------- #"
block: |
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'interface:' }} {{ interface }}
{{ 'device:' }} {{ inventory_hostname }}
{{ 'interface_status:' }} {{ interface_status }}
{{ 'input_error_count:' }} {{ input_error_count }}
{{ 'output_error_count:' }} {{ output_error_count }}
{{ 'ethernet_pcs_statistics_bit_error_secs:' }} {{ ethernet_pcs_statistics_bit_error_secs }}
{{ 'ethernet_pcs_statistics_errored_blocks_secs:' }} {{ ethernet_pcs_statistics_errored_blocks_secs }}
{{ 'ethernet_fec_statistics:' }} {{ ethernet_fec_statistics }}
{{ 'output_power_dbm:' }} {{ output_power_dbm }}
{{ 'rx_signal_avg_power_dbm:' }} {{ rx_signal_avg_power_dbm }}
when:
- verb == 'post_check'
- file_status.stat.exists
---
###############################################################################################################
# The playbook does the following:
#
# - Runs the command show 'interface statistics {{ interface }}' and gets the json output
# - From json output it retrieves the apporpriate metrics (status,input/output errors, FEC errors, PCS errors)
# - Saves the metrics in relevant variable names.
#
###############################################################################################################
- name: Print input from user (DEBUG)
ansible.builtin.debug:
msg:
- "type of check is: {{ verb }}"
- "interface input from user is: {{ interface }}"
- "Vendor input from user is: {{ vendor }}"
- "check_id input from user is: {{ check_id }}"
- name: Get Junos attributes for interface {{ interface }}
junipernetworks.junos.junos_command:
commands: "show interface statistics {{ interface }}"
display: json
register: interface_status
when: vendor == 'juniper'
- name: Manipulate the interface attributes
ansible.builtin.set_fact:
interface_status: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['oper-status'].0['data']| default(False) }}"
input_error_count: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['input-error-count'].0['data']| default(False) }}"
output_error_count: >-
{{
interface_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['output-error-count'].0['data'] | default(False)
}}
ethernet_pcs_statistics_bit_error_secs: >-
"{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface']
.0['ethernet-pcs-statistics'].0['bit-error-seconds'].0['data']| default(False)
}}"
ethernet_pcs_statistics_errored_blocks_secs: >-
"{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface']
.0['ethernet-pcs-statistics'].0['errored-blocks-seconds'].0['data']| default(False) }}"
ethernet_fec_statistics: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['ethernet-fec-statistics'].0
| default(False) }}"
when: vendor == 'juniper'
- name: Print interface statistics
ansible.builtin.debug:
var: print_variables
vars:
print_variables:
interface_status: "{{ interface_status }}"
input_error_count: "{{ input_error_count }}"
output_error_count: "{{ output_error_count }}"
ethernet_pcs_statistics_bit_error_secs: "{{ ethernet_pcs_statistics_bit_error_secs }}"
ethernet_pcs_statistics_errored_blocks_secs: "{{ ethernet_pcs_statistics_errored_blocks_secs }}"
ethernet_fec_statistics: "{{ ethernet_fec_statistics }}"
---
###############################################################################################################
# The playbook does the following:
#
#
# - Runs the command 'show interfaces diagnostics optics {{ interface }} | no-more' and gets the json output
# - From json output it retrieves the apporpriate metrics for optical levels
# - Saves the metrics in relevant variable names
###############################################################################################################
- name: Get Junos attributes for optical levels of interface {{ interface }}
junipernetworks.junos.junos_command:
commands: "show interfaces diagnostics optics {{ interface }} | no-more"
display: json
register: optical_status
when: vendor == 'juniper'
- name: Manipulate the optical results attributes
ansible.builtin.set_fact:
output_power_dbm: >-
{{
optical_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['optics-diagnostics']
.0['laser-output-power-dbm'].0['data'] | default(False)
}}
rx_signal_avg_power_dbm: >-
{{
optical_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['optics-diagnostics']
.0['rx-signal-avg-optical-power-dbm'].0['data'] | default(False)
}}
when: vendor == 'juniper'
- name: Print optical levels statistics
ansible.builtin.debug:
var: print_variables
vars:
print_variables:
output_power_dbm: "{{ output_power_dbm }}"
rx_signal_avg_power_dbm: "{{ rx_signal_avg_power_dbm }}"
---
- name: Print the usage
ansible.builtin.debug:
msg:
- "Required arguments: 'verb', 'interface', 'vendor' and 'check_id' are required."
- "Allowed verbs: 'pre_check', 'post_check', 'compare'. Use: -e 'verb=$verb'"
- "Allowed interface: user_input Use: -e 'interface=$interface'"
- "Allowed vendors: 'juniper', 'cisco'. Use: -e 'vendor=$vendor'"
- "Allowed check_id: user_input Use: -e 'check_id=$check_id'"
when:
- (verb is not defined) or (interface is not defined) or (vendor is not defined) or (check_id is not defined)
- name: End playbook
ansible.builtin.meta: end_play
when:
- (verb is not defined) or (interface is not defined) or (vendor is not defined) or (check_id is not defined)
- name: Include task get_ifstatus
ansible.builtin.include_tasks: get_ifstatus.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task get_optical_levels
ansible.builtin.include_tasks: get_optical_levels.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task create_file
ansible.builtin.include_tasks: create_file.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task checks
ansible.builtin.include_tasks: checks.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task compare
ansible.builtin.include_tasks: compare.yaml
when:
- verb == 'compare'
---
# vars file for demarcation_point checks
dryrun: "True"
verbs:
- "pre_check"
- "post_check"
- "compare"
vendors:
- "juniper"
- "cisco"
# config_objects:
# - "trunk_interface"
# - "isis"
# - "isis_interface"
# - "ldp_interface"
# - "lldp_interface"
# - "trunk_deprovision"
---
min_tx_power_dbm: -8
max_tx_power_dbm: 0
min_rx_power_dbm: -10
max_rx_power_dbm: -0.5
rx_power_allowed_diff: -2
tx_power_allowed_diff: -2
input_error_count_threshold: 3
output_error_count_threshold: 3
fec_ccw_count_threshold: 0
fec_ccw_error_rate_threshold: 0
fec_nccw_count_threshold: 0
fec_nccw_error_rate_threshold: 0
pcs_bit_error_seconds_threshold: 20
pcs_bit_error_blocks_seconds_threshold: 20
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment