# install git # dependencies: pb_its_server-redmine.yml - hosts: its_servers become: true become_method: sudo environment: "{{ proxy_env }}" vars: redmine_path: /srv/redmine tasks: - name: check facts fail: msg: "Not compatible with [{{ ansible_os_family }}] \ {{ ansible_distribution }} \ {{ ansible_distribution_major_version }}." when: > ansible_os_family != 'RedHat' or ansible_distribution_major_version|int < 7 - name: check redmine stat: path={{ redmine_path }} register: result01 - fail: msg: "pb_its_server-redmine.yml has been executed yet." when: result01.stat.exists == false - name: install RPMs dnf: name: - git state: latest - name: create repos-git.conf copy: src: repos-git.conf dest: "{{ redmine_path }}/../httpd/conf.d/repos-git.conf" force: no mode: 0640 - name: read RedmineDbPass in .env slurp: src: "{{ redmine_path }}/.env" register: result03 - name: RedmineDbPass in repos-git.conf lineinfile: dest: "{{ redmine_path }}/../httpd/conf.d/repos-git.conf" regexp: "^ RedmineDbPass" line: " RedmineDbPass {{ result03['content'] | b64decode \ | regex_findall('REDMINE_DB_PASSWORD=(.+)\\n') | first }}" notify: - restart httpd-perl - name: gitcreate.sh copy: dest: /usr/local/bin/gitcreate.sh force: no content: | #!/bin/sh ## gitcreate ## ## @author Jomora ## @version 2021.03.23 ## config (required) REPOS_BASE=/var/lib/git ## config (option) ### none ## do not modify below set -e umask 002 BASENAME=`basename $0` usage() { cat <<_EOT_ 1>&2 usage: $BASENAME {repository name} _EOT_ exit 1 } if [ "$1" = "" ]; then usage fi REPOS_NAME=$1 ## functions create_repos() { git init --bare --shared ${REPOS_BASE}/${REPOS_NAME} cd ${REPOS_BASE}/${REPOS_NAME} cp hooks/post-update.sample hooks/post-update git update-server-info git config --local core.ignorecase false git config --local core.quotepath false } create_repos owner: bin group: users mode: 0654 - name: backup dir file: path={{ redmine_path }}/../backup state=directory - name: backup-git-repos.service copy: dest: /etc/systemd/system/backup-git-repos.service content: | [Unit] Description=backup git repositories [Service] Type=oneshot ExecStart=/bin/sh -c "tar -C /var/lib/git \ -czf {{ redmine_path }}/../backup/git_repos_$(date +%%F).tar.gz ." ExecStartPost=/bin/find {{ redmine_path }}/../backup \ -name "git_repos_*.tar.gz" -mtime +30 -delete - name: backup-git-repos.timer copy: dest: /etc/systemd/system/backup-git-repos.timer content: | [Unit] Description=backup git repositories [Timer] OnCalendar=daily RandomizedDelaySec=1h Persistent=true [Install] WantedBy=timers.target - name: enable timers systemd: name: "{{ item }}" daemon_reload: yes enabled: yes state: started loop: - backup-git-repos.timer - name: check shell: systemctl list-unit-files | egrep "STATE|backup" && systemctl list-timers --all changed_when: false register: result01 - debug: msg={{ result01.stdout_lines }} handlers: - name: restart httpd-perl systemd: name: container-httpd-perl.service state: restarted