Search code examples
puppet

Unable to stop Dynatrace Agent with Puppet?


I am trying to terminate my dT agent on my servers with puppet but using an enabled => false doesn't seem to be working? I would assume instead I will have to kill it by pid instead but am uncertain how to do that

Here is what i am using now

root@server]> puppet apply -e "service { '/opt/dynatrace-5.6.0/agent/lib64/dtwsagent': enabled => false, }"
Error: Invalid parameter enabled on Service[/opt/dynatrace-5.6.0/agent/lib64/dtwsagent] at line 1 on node server
Error: Invalid parameter enabled on Service[/opt/dynatrace-5.6.0/agent/lib64/dtwsagent] at line 1 on node server
root@server[/tmp]> ps aux |grep dt
root      1406  0.0  0.1 245828 21676 ?        Sl   Nov14  22:04 /opt/dynatrace-5.6.0/agent/lib64/dtwsagent server=localhost
root     12983  0.0  0.0 103312   860 pts/0    S+   12:07   0:00 grep dt

I would also assume that i would need to kill this pid prior to removing directories? Here's my entire code block

    file { 'remove_dt62':
        ensure  => absent,
        path    => '/opt/dynatrace-6.2',
        recurse => true,
        purge   => true,
        force   => true,
    }

    file { 'remove_dt56':
        ensure  => absent,
        path    => '/opt/dynatrace-5.6.0',
        recurse => true,
        purge   => true,
        force   => true,
    }

    file { 'remove_dt_conf':
        ensure  => absent,
        path    => "${httpd_root}/conf.d/dtload.conf",
        purge   => true,
        force   => true,
    }

    service { '/opt/dynatrace-5.6.0/agent/lib64/dtwsagent':
    ensure      => stopped,
    enable      => false,
    }

Solution

  • The service resource lets Puppet use existing service managers to stop services (eg. initd, upstart, systemd) so you can't stop a service by giving a path like that.

    Like your other question, if you have to do it this way, you can remove the service using a base provider declaration:

      service { 'dynatrace':
        ensure   => stopped,
        provider => 'base',
        stop     => 'kill -TERM $(ps ax | grep \"dtwsagent\"|grep -v grep|awk '{print \$1}')',
        status   => "ps ax | grep "dtwsagent"",
      }
    

    As you can see, you can specify the exact commands you want to run to stop the service and check if it exists.