From 440ca230359e28195ba44c452b462c5e69efff65 Mon Sep 17 00:00:00 2001 From: varac Date: Sat, 26 Jan 2013 18:52:31 +0100 Subject: beginning of puppet/modules/site_nagios --- puppet/modules/site_nagios/manifests/server.pp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 puppet/modules/site_nagios/manifests/server.pp (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp new file mode 100644 index 00000000..e11ffd48 --- /dev/null +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -0,0 +1,7 @@ +class site_nagios::server { + class {'nagios': + allow_external_cmd => true + } + #include nagios::defaults + +} -- cgit v1.2.3 From 51369107eefffca0c50784b2ad2b51bf56c53512 Mon Sep 17 00:00:00 2001 From: varac Date: Sun, 27 Jan 2013 14:42:04 +0100 Subject: site_nagios: add hosts + services --- puppet/modules/site_nagios/manifests/add_host.pp | 30 ++++++++++++++++++++++ .../modules/site_nagios/manifests/add_service.pp | 22 ++++++++++++++++ puppet/modules/site_nagios/manifests/server.pp | 17 +++++++++--- 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 puppet/modules/site_nagios/manifests/add_host.pp create mode 100644 puppet/modules/site_nagios/manifests/add_service.pp (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_host.pp b/puppet/modules/site_nagios/manifests/add_host.pp new file mode 100644 index 00000000..5148048d --- /dev/null +++ b/puppet/modules/site_nagios/manifests/add_host.pp @@ -0,0 +1,30 @@ +define site_nagios::add_host ($ip, $services='' ) { + + $nagios_hostname = $name + + #notice ("$nagios_hostname $ip $services") + + nagios_host { $nagios_hostname: + address => $ip, + use => 'generic-host', + } + + # turn serice array into hash + # https://github.com/ashak/puppet-resource-looping + $nagios_service_hashpart = { + 'host' => $nagios_hostname, + 'ip' => $ip, + } + $dynamic_parameters = { + 'service' => '%s' + } + + #$nagios_services = ['one', 'two'] + $nagios_servicename = "${nagios_hostname}_%s" + + $nagios_service_hash = create_resources_hash_from($nagios_servicename, $services, $nagios_service_hashpart, $dynamic_parameters) + #notice ($created_resource_hash) + + + create_resources ( site_nagios::add_service, $nagios_service_hash ) +} diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp new file mode 100644 index 00000000..5a5b344f --- /dev/null +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -0,0 +1,22 @@ +define site_nagios::add_service ($host, $ip, $service) { + + notice ('$name $host $ip $service') + + case $service { + 'openvpn': { + $check_command = 'check_openvpn!...' + $service_description = 'Openvpn' + } + 'webapp': { + $check_command = 'check_http!...' + $service_description = 'Website' + } + default: { fail ('unknown service') } + } + + nagios_service { $name: + use => 'generic-service', + check_command => $check_command, + service_description => $service_description, + host_name => $host } +} diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index e11ffd48..df3e00cd 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -1,7 +1,18 @@ class site_nagios::server { - class {'nagios': - allow_external_cmd => true + + $nagios_hiera=hiera('nagios') + $nagiosadmin_pw = $nagios_hiera['nagiosadmin_pw'] + $hosts = $nagios_hiera['hosts'] + + include nagios::defaults + include nagios::base + #Class ['nagios'] -> Class ['nagios::defaults'] + class {'nagios::apache': + allow_external_cmd => true, + stored_config => false, + #before => Class ['nagios::defaults'] } - #include nagios::defaults + + create_resources ( site_nagios::add_host, $hosts) } -- cgit v1.2.3 From ab0792667b57bb034fe23ae24064fad56f3c8163 Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 15:03:10 +0100 Subject: adapted new hiera config, see #1546 --- puppet/modules/site_nagios/manifests/add_host.pp | 29 +++++++++++----------- .../modules/site_nagios/manifests/add_service.pp | 22 ++++++++-------- puppet/modules/site_nagios/manifests/server.pp | 3 +-- 3 files changed, 26 insertions(+), 28 deletions(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_host.pp b/puppet/modules/site_nagios/manifests/add_host.pp index 5148048d..d5aac67c 100644 --- a/puppet/modules/site_nagios/manifests/add_host.pp +++ b/puppet/modules/site_nagios/manifests/add_host.pp @@ -1,30 +1,29 @@ -define site_nagios::add_host ($ip, $services='' ) { - - $nagios_hostname = $name - - #notice ("$nagios_hostname $ip $services") +define site_nagios::add_host { + $nagios_host = $name + $nagios_hostname = $name['domain_full'] + $nagios_ip = $name['ip_address'] + $nagios_services = $name['services'] + # Add Nagios host nagios_host { $nagios_hostname: - address => $ip, + address => $nagios_ip, use => 'generic-host', } - # turn serice array into hash - # https://github.com/ashak/puppet-resource-looping + # Add Nagios service + + # First, we need to turn the serice array into hash, using a "hash template" + # see https://github.com/ashak/puppet-resource-looping $nagios_service_hashpart = { - 'host' => $nagios_hostname, - 'ip' => $ip, + 'hostname' => $nagios_hostname, + 'ip_address' => $nagios_ip, } $dynamic_parameters = { 'service' => '%s' } - - #$nagios_services = ['one', 'two'] $nagios_servicename = "${nagios_hostname}_%s" - $nagios_service_hash = create_resources_hash_from($nagios_servicename, $services, $nagios_service_hashpart, $dynamic_parameters) - #notice ($created_resource_hash) - + $nagios_service_hash = create_resources_hash_from($nagios_servicename, $nagios_services, $nagios_service_hashpart, $dynamic_parameters) create_resources ( site_nagios::add_service, $nagios_service_hash ) } diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index 5a5b344f..1a69e068 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -1,22 +1,22 @@ -define site_nagios::add_service ($host, $ip, $service) { - - notice ('$name $host $ip $service') +define site_nagios::add_service ($hostname, $ip_address, $service) { case $service { 'openvpn': { - $check_command = 'check_openvpn!...' + $check_command = 'check_openvpn' $service_description = 'Openvpn' } 'webapp': { - $check_command = 'check_http!...' + $check_command = 'check_http' $service_description = 'Website' } - default: { fail ('unknown service') } + default: { notice ("No Nagios service check for service \"$service\"") } } - nagios_service { $name: - use => 'generic-service', - check_command => $check_command, - service_description => $service_description, - host_name => $host } + if ( $check_command != '' ) { + nagios_service { $name: + use => 'generic-service', + check_command => $check_command, + service_description => $service_description, + host_name => $hostname } + } } diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index df3e00cd..a8ebeaf4 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -13,6 +13,5 @@ class site_nagios::server { #before => Class ['nagios::defaults'] } - create_resources ( site_nagios::add_host, $hosts) - + site_nagios::add_host {$hosts:} } -- cgit v1.2.3 From f8e3cf9aa8362c5ec36d3b0d33477898a2fd5c0c Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 16:14:26 +0100 Subject: deploy openvpn check --- puppet/modules/site_nagios/manifests/add_service.pp | 2 +- puppet/modules/site_nagios/manifests/server.pp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index 1a69e068..a1f99cc9 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -2,7 +2,7 @@ define site_nagios::add_service ($hostname, $ip_address, $service) { case $service { 'openvpn': { - $check_command = 'check_openvpn' + $check_command = "check_openvpn_server_ip_port!$ip_address!1194" $service_description = 'Openvpn' } 'webapp': { diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index a8ebeaf4..fe3ab542 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -13,5 +13,13 @@ class site_nagios::server { #before => Class ['nagios::defaults'] } + # deploy serverside plugins + file { '/usr/lib/nagios/plugins/check_openvpn_server.pl': + source => 'puppet:///modules/nagios/plugins/check_openvpn_server.pl', + mode => '0755', + owner => 'nagios', + group => 'nagios', + } + site_nagios::add_host {$hosts:} } -- cgit v1.2.3 From 8164205e06ecd9e1c68b788425cb4f71129b1061 Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 16:15:33 +0100 Subject: don't deploy openvpn check until we fix #1546 --- puppet/modules/site_nagios/manifests/add_service.pp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index a1f99cc9..d8293b42 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -1,10 +1,10 @@ define site_nagios::add_service ($hostname, $ip_address, $service) { case $service { - 'openvpn': { - $check_command = "check_openvpn_server_ip_port!$ip_address!1194" - $service_description = 'Openvpn' - } + #'openvpn': { + # $check_command = "check_openvpn_server_ip_port!$ip_address!1194" + # $service_description = 'Openvpn' + #} 'webapp': { $check_command = 'check_http' $service_description = 'Website' -- cgit v1.2.3 From f34cecba90941f3e4acbe88cab6ce0b5a76b8ce2 Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 16:21:11 +0100 Subject: use check_https for website --- puppet/modules/site_nagios/manifests/add_service.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index d8293b42..5b282ac4 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -6,7 +6,7 @@ define site_nagios::add_service ($hostname, $ip_address, $service) { # $service_description = 'Openvpn' #} 'webapp': { - $check_command = 'check_http' + $check_command = 'check_https' $service_description = 'Website' } default: { notice ("No Nagios service check for service \"$service\"") } -- cgit v1.2.3 From 76375b224bd621ab2238fa49207ca928892cd6f5 Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 16:59:18 +0100 Subject: disabled notice about nagios services not deployed --- puppet/modules/site_nagios/manifests/add_service.pp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index 5b282ac4..25babd18 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -1,6 +1,7 @@ define site_nagios::add_service ($hostname, $ip_address, $service) { case $service { + # don't deploy until we fix 1546 #'openvpn': { # $check_command = "check_openvpn_server_ip_port!$ip_address!1194" # $service_description = 'Openvpn' @@ -9,7 +10,9 @@ define site_nagios::add_service ($hostname, $ip_address, $service) { $check_command = 'check_https' $service_description = 'Website' } - default: { notice ("No Nagios service check for service \"$service\"") } + default: { + #notice ("No Nagios service check for service \"$service\"") + } } if ( $check_command != '' ) { -- cgit v1.2.3 From 5380b3add3c1cd9c016905d0c339744fc9f2be98 Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 22:03:23 +0100 Subject: re-add nagios service check openvpn --- puppet/modules/site_nagios/manifests/add_host.pp | 14 ++++++++------ puppet/modules/site_nagios/manifests/add_service.pp | 11 ++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_host.pp b/puppet/modules/site_nagios/manifests/add_host.pp index d5aac67c..498552b5 100644 --- a/puppet/modules/site_nagios/manifests/add_host.pp +++ b/puppet/modules/site_nagios/manifests/add_host.pp @@ -1,8 +1,9 @@ define site_nagios::add_host { - $nagios_host = $name - $nagios_hostname = $name['domain_full'] - $nagios_ip = $name['ip_address'] - $nagios_services = $name['services'] + $nagios_host = $name + $nagios_hostname = $name['domain_internal'] + $nagios_ip = $name['ip_address'] + $nagios_services = $name['services'] + $nagios_openvpn_gw = $name['openvpn_gateway_address'] # Add Nagios host nagios_host { $nagios_hostname: @@ -15,8 +16,9 @@ define site_nagios::add_host { # First, we need to turn the serice array into hash, using a "hash template" # see https://github.com/ashak/puppet-resource-looping $nagios_service_hashpart = { - 'hostname' => $nagios_hostname, - 'ip_address' => $nagios_ip, + 'hostname' => $nagios_hostname, + 'ip_address' => $nagios_ip, + 'openvpn_gw' => $nagios_openvpn_gw, } $dynamic_parameters = { 'service' => '%s' diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index 25babd18..280cb010 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -1,11 +1,12 @@ -define site_nagios::add_service ($hostname, $ip_address, $service) { +define site_nagios::add_service ( + $hostname, $ip_address, $openvpn_gw = '', $service) { case $service { # don't deploy until we fix 1546 - #'openvpn': { - # $check_command = "check_openvpn_server_ip_port!$ip_address!1194" - # $service_description = 'Openvpn' - #} + 'openvpn': { + $check_command = "check_openvpn_server_ip_port!$openvpn_gw!1194" + $service_description = 'Openvpn' + } 'webapp': { $check_command = 'check_https' $service_description = 'Website' -- cgit v1.2.3 From 39cd7faddb030dbf4f789ff5964e5c96201c64dc Mon Sep 17 00:00:00 2001 From: varac Date: Mon, 28 Jan 2013 22:33:25 +0100 Subject: set nagiosadmin htpasswd --- puppet/modules/site_nagios/manifests/server.pp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index fe3ab542..7c17fe82 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -1,7 +1,7 @@ -class site_nagios::server { +class site_nagios::server inherits nagios::base { $nagios_hiera=hiera('nagios') - $nagiosadmin_pw = $nagios_hiera['nagiosadmin_pw'] + $nagiosadmin_pw = htpasswd_sha1($nagios_hiera['nagiosadmin_pw']) $hosts = $nagios_hiera['hosts'] include nagios::defaults @@ -13,6 +13,13 @@ class site_nagios::server { #before => Class ['nagios::defaults'] } + File ['nagios_htpasswd'] { + source => undef, + content => "nagiosadmin:$nagiosadmin_pw", + mode => '0640', + } + + # deploy serverside plugins file { '/usr/lib/nagios/plugins/check_openvpn_server.pl': source => 'puppet:///modules/nagios/plugins/check_openvpn_server.pl', -- cgit v1.2.3 From 64a3ec6ac5a064800a32170c2e8d058ab8b7dd62 Mon Sep 17 00:00:00 2001 From: varac Date: Tue, 29 Jan 2013 18:57:56 +0100 Subject: Purge nagios config files on every run (Feature #1544) --- puppet/modules/site_nagios/manifests/server.pp | 5 +++++ puppet/modules/site_nagios/manifests/server/purge.pp | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 puppet/modules/site_nagios/manifests/server/purge.pp (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index 7c17fe82..5e2f832b 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -1,5 +1,10 @@ class site_nagios::server inherits nagios::base { + # First, purge old nagios config (see #1467) + class { 'site_nagios::server::purge': + stage => initial + } + $nagios_hiera=hiera('nagios') $nagiosadmin_pw = htpasswd_sha1($nagios_hiera['nagiosadmin_pw']) $hosts = $nagios_hiera['hosts'] diff --git a/puppet/modules/site_nagios/manifests/server/purge.pp b/puppet/modules/site_nagios/manifests/server/purge.pp new file mode 100644 index 00000000..66c27dd5 --- /dev/null +++ b/puppet/modules/site_nagios/manifests/server/purge.pp @@ -0,0 +1,7 @@ +class site_nagios::server::purge { + exec {'purge_conf.d': + command => '/bin/rm -rf /etc/nagios3/conf.d', + onlyif => 'test -e /etc/nagios3/conf.d' + } + +} -- cgit v1.2.3 From ced1717ae310c5b24fffd041c8af38b016d90ed4 Mon Sep 17 00:00:00 2001 From: varac Date: Thu, 31 Jan 2013 11:40:41 +0100 Subject: include site_nagios so every subclass inherits tag 'service' --- puppet/modules/site_nagios/manifests/init.pp | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 puppet/modules/site_nagios/manifests/init.pp (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/init.pp b/puppet/modules/site_nagios/manifests/init.pp new file mode 100644 index 00000000..57da3011 --- /dev/null +++ b/puppet/modules/site_nagios/manifests/init.pp @@ -0,0 +1,4 @@ +class site_nagios { + tag 'service' + include site_nagios::server +} -- cgit v1.2.3 From 5addc36a364186d53d13304182d6f41b30f6a890 Mon Sep 17 00:00:00 2001 From: varac Date: Thu, 31 Jan 2013 11:41:13 +0100 Subject: just purge the nagios3/conf.d content, not the dir itself --- puppet/modules/site_nagios/manifests/server/purge.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/server/purge.pp b/puppet/modules/site_nagios/manifests/server/purge.pp index 66c27dd5..39735cd3 100644 --- a/puppet/modules/site_nagios/manifests/server/purge.pp +++ b/puppet/modules/site_nagios/manifests/server/purge.pp @@ -1,6 +1,6 @@ class site_nagios::server::purge { exec {'purge_conf.d': - command => '/bin/rm -rf /etc/nagios3/conf.d', + command => '/bin/rm -rf /etc/nagios3/conf.d/*', onlyif => 'test -e /etc/nagios3/conf.d' } -- cgit v1.2.3 From e6fe80f9460b8bc013068e1dda8be6230b8d60a4 Mon Sep 17 00:00:00 2001 From: varac Date: Thu, 31 Jan 2013 19:09:19 +0100 Subject: tag 'base' is a bad idea because it invokes apache::base as well --- puppet/modules/site_nagios/manifests/init.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/init.pp b/puppet/modules/site_nagios/manifests/init.pp index 57da3011..cab32905 100644 --- a/puppet/modules/site_nagios/manifests/init.pp +++ b/puppet/modules/site_nagios/manifests/init.pp @@ -1,4 +1,4 @@ class site_nagios { - tag 'service' + tag 'leap_service' include site_nagios::server } -- cgit v1.2.3 From 0f47539146baa793a17739ede0137312d333bb9e Mon Sep 17 00:00:00 2001 From: varac Date: Wed, 6 Feb 2013 23:37:32 +0100 Subject: nagios: don't check openvpn, check cmd doesn't work --- puppet/modules/site_nagios/manifests/add_service.pp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/add_service.pp b/puppet/modules/site_nagios/manifests/add_service.pp index 280cb010..6ef3cbf5 100644 --- a/puppet/modules/site_nagios/manifests/add_service.pp +++ b/puppet/modules/site_nagios/manifests/add_service.pp @@ -2,14 +2,9 @@ define site_nagios::add_service ( $hostname, $ip_address, $openvpn_gw = '', $service) { case $service { - # don't deploy until we fix 1546 - 'openvpn': { - $check_command = "check_openvpn_server_ip_port!$openvpn_gw!1194" - $service_description = 'Openvpn' - } 'webapp': { - $check_command = 'check_https' - $service_description = 'Website' + $check_command = 'check_https_cert' + $service_description = 'Website Certificate' } default: { #notice ("No Nagios service check for service \"$service\"") -- cgit v1.2.3 From 5c0d817778b57b253c7443145fa928547f48e9f5 Mon Sep 17 00:00:00 2001 From: varac Date: Sat, 9 Feb 2013 15:05:16 +0100 Subject: site_shorewall::monitor: allow port 80 + 443 --- puppet/modules/site_nagios/manifests/server.pp | 1 + 1 file changed, 1 insertion(+) (limited to 'puppet/modules/site_nagios/manifests') diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index 5e2f832b..c98a8a1f 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -34,4 +34,5 @@ class site_nagios::server inherits nagios::base { } site_nagios::add_host {$hosts:} + include site_shorewall::monitor } -- cgit v1.2.3