Skip to content

Cannot get train-kubernetes installed in a Docker image based on chef/inspec:4.41.2 #9

Open
@danking

Description

@danking

I have this Dockerfile:

FROM chef/inspec:4.41.2
RUN apt-get update && apt-get install -y make gcc g++
RUN ln -s /bin/mkdir /usr/bin/mkdir  # gem wants this for inexplicable reasons
RUN gem install inspec-bin -v 4.41.2 --no-document --quiet
RUN gem install train-kubernetes

WORKDIR /
RUN git clone https://github.com/GoogleCloudPlatform/inspec-gke-cis-benchmark.git
RUN cd inspec-gke-cis-benchmark && bundle install
RUN apt-get update && apt-get install -y jq curl python3
RUN curl https://sdk.cloud.google.com | bash
RUN ln -s /root/google-cloud-sdk/bin/gcloud /usr/bin/gcloud
ENV CHEF_LICENSE=accept
RUN gem uninstall excon -v 0.96.0
RUN inspec plugin install train-kubernetes
ENTRYPOINT []

Attempt 1

I build it with docker build -t chef-gke -f Dockerfile . in a directory with no other files. Every layer builds fine until I get to the inspec plugin install train-kubernetes. That fails with this error:

 => ERROR [12/13] RUN inspec plugin install train-kubernetes                                                                                                                             43.3s
------                                                                                                                                                                                         
 > [12/13] RUN inspec plugin install train-kubernetes:                                                                                                                                         
#15 14.64 +---------------------------------------------+                                                                                                                                      
#15 14.64 ✔ 1 product license accepted.                                                                                                                                                        
#15 14.64 +---------------------------------------------+
#15 43.17 Unknown error occured - installation failed.
#15 43.17 
------
executor failed running [/bin/sh -c inspec plugin install train-kubernetes]: exit code: 1

Attempt 2

I also tried with gem uninstall excon -v 0.85.0, which is the other version which is present. With that change to the Dockerfile, I get this error instead:

 => ERROR [12/13] RUN inspec plugin install train-kubernetes                                                                                                                              1.5s
------
 > [12/13] RUN inspec plugin install train-kubernetes:
#15 1.429 /opt/inspec/embedded/lib/ruby/2.7.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'excon' (= 0.85.0) - did find: [excon-0.96.0] (Gem::MissingSpecVersionError)
#15 1.430 Checked in 'GEM_PATH=/root/.gem/ruby/2.7.0:/opt/inspec/embedded/lib/ruby/gems/2.7.0', execute `gem env` for more information
#15 1.430 	from /opt/inspec/embedded/lib/ruby/2.7.0/rubygems/dependency.rb:323:in `to_spec'
#15 1.430 	from /opt/inspec/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_gem.rb:62:in `gem'
#15 1.430 	from /opt/inspec/bin/inspec:107:in `<main>'
------

Attempt 3

I also tried building without gem uninstall excon at all:

FROM chef/inspec:4.41.2
RUN apt-get update && apt-get install -y make gcc g++
RUN ln -s /bin/mkdir /usr/bin/mkdir  # gem wants this for inexplicable reasons
RUN gem install inspec-bin -v 4.41.2 --no-document --quiet
RUN gem install train-kubernetes

WORKDIR /
RUN git clone https://github.com/GoogleCloudPlatform/inspec-gke-cis-benchmark.git
RUN cd inspec-gke-cis-benchmark && bundle install
RUN apt-get update && apt-get install -y jq curl python3
RUN curl https://sdk.cloud.google.com | bash
RUN ln -s /root/google-cloud-sdk/bin/gcloud /usr/bin/gcloud
ENV CHEF_LICENSE=accept
RUN inspec plugin install train-kubernetes
ENTRYPOINT []

This also fails with

 => ERROR [12/13] RUN inspec plugin install train-kubernetes                                                                                                                             43.3s
------                                                                                                                                                                                         
 > [12/13] RUN inspec plugin install train-kubernetes:                                                                                                                                         
#15 14.64 +---------------------------------------------+                                                                                                                                      
#15 14.64 ✔ 1 product license accepted.                                                                                                                                                        
#15 14.64 +---------------------------------------------+
#15 43.17 Unknown error occured - installation failed.
#15 43.17 
------
executor failed running [/bin/sh -c inspec plugin install train-kubernetes]: exit code: 1

Attempt 4

And one last try with as little extra noise as possible:

FROM chef/inspec:4.41.2
RUN apt-get update && apt-get install -y make gcc g++
RUN ln -s /bin/mkdir /usr/bin/mkdir  # gem wants this for inexplicable reasons
ENV CHEF_LICENSE=accept
RUN gem install train-kubernetes
RUN inspec plugin install train-kubernetes
ENTRYPOINT []

Same error:

 => ERROR [5/5] RUN inspec plugin install train-kubernetes                                                                                                                               35.6s 
------                                                                                                                                                                                         
 > [5/5] RUN inspec plugin install train-kubernetes:                                                                                                                                           
#8 13.43 +---------------------------------------------+                                                                                                                                       
#8 13.43 ✔ 1 product license accepted.                                                                                                                                                         
#8 13.43 +---------------------------------------------+                                                                                                                                       
#8 35.43 Unknown error occured - installation failed.
#8 35.43 
------
executor failed running [/bin/sh -c inspec plugin install train-kubernetes]: exit code: 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions