cron.yml #2

  • //
  • guest/
  • russell_jackson/
  • ansible-sdp/
  • roles/
  • perforce-sdp-install/
  • tasks/
  • cron.yml
  • View
  • Commits
  • Open Download .zip Download (8 KB)
- name: "Clear existing cron"
  become_user: perforce
  command: "crontab -r"
  ignore_errors: yes

- name: Tasks for all servers
  block:
    - name: "INSTANCE environment variable"
      cronvar:
        name: INSTANCE
        value: 1

    - name: "Mailto environment variable"
      cronvar:
        name: MAILTO
        value: "{{ perforce_mailto_email }}"

    - name: "Mailfrom environment variable"
      cronvar:
        name: MAILFROM
        value: "{{ perforce_mailfrom_email }}"

    - name: "Path environment variable"
      cronvar:
        name: PATH
        value: "/p4/common/bin:/p4/1/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:"

    - name: "Shell environment variable"
      cronvar:
        name: SHELL
        value: /bin/bash

    - name: "Prometheus monitor metrics cleanup"
      cron:
        name: "Prometheus monitor metrics cleanup"
        minute: "0"
        hour: "1"
        job: "rm -f /p4/metrics/p4_errors-*.prom.* > /dev/null 2>&1 ||:"
  become_user: perforce

- name: Broker tasks
  block:
    - name: "Log cleanup"
      cron:
        name: "Daily log rotate"
        minute: "0"
        hour: "17"
        job: "/p4/common/bin/replica_cleanup.sh ${INSTANCE}"
  when: perforce_server_type == "p4d_broker"
  become_user: perforce

- name: Master tasks
  block:
    - name: "Weekly maintenance"
      cron:
        name: "Weekly maintenance on the master. Be sure to set up the maintenance.cfg file."
        minute: "0"
        hour: "6"
        weekday: "6"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/sdp/Maintenance/maintenance ${INSTANCE}"

    - name: "Unlock"
      cron:
        name: "Unlock Master"
        minute: "0"
        hour: "*/6"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} p4 unlock -x > /dev/null 2>&1"

    - name: "Update limits"
      cron:
        name: "Update limits"
        minute: "*/10"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/update_limits.py ${INSTANCE}"

    - name: "Verify Shelves"
      cron:
        name: "Verify Shelves"
        minute: "*/15"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/verify_shelves.sh ${INSTANCE} 100"

# Journal Rotations
    - name: "00:00"
      cron:
        name: "00:00 Journal Rotation"
        minute: "5"
        hour: "0"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "02:00"
      cron:
        name: "02:00 Journal Rotation"
        minute: "5"
        hour: "2"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "04:00"
      cron:
        name: "04:00 Journal Rotation"
        minute: "5"
        hour: "4"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "06:00"
      cron:
        name: "06:00 Journal Rotation"
        minute: "5"
        hour: "6"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "08:00"
      cron:
        name: "08:00 Journal Rotation"
        minute: "5"
        hour: "8"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "10:00"
      cron:
        name: "10:00 Journal Rotation"
        minute: "5"
        hour: "10"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "12:00"
      cron:
        name: "12:00 Journal Rotation"
        minute: "5"
        hour: "12"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "14:00"
      cron:
        name: "14:00 Journal Rotation"
        minute: "5"
        hour: "14"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "16:00"
      cron:
        name: "16:00 Journal Rotation"
        minute: "5"
        hour: "16"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "18:00"
      cron:
        name: "18:00 Journal Rotation"
        minute: "5"
        hour: "18"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "20:00"
      cron:
        name: "20:00 Journal Rotation"
        minute: "5"
        hour: "20"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"

    - name: "22:00"
      cron:
        name: "22:00 Journal Rotation"
        minute: "5"
        hour: "22"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/rotate_journal.sh ${INSTANCE}"
# End Journal Rotations

    - name: "Daily Checkpoint"
      cron:
        name: "Daily Checkpoint"
        minute: "5"
        hour: "5"
        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/daily_checkpoint.sh ${INSTANCE}"
#        job: "/p4/common/bin/run_if_master.sh ${INSTANCE} /p4/common/bin/recreate_db_checkpoint.sh ${INSTANCE}"
  when: perforce_server_type == "p4d_master"
  become_user: perforce

- name: Edge tasks
  block:
    - name: "Weekly maintenance"
      cron:
        name: "Weekly maintenance on the edge. Be sure to set up the maintenance.cfg file."
        minute: "0"
        hour: "6"
        weekday: "6"
        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} /p4/sdp/Maintenance/edge_maintenance ${INSTANCE}"

    - name: "Unlock"
      cron:
        name: "Unlock edge."
        minute: "0"
        hour: "*/6"
        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} p4 unlock -x > /dev/null 2>&1"

    - name: "Daily Checkpoint"
      cron:
        name: "Daily Checkpoint"
        minute: "5"
        hour: "6"
        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} /p4/common/bin/daily_checkpoint.sh ${INSTANCE}"
#        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} /p4/common/bin/recreate_db_checkpoint.sh ${INSTANCE}"

    - name: "Replica Status"
      cron:
        name: "Replica Status"
        minute: "*/6"
        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} /p4/common/bin/replica_status.sh ${INSTANCE} > /dev/null"

    - name: "Cache Clean"
      cron:
        name: "Cache Clean"
        minute: "0"
        job: "/p4/common/bin/run_if_edge.sh ${INSTANCE} /p4/common/bin/cacheclean.sh ${INSTANCE}"
  when: perforce_server_type == "p4d_edge"
  become_user: perforce

- name: Replica tasks
  block:
    - name: "Sync replica"
      cron:
        name: "Sync replica"
        minute: "0"
        hour: "12"
        job: "/p4/common/bin/run_if_replica.sh ${INSTANCE} /p4/common/bin/sync_replica.sh ${INSTANCE}"

    - name: "Recreate DB Sync replica"
      cron:
        name: "Recreate DB Sync replica"
        minute: "5"
        hour: "22"
        weekday: "6"
        job: "[ $(date +\\%d) -le 07 ] && /p4/common/bin/run_if_replica.sh ${INSTANCE} /p4/common/bin/recreate_db_sync_replica.sh ${INSTANCE}"
    - name: "Replica Status"
      cron:
        name: "Replica Status"
        minute: "*/6"
        job: "/p4/common/bin/run_if_replica.sh ${INSTANCE} /p4/common/bin/replica_status.sh ${INSTANCE} > /dev/null"

    - name: "Clear structured logs since the replica doesn't rotate them and Perforce won't fix the bug."
      cron:
        name: "Clear structured logs"
        minute: "0"
        hour: "1"
        job: "/p4/common/bin/run_if_replica.sh ${INSTANCE} rm -f /p4/${INSTANCE}/logs/*.csv > /dev/null"
  when: (perforce_server_type == "p4d_edgerep") or (perforce_server_type == "p4d_standby") or (perforce_server_type == "p4d_replica")
  become_user: perforce

- name: "P4Verify standby servers"
  cron:
    user: perforce
    name: "P4Verify on standby servers"
    minute: "5"
    hour: "21"
    weekday: "6"
    job: "/p4/common/bin/run_if_replica.sh ${INSTANCE} /p4/common/bin/p4verify.py ${INSTANCE} "
  when: perforce_server_type == "p4d_standby"
# Change User Description Committed
#2 32492 Russell C. Jackson (Rusty) Fix bugs, remove orphaned files, and apply best practices to ansible-sdp

- Fix broken Jinja2 filter syntax (|bool|) in main-playbook.yml
- Fix target_server logic comparing string literals instead of variables
- Fix package install failing on RedHat due to missing OS family guard
- Split packages into OS-agnostic and Debian-specific lists, remove duplicates
- Switch all binary downloads from HTTP to HTTPS
- Remove 7 orphaned files (unused templates, scripts, configs)
- Replace hardcoded emails in cron with template variables
- Fix inconsistent journal rotations (06:00/08:00) to use rotate_journal.sh
- Parameterize admin sudoers and perforce user password
- Fix ansible.cfg malformed vars block
- Fix ansibleuser sudo group for RedHat (wheel) vs Debian (sudo)
- Remove redundant triple broker start/restart in install.yml
- Replace shell sed with ansible.builtin.replace in monitoring role
- Fix duplicate handler and undefined variable in monitoring handlers
- Use notify handlers instead of inline commands for sysctl/THP
- Add idempotency (creates:) to pyenv install
#1 32488 Russell C. Jackson (Rusty) Ansible scaffolding for the sdp - Needs work.