Files
oopen-server/roles/common/tasks/git.yml
T

565 lines
14 KiB
YAML

---
# - name: (git.yml) include variables
# include_vars: "{{ item }}"
# with_first_found:
# - "git-{{ inventory_hostname }}.yml"
# - "git-{{ ansible_distribution_release }}.yml"
# - "git-{{ ansible_distribution | lower }}.yml"
# - git-default.yml
# tags:
# - git-default-repositories
# - git-lxc-guest-repositories
# - git-apache2-repositories
# - git-nginx-repositories
# - git-mysql-server-repositories
# - git-postgresql-server-repositories
# - git-nextcloud-server-repositories
# - git-dns-server-repositories
# - git-backup-server-repositories
# - git-samba-server-repositories
# - git-mailservers-repositories
# - git-sympa-repositories
# - git-other-repositories
# ---
# Firewall repository
# ---
- name: (git.yml) Install/Update firewall repository
ansible.builtin.git:
repo: "{{ git_firewall_repository.repo }}"
dest: "{{ git_firewall_repository.dest }}"
version: >-
{{
git_firewall_repository.version
| default(git_firewall_repository.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ git_firewall_repository.repo ~ ' master') | length > 0)
else 'main'
)
}}
when: git_firewall_repository is defined and git_firewall_repository | length > 0
tags:
- git-firewall-repository
# ---
# Default reposotories
# ---
- name: (git.yml) Install/Update default repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_default_repositories }}"
loop_control:
label: "{{ item.name }}"
tags:
- git-default-repositories
# ---
# Group [oopen_server] reposotories
# ---
- name: (git.yml) Install/Update oopen_server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_oopen_server_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['oopen_server']|string is search(inventory_hostname)"
tags:
- git-oopen-server-repositories
# ---
# Group [warenform_server] reposotories
# ---
- name: (git.yml) Install/Update warenform_server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_warenform_server_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['warenform_server']|string is search(inventory_hostname)"
tags:
- git-warenform-server-repositories
# ---
# Group [lxc_guest] reposotories
# ---
- name: (git.yml) Install/Update lxc_guest repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_lxc_guest_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['lxc_guest']|string is search(inventory_hostname)"
tags:
- git-lxc-guest-repositories
# ---
# Group [lxc_host] reposotories
# ---
- name: (git.yml) Install/Update lxc_host repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_lxc_host_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['lxc_host']|string is search(inventory_hostname)"
tags:
- git-lxc-host-repositories
# ---
# Group [gateway_server] reposotories
# ---
- name: (git.yml) Install/Update gateway repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_gateway_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['gateway_server']|string is search(inventory_hostname)"
tags:
- git-gateway-server-repositories
# ---
# Group [apache2_webserver] reposotories
# ---
- name: (git.yml) Install/Update apache2 repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_apache2_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['apache2_webserver']|string is search(inventory_hostname)"
tags:
- git-apache2-repositories
# ---
# Group [nginx_webserver] reposotories
# ---
- name: (git.yml) Install/Update nginx repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_nginx_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['nginx_webserver']|string is search(inventory_hostname)"
tags:
- git-nginx-repositories
# ---
# Group [mysql_server] reposotories
# ---
- name: (git.yml) Install/Update mysql server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_mysql_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['mysql_server']|string is search(inventory_hostname)"
tags:
- git-mysql-server-repositories
# ---
# Group [postgresql_server] reposotories
# ---
- name: (git.yml) Install/Update postgresql-server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_postgresql_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['postgresql_server']|string is search(inventory_hostname)"
tags:
- git-postgresql-server-repositories
# ---
# Group [nextcloud_server] reposotories
# ---
- name: (git.yml) Install/Update nextcloud server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_nextcloud_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['nextcloud_server']|string is search(inventory_hostname)"
tags:
- git-nextcloud-server-repositories
# ---
# Group [dns_server] reposotories
# ---
- name: (git.yml) Install/Update dns server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_dns_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['dns_server']|string is search(inventory_hostname)"
tags:
- git-dns-server-repositories
# ---
# Group [backup_server] reposotories
# ---
# Optional repositories: tolerate transient network errors, but fail on config/auth/permission issues.
- name: (git.yml) Install/Update backup server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_backup_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['backup_server']|string is search(inventory_hostname)"
failed_when: >-
failed and (
msg is not defined or (
('Could not resolve host' not in msg)
and ('Connection timed out' not in msg)
and ('Failed to connect to' not in msg)
and ('Connection reset by peer' not in msg)
and ('Operation timed out' not in msg)
)
)
tags:
- git-backup-server-repositories
# ---
# Group [samba_server] reposotories
# ---
# Same policy as backup repositories: only temporary connectivity problems are accepted.
- name: (git.yml) Install/Update samba server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_samba_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['samba_server']|string is search(inventory_hostname)"
failed_when: >-
failed and (
msg is not defined or (
('Could not resolve host' not in msg)
and ('Connection timed out' not in msg)
and ('Failed to connect to' not in msg)
and ('Connection reset by peer' not in msg)
and ('Operation timed out' not in msg)
)
)
tags:
- git-samba-server-repositories
# ---
# Group [mail_server] reposotories
# ---
- name: (git.yml) Install/Update mail server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_mailserver_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['mail_server']|string is search(inventory_hostname)"
tags:
- git-mailservers-repositories
# ---
# Group [sympa_list_servers] reposotories
# ---
- name: (git.yml) Install/Update sympa server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_sympa_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['sympa_list_server']|string is search(inventory_hostname)"
tags:
- git-sympa-repositories
# ---
# Group [jitsi_meet_server] reposotories
# ---
- name: (git.yml) Install/Update sympa server repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
with_items: "{{ git_jitsi_meet_repositories }}"
loop_control:
label: "{{ item.name }}"
when: "groups['jitsi_meet_server']|string is search(inventory_hostname)"
tags:
- git-jitsi_meet-repositories
# ---
# Group [so36_server_dehydrated] reposotories
# ---
# - name: (git.yml) Install/Update sympa server repositories
# git:
# repo: '{{ item.repo }}'
# dest: '{{ item.dest }}'
# with_items: '{{ git_so36_dehydrated_repositories }}'
# loop_control:
# label: "{{ item.name }}"
# when: "groups['so36_server_dehydrated']|string is search(inventory_hostname)"
# tags:
# - git-so36-dehydrated-repositories
# ---
# Other (host specific) repositories
# ---
# Read in host specific vars file if exists
- name: (git.yml) Check for host specific git vars file
ansible.builtin.stat:
path: "vars/git-{{ inventory_hostname }}.yml"
register: common_git_host_vars_file
tags:
- git-other-repositories
- name: (git.yml) Include only files matching git-<hostname>.yml (2.2)
ansible.builtin.include_vars:
file: "vars/git-{{ inventory_hostname }}.yml"
when: common_git_host_vars_file.stat.exists
tags:
- git-other-repositories
- name: (git.yml) Install/Update other repositories
ansible.builtin.git:
repo: "{{ item.repo }}"
dest: "{{ item.dest }}"
version: >-
{{
item.version
| default(item.branch)
| default(
'master'
if (lookup('pipe', 'git ls-remote --heads ' ~ item.repo ~ ' master') | length > 0)
else 'main'
)
}}
loop_control:
label: "{{ item.name }}"
with_items: "{{ git_other_repositories }}"
tags:
- git-other-repositories