【问题标题】:passing aws creds to kitchen ec2 command line将 aws 凭据传递给厨房 ec2 命令行
【发布时间】:2018-06-22 11:32:22
【问题描述】:

我正在尝试通过 Jenkinsfile 管道进行厨师食谱开发。我的 jenkins 服务器作为容器运行(使用 jenkinsci/blueocean 映像)。作为阶段之一,我正在尝试执行 aws configure 然后运行厨房测试。由于以下代码的某种原因,我收到未经授权的操作错误。由于某种原因,我的 AWS 凭据未正确发送到 .kitchen.yml(无需检查 IAM 凭据,因为它们具有管理员访问权限)

stage('\u27A1 Verify Kitchen') {
        steps { 
            sh '''mkdir -p ~/.aws/
echo 'AWS_ACCESS_KEY_ID=...' >> ~/.aws/credentials
echo 'AWS_SECRET_ACCESS_KEY=...' >> ~/.aws/credentials
cat ~/.aws/credentials
KITCHEN_LOCAL_YAML=.kitchen.yml /opt/chefdk/embedded/bin/kitchen list
KITCHEN_LOCAL_YAML=.kitchen.yml /opt/chefdk/embedded/bin/kitchen test'''
        }
    }

无论如何,我可以在这里通过 AWS 信用。此外 .kitchen.yml 不再支持在文件中传递 AWS 凭据。有没有办法我可以通过命令传递信誉,即 .kitchen.yml access_key=... secret_access_key=... /opt/chefdk/embedded/bin/kitchen test 非常感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services docker jenkins chef-infra


    【解决方案1】:
    1. 你不需要设置KITCHEN_LOCAL_YAML=.kitchen.yml,这已经是主配置文件了。

    2. 您可能希望使用 Jenkins 凭据文件,而不是将内容硬编码到作业中。但这就是说,这不起作用的原因是因为 AWS credentials 文件不是 shell 脚本,这是您在那里使用的语法。它是一个 INI/TOML 文件,并与一个具有相似结构的类似 config 文件配对。

    3. 您可能应该只是通过 withEnv 管道辅助方法或类似方法使用 kitchen-ec2 中的环境变量支持来与 Jenkins 托管凭据集成。

    【讨论】:

    • 感谢 @coderanger 我最后无法弄清楚这一点并使用 bitbucket 管道进行此测试(:
    猜你喜欢
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2013-05-17
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多