Search code examples
phpcurlpuppet

How can I access the Puppet API using PHP


I am trying to get a PHP script to access the Puppet API. I have spent 2 days searching and cannot believe that I cant find any info whatsoever (only puppet modules for installing PHP).

I am just trying to use PHP and curl but I am not able to get any kind of response, error or anything. Here is my (very basic) attempt to get the cert from the puppet master:

function get_data($url) {

    $request_headers = array();
    $request_headers[] = 'Accept: s';

    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}    
    $response = get_data('https://<puppet master>:8140/production/certificate/ca');

All I am trying to replicate is a curl call that works from my server:

curl -k -H "Accept: s" https://<puppet master>:8140/production/certificate/ca

I have a feeling that there is probably something obvious I am missing but, I cannot figure it out.


Solution

  • Thank to Wrikken and Glen for getting me on track. Once I set the curl_setopt options correctly, it works as expected.

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
    curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");