- name: Set local facts set_fact: gitolite_ssh_key: ~/.ssh/id_ed25519.gitolite - name: Install host requisites dnf: name: cgit,gitolite3,python3-pygments,python3-docutils,python3-markdown state: latest - name: Copy cgit logo copy: src: cgit-logo.png dest: /var/www/git.jaseg.de/cgit.png - name: Copy cgit favicon copy: src: cgit-favicon.ico dest: /var/www/git.jaseg.de/favicon.ico - name: Create cgit instance config dir file: path: /var/lib/cgit state: directory mode: 0755 - name: Copy cgit rc copy: src: cgitrc dest: /var/lib/cgit/cgitrc-gitolite-public mode: 0644 - name: Create uwsgi worker user and group user: name: uwsgi-cgit create_home: no group: uwsgi password: '!' shell: /sbin/nologin system: yes - name: Copy uwsgi config copy: src: uwsgi-cgit.ini dest: /etc/uwsgi.d/cgit.ini owner: uwsgi-cgit group: uwsgi mode: 0440 - name: Enable uwsgi systemd socket systemd: daemon-reload: yes name: uwsgi-app@cgit.socket enabled: yes state: started - name: Check if gitolite ssh config exists stat: path: /var/lib/gitolite3/.ssh/authorized_keys register: gitolite_ssh_keys_stat - name: Gitolite admin key setup block: - name: Copy gitolite admin pubkey copy: src: "{{gitolite_ssh_key}}.pub" dest: /tmp/jaseg-gitolite.pub owner: gitolite3 group: gitolite3 - name: Run gitolite initialization command: gitolite setup -pk /tmp/jaseg-gitolite.pub become: true become_method: su become_user: gitolite3 become_flags: '-s /bin/sh' args: creates: /var/lib/gitolite3/projects.list - name: Remove leftover admin pubkey file: state: absent path: /tmp/jaseg-gitolite.pub when: not gitolite_ssh_keys_stat.stat.exists - name: Allow uwsgi group to access gitolite repo dir file: path: /var/lib/gitolite3 state: directory owner: gitolite3 group: uwsgi - name: Add cgit uwsgi user to gitolite group user: name: uwsgi-cgit groups: gitolite3 append: yes - name: Copy gitolite rc copy: src: gitolite.rc dest: /var/lib/gitolite3/.gitolite.rc owner: gitolite3 group: gitolite3 mode: 0600 - name: Query system user account info getent: database: passwd key: gitolite3 - name: Create git alias user user: name: git create_home: no group: gitolite3 password: '!' comment: Alias for gitolite3 user shell: "{{ getent_passwd['gitolite3'][5] }}" system: yes non_unique: yes home: "{{ getent_passwd['gitolite3'][4] }}" uid: "{{ getent_passwd['gitolite3'][1] }}" - name: Upload gitolite-admin repo command: env "GIT_SSH_COMMAND=ssh -i {{gitolite_ssh_key}}" git push --force git@{{ansible_hostname}}:gitolite-admin.git master args: chdir: checkouts/gitolite-admin delegate_to: localhost - name: Create gitolite hook dir file: path: /var/lib/gitolite3/local/hooks/repo-specific state: directory owner: gitolite3 group: gitolite3 mode: 0755 - name: Copy blog.jaseg.de git deployment script copy: src: gitolite-site-deploy-hook.sh dest: /var/lib/gitolite3/local/hooks/repo-specific owner: gitolite3 group: gitolite3 mode: 0755 - name: Create blog content dir file: path: /var/www/blog.jaseg.de state: directory owner: nginx group: gitolite3 mode: 0570 - name: Hack to fix cgit handling for restructuredtext readmes file: src: /usr/bin/rst2html dest: /usr/bin/rst2html.py state: link - name: Allow cgit uwsgi user to access gitolite repos file: path: /var/lib/gitolite3/repositories mode: 0750 - name: Allow cgit uwsgi user to gitolite repo list file: path: /var/lib/gitolite3/projects.list mode: 0640