- name: "stop perforce"
ignore_errors: yes
service:
name: "p4d_{{ perforce_id }}"
state: "stopped"
when: new_p4d
- name: "Remove existing sdp folder."
file:
path: "/{{ perforce_sdp_volume }}/sdp"
state: absent
- name: "Remove any existing crontab"
file:
path: /var/spool/cron/crontabs/perforce
state: absent
- name: "Get sdp.tgz"
get_url:
url: "https://swarm.workshop.perforce.com/downloads/guest/russell_jackson/sdp.tgz"
dest: "/{{ perforce_sdp_volume }}/"
mode: '0700'
- name: "Untar sdp.tgz"
unarchive:
remote_src: yes
src: "/{{ perforce_sdp_volume }}/{{ perforce_sdp_file }}"
dest: "/{{ perforce_sdp_volume }}"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
mode: 0755
- name: "Get p4 binary"
get_url:
url: "https://ftp.perforce.com/perforce/r{{ perforce_version }}/bin.linux26x86_64/p4"
dest: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/p4/common/bin"
mode: '0700'
- name: "Get p4broker binary"
get_url:
url: "https://ftp.perforce.com/perforce/r{{ perforce_broker_version }}/bin.linux26x86_64/p4broker"
dest: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/p4/common/bin"
mode: '0700'
- name: "Get p4d binary"
get_url:
url: "https://ftp.perforce.com/perforce/r{{ perforce_version }}/bin.linux26x86_64/p4d"
dest: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/p4/common/bin"
mode: '0700'
- name: "mkdirs template"
template:
src: "./mkdirs.cfg.j2"
dest: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/setup/mkdirs.cfg"
- name: "run mkdirs install script"
shell: "./mkdirs.sh mkdirs.cfg"
args:
chdir: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/setup"
register: "perforce_mkdirs_output"
- name: "Add source script to perforce user bashrc"
lineinfile:
path: "/p4/.bashrc"
create: yes
line: "source /p4/common/bin/p4_vars {{ perforce_id }}"
insertafter: "EOF"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
# - name: "Copy perforce license file"
# copy:
# force: yes
# src: "./perforce-license"
# dest: "/p4/{{ perforce_id }}/root/license"
# owner: "{{ perforce_user }}"
# group: "{{ perforce_group }}"
# mode: '0644'
# when: copy_license
- name: "systemd template"
template:
src: "./p4d_instance.service.j2"
dest: "/etc/systemd/system/p4d_{{ perforce_id }}.service"
mode: "0755"
owner: "root"
group: "root"
- name: "Enable perforce systemd service"
systemd:
name: "p4d_{{ perforce_id }}"
enabled: true
daemon_reload: true
state: "started"
when: p4d_enabled
- name: "p4broker template"
template:
src: "./p4broker_1.cfg.j2"
dest: "/p4/common/config/p4_{{ perforce_id }}.broker.{{ perforce_master_id }}.cfg"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
when: install_broker
- name: "p4broker maintenance template"
template:
src: "./p4broker_1.cfg.maintenance.j2"
dest: "/p4/common/config/p4_{{ perforce_id }}.broker.{{ perforce_master_id }}.cfg.maintenance"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
when: install_broker
- name: "Copy broker proxy by pass script."
copy:
src: "./broker_proxy_filter.pl"
dest: "/p4/common/config"
mode: "0755"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
when: install_broker
- name: "Copy certificate.txt to ssl directory"
copy:
src: "./certificate.txt"
dest: "/p4/ssl"
mode: "0600"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
- name: "Copy privatekey.txt to ssl directory"
copy:
src: "./privatekey.txt"
dest: "/p4/ssl"
mode: "0600"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
- name: "Setup p4broker systemd service file"
copy:
src: "/{{ perforce_sdp_volume }}/sdp/Server/Unix/setup/systemd/p4broker_{{ perforce_id }}.service"
remote_src: true
dest: "/etc/systemd/system"
mode: "0755"
owner: "root"
group: "root"
when: install_broker
- name: "Enable and start p4broker systemd service"
systemd:
name: "p4broker_{{ perforce_id }}"
enabled: true
daemon_reload: true
state: "started"
when: install_broker
- name: "Touch p4.crontab.extras to avoid failure on next cat command."
file:
path: "/p4/p4.crontab.extras"
state: touch
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
- name: "Copy crontab extras to new crontab"
shell: "cat /p4/p4.crontab.new /p4/p4.crontab.extras > /p4/p4.crontab"
become: yes
- name: "Change ownership of crontab file"
file:
path: "/p4/p4.crontab"
owner: "{{ perforce_user }}"
group: "{{ perforce_group }}"
- name: "Update crontab"
become_user: "{{ perforce_user }}"
command: "crontab /p4/p4.crontab"
- name: "Setup perforce sudo file for systemctl"
copy:
content: "{{ perforce_user }} ALL=(root:root) NOPASSWD: /bin/systemctl * p4*, /usr/bin/lslocks, /usr/bin/lsof\n"
dest: "/etc/sudoers.d/{{ perforce_user }}_user"
mode: "0440"
owner: "root"
group: "root"
- name: "Log into P4MASTERPORT"
shell: "/p4/common/bin/p4master_run {{ perforce_id }} p4 -p {{ target_server }}:{{ perforce_p4_port }} login -a < /p4/common/config/.p4passwd.p4_{{ perforce_id }}.admin"
become: yes
become_user: "{{ perforce_user }}"
ignore_errors: yes
when: perforce_server_type != "p4d_master"
- name: "Log service user into P4MASTERPORT"
shell: "/p4/common/bin/p4master_run {{ perforce_id }} p4 -p {{ target_server }}:{{ perforce_p4_port }} login {{ p4serviceuser }}"
args:
executable: /bin/bash
become: yes
become_user: "{{ perforce_user }}"
ignore_errors: yes
when: perforce_server_type != "p4d_master"
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #3 | 32493 | Russell C. Jackson (Rusty) | Created some dummy files to allow the install to run. | ||
| #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. |