Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gcloud auth throws PyOpenSSL is not available

I've been trying to get gcloud to a usable state on Travis and I just can't seem to get passed the gcloud auth activate-service-account point.

When ever it runs I just get the following error:

ERROR: (gcloud.auth.activate-service-account) PyOpenSSL is not available. 
See https://developers.google.com/cloud/sdk/crypto for details.

I've tried apt-get and pip installs both with the export CLOUDSDK_PYTHON_SITEPACKAGES=1 set and nothing seems to work.

Does anyone have any ideas or alternatives?

This is Travis version Ubuntu 14.04.

Update

If I run the command from the docs on travis I get the following error:

usage: gcloud auth activate-service-account  ACCOUNT --key-file KEY_FILE [optional flags]
ERROR: (gcloud.auth.activate-service-account) too few arguments

This made me think I had to have an ACCOUNT parameter, but after running the command locally with the un-encrypted service account key, I know it's not needed (unless something has changed).

The only other thing I can think of is that the file isn't be decrypted correctly or the command itself isn't happy in Travis:

- gcloud auth activate-service-account --key-file client-secret.json

Update 2

Just dumped a load of logs to figure what is going on. (Massive shout out to @Vilas for his help)

It looks like gcloud is installed on the VM for node already, but it's a super old version.

$ which gcloud
/usr/bin/gcloud

$ gcloud --version
Google Cloud SDK 0.9.37
bq 2.0.18
bq-nix 2.0.18
compute 2014.11.25
core 2014.11.25
core-nix 2014.11.25
dns 2014.11.25
gcutil 1.16.5
gcutil-nix 1.16.5
gsutil 4.6
gsutil-nix 4.6
sql 2014.11.25

The next question is how can I get the path to find the right gcloud?

I've confirmed that the downloaded SDK installs to ${HOME}/google-cloud-sdk/bin by running this command.

$ ls -l ${HOME}/google-cloud-sdk/bin
total 24
drwxr-xr-x 2 travis travis 4096 Apr 27 21:44 bootstrapping
-rwxr-xr-x 1 travis travis 3107 Mar 28 14:53 bq
-rwxr-xr-x 1 travis travis  912 Apr 21 18:56 dev_appserver.py
-rwxr-xr-x 1 travis travis 3097 Mar 28 14:53 gcloud
-rwxr-xr-x 1 travis travis 3144 Mar 28 14:53 git-credential-gcloud.sh
-rwxr-xr-x 1 travis travis 3143 Mar 28 14:53 gsutil
like image 651
Matt Gaunt Avatar asked Nov 09 '22 16:11

Matt Gaunt


1 Answers

I finally got a solution for it. Essentially Travis has a super old version of the gcloud SDK installed that was taking presidence over the downloaded SDK.

Steps to Help Diagnose

  1. In your .travis.yml file add:

    env:
      global:
        # Ensure the downloaded SDK is first on the PATH
        - PATH=${HOME}/google-cloud-sdk/bin:$PATH
        # Ensure the install happens without prompts
        - CLOUDSDK_CORE_DISABLE_PROMPTS=1
    
  2. Then in your install step add the following:

    install:
    # Make sure SDK is downloaded - cache once it's working
    # NOTE: Note sure how to update the SDK if it's cached
    - curl https://sdk.cloud.google.com | bash;
    # List the SDK contents to ensure it's downloaded
    - ls -l ${HOME}/google-cloud-sdk/bin
    # Ensure the correct gcloud is being used
    - which gcloud
    # Print the gcloud version and make sure it's something
    # Reasonably up to date compared with: 
    # https://cloud.google.com/sdk/downloads#versioned
    - gcloud --version
    
like image 187
Matt Gaunt Avatar answered Nov 15 '22 07:11

Matt Gaunt