diff --git a/.vscode/settings.json b/.vscode/settings.json index 2aa5b11..d0e945d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,11 +21,13 @@ "refreshonly", "repolist", "requestlogging", + "rubygems", "springframework", "startswith", "Supress", "trapperkeeper", "utcnow", - "uvicorn" + "uvicorn", + "webrick" ] } \ No newline at end of file diff --git a/doc/_index.html b/doc/_index.html index d89e6e3..9ec1e15 100644 --- a/doc/_index.html +++ b/doc/_index.html @@ -73,11 +73,6 @@ -
  • - puppet_cd::firewall::iptables - -
  • -
  • puppet_cd::main::config @@ -103,11 +98,6 @@
  • -
  • - puppet_cd::params - -
  • -
  • puppet_cd::puppetdb::dirs diff --git a/doc/puppet_class_list.html b/doc/puppet_class_list.html index 78cd518..5cdd80e 100644 --- a/doc/puppet_class_list.html +++ b/doc/puppet_class_list.html @@ -43,55 +43,41 @@
  • -
  • -
    - puppet_cd::firewall::iptables -
    -
  • - - -
  • +
  • puppet_cd::main::config
  • -
  • +
  • puppet_cd::main::dirs
  • -
  • +
  • puppet_cd::main::files
  • -
  • +
  • puppet_cd::main::install
  • -
  • +
  • puppet_cd::main::user
  • -
  • -
    - puppet_cd::params -
    -
  • - -
  • puppet_cd::puppetdb::dirs diff --git a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Aconfig.html b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Aconfig.html index 52770d4..be28782 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Aconfig.html +++ b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Aconfig.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Adirs.html b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Adirs.html index 2f6fb4d..ac7901f 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Adirs.html +++ b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Adirs.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Afiles.html b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Afiles.html index 9491674..1f5d6e1 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Afiles.html +++ b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Afiles.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Ainstall.html b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Ainstall.html index 292829a..ddfa784 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Ainstall.html +++ b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Ainstall.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Auser.html b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Auser.html index 94ec425..82be101 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Auser.html +++ b/doc/puppet_classes/puppet_cd_3A_3Amain_3A_3Auser.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Adirs.html b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Adirs.html index b0c25f1..70e2765 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Adirs.html +++ b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Adirs.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Afiles.html b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Afiles.html index 5f82142..0ee5134 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Afiles.html +++ b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Afiles.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Aservice.html b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Aservice.html index 70af012..77e9942 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Aservice.html +++ b/doc/puppet_classes/puppet_cd_3A_3Apuppetdb_3A_3Aservice.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Ar10k_3A_3Ainstall.html b/doc/puppet_classes/puppet_cd_3A_3Ar10k_3A_3Ainstall.html index 828aff0..c45414b 100644 --- a/doc/puppet_classes/puppet_cd_3A_3Ar10k_3A_3Ainstall.html +++ b/doc/puppet_classes/puppet_cd_3A_3Ar10k_3A_3Ainstall.html @@ -64,7 +64,7 @@
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    @@ -164,7 +164,29 @@ 66 67 68 -69 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91
    # File 'manifests/r10k/install.pp', line 6
    @@ -191,6 +213,7 @@ class puppet_cd::r10k::install (
         package { 'r10k':
           ensure   => $pt_pkg_ensure,
           provider => gem,
    +      require  => Package[$pt_r10k_pkg],
         }
     
         # create r10k dir
    @@ -219,16 +242,37 @@ class puppet_cd::r10k::install (
           require  => File['r10k_dir'],
           content  => template($pt_r10k_erb),
         }
    +
         if $pt_use_r10k_webhook == true {
    -      file { $pt_r10k_webhook_pkg:
    -        ensure => file,
    -        source => 'puppet:///modules/puppet_cd/webhook-go.rpm'
    +      package { $pt_r10k_webhook_pkg:
    +        ensure   => present,
    +        provider => gem,
    +        require  => Package[$pt_r10k_pkg],
           }
     
    -      exec { 'install rpm':
    -        command => "yum install -y ${pt_r10k_webhook_pkg}",
    -        unless  => 'rpm -qa | grep webhook-go',
    -        require => File[$pt_r10k_webhook_pkg],
    +      exec { 'create symlink':
    +        command => $pt_webhook_link,
    +        creates => '/usr/bin/r10k_gitlab_webhook',
    +        path    => ['/bin', '/usr/bin'],
    +        require => Package[$pt_r10k_webhook_pkg],
    +      }
    +
    +      file { $pt_webhook_service_file:
    +        ensure   => file,
    +        owner    => 'root',
    +        group    => 'root',
    +        mode     => '0664',
    +        selrange => s0,
    +        selrole  => object_r,
    +        seltype  => puppet_etc_t,
    +        seluser  => unconfined_u,
    +        content  => template($pt_webhook_service_erb),
    +        notify   => [Service[$pt_r10k_webhook_service],Exec['systemctl-daemon-reload']],
    +      }
    +
    +      exec { 'systemctl-daemon-reload':
    +        command     => '/bin/systemctl daemon-reload',
    +        refreshonly => true,
           }
         }
       }
    diff --git a/doc/puppet_classes/puppet_cd_3A_3Aserver_3A_3Aservice.html b/doc/puppet_classes/puppet_cd_3A_3Aserver_3A_3Aservice.html
    index 736876d..0ae173d 100644
    --- a/doc/puppet_classes/puppet_cd_3A_3Aserver_3A_3Aservice.html
    +++ b/doc/puppet_classes/puppet_cd_3A_3Aserver_3A_3Aservice.html
    @@ -64,7 +64,7 @@
       
       
    Inherits:
    -
    puppet_cd::params
    +
    puppet_cd::params
    @@ -149,8 +149,7 @@ 51 52 53 -54 -55
    +54
    # File 'manifests/server/service.pp', line 6
    @@ -196,8 +195,7 @@ class puppet_cd::server::service (
       # manage webhook service
       if $pt_use_r10k_webhook == true {
         require puppet_cd::r10k::install
    -
    -    service { $pt_webhook_service:
    +    service { $pt_r10k_webhook_service:
           ensure     => running,
           hasstatus  => true,
           hasrestart => true,
    diff --git a/files/webhook-go.rpm b/files/webhook-go.rpm
    deleted file mode 100644
    index 6697a58..0000000
    Binary files a/files/webhook-go.rpm and /dev/null differ
    diff --git a/manifests/firewall/iptables.pp b/manifests/firewall/iptables.pp
    index a109b8c..cb0d1ce 100644
    --- a/manifests/firewall/iptables.pp
    +++ b/manifests/firewall/iptables.pp
    @@ -18,9 +18,9 @@ class puppet_cd::firewall::iptables (
           jump  => 'accept',
         }
         if $pt_use_r10k_webhook == true {
    -      firewall { '34000 open port 4000':
    +      firewall { "3${pt_r10k_webhook_port} open port ${pt_r10k_webhook_port}":
             proto => 'tcp',
    -        dport => '4000',
    +        dport => $pt_r10k_webhook_port
             jump  => 'accept',
           }
         }
    diff --git a/manifests/params.pp b/manifests/params.pp
    index af23adc..a5e41e4 100644
    --- a/manifests/params.pp
    +++ b/manifests/params.pp
    @@ -82,8 +82,9 @@
     # @param [String] pt_r10k_remote the remote url for the r10k control repo
     # @param [Boolean] pt_r10k_prefix the r10k prefix. defaults to false
     # @param [String] pt_r10k_basedir the base directory for r10k.yaml
    -# @param [String] pt_r10k_webhook_pkg the packages for the r10k webhook
    +# @param [Array] pt_r10k_webhook_pkg the packages for the r10k webhook
     # @param [Boolean] pt_manage_user whether to manage the puppet user
    +# @param [String] pt_r10k_webhook_port the port for the webhook listener
     ###############################################################################
     class puppet_cd::params (
     
    @@ -96,8 +97,8 @@ class puppet_cd::params (
       String $pt_agent_pkg              = 'puppet-agent',
       String $pt_server_pkg             = 'puppetserver',
       Array $pt_db_pkg                  = ['puppetdb','puppetdb-termini'],
    -  Array $pt_r10k_pkg                = ['ruby','ruby-devel','gcc','make','redhat-rpm-config','rpm-build'],
    -  String $pt_r10k_webhook_pkg       = '/tmp/webhook-go.rpm',
    +  Array $pt_r10k_pkg                = ['ruby','ruby-devel','rubygems','gcc','make'],
    +  Array $pt_r10k_webhook_pkg        = ['webrick', 'r10k_gitlab_webhook'],
     
       # user settings
       ## puppet user
    @@ -175,6 +176,7 @@ class puppet_cd::params (
       String $pt_r10k_remote            = 'git@gitlab.example.net/repo.git',
       Boolean $pt_r10k_prefix           = false,
       String $pt_r10k_basedir           = '/etc/puppetlabs/code/environments',
    +  String $pt_r10k_webhook_port      = '8080'.
     
     ) {
     # facts
    @@ -232,12 +234,15 @@ class puppet_cd::params (
     ## r10k
       $pt_r10k_file                     = "${pt_r10k_dir}/r10k.yaml"
       $pt_r10k_erb                      = 'puppet_cd/r10k/r10k.yaml.erb'
    +  $pt_webhook_link                  = 'ln -sf  /usr/local/share/gems/gems/r10k_gitlab_webhook-0.1.3/bin/r10k_gitlab_webhook /usr/bin/'
    +  $pt_webhook_service_file          = '/etc/systemd/system/r10k_gitlab_webhook.service'
    +  $pt_webhook_service_erb           = 'puppet_cd/r10k/r10k_webhook_service.erb'
     
     # service
       $pt_server_service                = 'puppetserver'
       $pt_agent_service                 = 'puppet'
       $pt_db_service                    = 'puppetdb'
    -  $pt_webhook_service               = 'webhook-go.service'
    +  $pt_r10k_webhook_service          = 'r10k_gitlab_webhook'
     
     #
       # includes must be last
    diff --git a/manifests/r10k/install.pp b/manifests/r10k/install.pp
    index 1fa037b..dccd9cb 100644
    --- a/manifests/r10k/install.pp
    +++ b/manifests/r10k/install.pp
    @@ -25,6 +25,7 @@ class puppet_cd::r10k::install (
         package { 'r10k':
           ensure   => $pt_pkg_ensure,
           provider => gem,
    +      require  => Package[$pt_r10k_pkg],
         }
     
         # create r10k dir
    @@ -53,16 +54,37 @@ class puppet_cd::r10k::install (
           require  => File['r10k_dir'],
           content  => template($pt_r10k_erb),
         }
    +
         if $pt_use_r10k_webhook == true {
    -      file { $pt_r10k_webhook_pkg:
    -        ensure => file,
    -        source => 'puppet:///modules/puppet_cd/webhook-go.rpm'
    +      package { $pt_r10k_webhook_pkg:
    +        ensure   => present,
    +        provider => gem,
    +        require  => Package[$pt_r10k_pkg],
           }
     
    -      exec { 'install rpm':
    -        command => "yum install -y ${pt_r10k_webhook_pkg}",
    -        unless  => 'rpm -qa | grep webhook-go',
    -        require => File[$pt_r10k_webhook_pkg],
    +      exec { 'create symlink':
    +        command => $pt_webhook_link,
    +        creates => '/usr/bin/r10k_gitlab_webhook',
    +        path    => ['/bin', '/usr/bin'],
    +        require => Package[$pt_r10k_webhook_pkg],
    +      }
    +
    +      file { $pt_webhook_service_file:
    +        ensure   => file,
    +        owner    => 'root',
    +        group    => 'root',
    +        mode     => '0664',
    +        selrange => s0,
    +        selrole  => object_r,
    +        seltype  => puppet_etc_t,
    +        seluser  => unconfined_u,
    +        content  => template($pt_webhook_service_erb),
    +        notify   => [Service[$pt_r10k_webhook_service],Exec['systemctl-daemon-reload']],
    +      }
    +
    +      exec { 'systemctl-daemon-reload':
    +        command     => '/bin/systemctl daemon-reload',
    +        refreshonly => true,
           }
         }
       }
    diff --git a/manifests/server/service.pp b/manifests/server/service.pp
    index 5b57c22..8a118a8 100644
    --- a/manifests/server/service.pp
    +++ b/manifests/server/service.pp
    @@ -44,8 +44,7 @@ class puppet_cd::server::service (
       # manage webhook service
       if $pt_use_r10k_webhook == true {
         require puppet_cd::r10k::install
    -
    -    service { $pt_webhook_service:
    +    service { $pt_r10k_webhook_service:
           ensure     => running,
           hasstatus  => true,
           hasrestart => true,
    diff --git a/templates/r10k/r10k_webhook_service.erb b/templates/r10k/r10k_webhook_service.erb
    new file mode 100644
    index 0000000..ad3b468
    --- /dev/null
    +++ b/templates/r10k/r10k_webhook_service.erb
    @@ -0,0 +1,12 @@
    +[Unit]
    +    Description=r10k GitLab Webhook
    +    After=network.target
    +
    +    [Service]
    +    ExecStart=/usr/bin/r10k_gitlab_webhook -p <%= @pt_r10k_webhook_port %>
    +    Restart=always
    +    User=root
    +    WorkingDirectory=/etc/puppetlabs/code
    +
    +    [Install]
    +    WantedBy=multi-user.target
    \ No newline at end of file