129 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# 'preferred_signing_key' -> 'gpg_preferred_signing'
 | 
						|
# 'gpg_or_ssh_git_signing' -> 'git_signing_key_type'
 | 
						|
- name: Install git package
 | 
						|
  ansible.builtin.package:
 | 
						|
    name: git
 | 
						|
    state: latest
 | 
						|
- name: Configure git name and email
 | 
						|
  block:
 | 
						|
  - name: Configure git name
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.name
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ git_config_name }}"
 | 
						|
  - name: Configure git email
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.email
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ git_config_email }}"
 | 
						|
- name: Configure git signing GPG key
 | 
						|
  when: git_signing_key_type == "gpg"
 | 
						|
  block:
 | 
						|
  - name: Configure specified git signing GPG key
 | 
						|
    when: preferred_signing_key > -1
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.signingkey
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ gpg_origin_private_keyids[preferred_signing_key] }}"
 | 
						|
    register: selected_signing_key
 | 
						|
  - name: Configure random git signing GPG key
 | 
						|
    when: preferred_signing_key <= -1
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.signingkey
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ gpg_origin_private_keyids | random }}"
 | 
						|
    register: selected_signing_key
 | 
						|
- name: Configure git signing SSH key
 | 
						|
  when: git_signing_key_type == "ssh"
 | 
						|
  block:
 | 
						|
  - name: Acquire SSH key-pairs from other system
 | 
						|
    when: not files_mode
 | 
						|
    block:
 | 
						|
      - name: Acquire private SSH keys from other system
 | 
						|
        delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
						|
        ansible.builtin.command:
 | 
						|
          argv:
 | 
						|
          - cat
 | 
						|
          - "~/.ssh/{{ item }}.ppk"
 | 
						|
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
						|
        register: ssh_secrets
 | 
						|
      - name: Find SSH public keys in other system
 | 
						|
        delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
						|
        ansible.builtin.command:
 | 
						|
          argv:
 | 
						|
          - cat
 | 
						|
          - "~/.ssh/{{ item }}.pub"
 | 
						|
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
						|
        register: ssh_nonsecrets
 | 
						|
      - name: Create private SSH keys
 | 
						|
        ansible.builtin.copy:
 | 
						|
          content: "{{ item }}"
 | 
						|
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ ssh_origin_keypairs_filenames[idx] }}.ppk"
 | 
						|
          force: yes
 | 
						|
          backup: yes
 | 
						|
          mode: "0600"
 | 
						|
          state: present
 | 
						|
        loop: "{{ ssh_secrets.results }}"
 | 
						|
        loop_control:
 | 
						|
          index_var: idx
 | 
						|
        register: created_ssh_private_keys
 | 
						|
      - name: Create public SSH keys
 | 
						|
        ansible.builtin.copy:
 | 
						|
          content: "{{ item }}"
 | 
						|
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ ssh_origin_keypairs_filenames[idx] }}.pub"
 | 
						|
          force: yes
 | 
						|
          backup: yes
 | 
						|
          mode: "0644"
 | 
						|
          state: present
 | 
						|
        loop: "{{ ssh_nonsecrets.results }}"
 | 
						|
        loop_control:
 | 
						|
          index_var: idx
 | 
						|
        register: created_ssh_public_keys
 | 
						|
  - name: Acquire SSH key-pairs
 | 
						|
    when: files_mode
 | 
						|
    block:
 | 
						|
      - name: Transfer private SSH keys
 | 
						|
        ansible.builtin.copy:
 | 
						|
          src: ssh/{{ item }}.ppk
 | 
						|
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ item }}.ppk"
 | 
						|
          force: yes
 | 
						|
          backup: yes
 | 
						|
          mode: "0600"
 | 
						|
          state: present
 | 
						|
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
						|
        loop_control:
 | 
						|
          index_var: idx
 | 
						|
        register: created_ssh_private_keys
 | 
						|
      - name: Transfer public SSH keys
 | 
						|
        ansible.builtin.copy:
 | 
						|
          src: ssh/{{ item }}.pub
 | 
						|
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ item }}.pub"
 | 
						|
          force: yes
 | 
						|
          backup: yes
 | 
						|
          mode: "0644"
 | 
						|
          state: present
 | 
						|
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
						|
        loop_control:
 | 
						|
          index_var: idx
 | 
						|
        register: created_ssh_public_keys
 | 
						|
  - name: Configure acquired, specified SSH public key as git signing key
 | 
						|
    when: preferred_signing_key > -1
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.signingkey
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ created_ssh_public_keys.results[preferred_signing_key] }}"
 | 
						|
    register: selected_signing_key
 | 
						|
  - name: Configure acquired, random SSH public key as git signing key
 | 
						|
    when: preferred_signing_key <= -1
 | 
						|
    community.general.git_config:
 | 
						|
      name: user.signingkey
 | 
						|
      scope: global
 | 
						|
      state: present
 | 
						|
      value: "{{ created_ssh_public_keys.results | random  }}"
 | 
						|
    register: selected_signing_key
 |