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