- 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"