install.yml #3

  • //
  • guest/
  • russell_jackson/
  • ansible-sdp/
  • roles/
  • perforce-sdp-install/
  • tasks/
  • install.yml
  • View
  • Commits
  • Open Download .zip Download (6 KB)
- 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.