environment-variables - 导出 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 的替代方案

标签 environment-variables

我一直在使用 Ansible 来配置 ec2 实例。每次我启动虚拟机时,我都必须执行

export AWS_ACCESS_KEY_ID = ACCESS-KEY-ID 
export AWS_SECRET_ACCESS_KEY = SECRET-ACCESS-KEY

在运行 ansible-playbook 来配置/配置实例之前。

我已经编写了一个使用 Ansible 的原始模块执行上述命令的剧本,即使在执行该剧本之后,我也必须手动执行这些命令才能运行 provision.yml脚本。

有没有从剧本本身做这些的有效方法????,因为我实际上正在从事一些不鼓励手动执行命令的自动化工作。

最佳答案

Ansible 可以设置环境变量:

在你的剧本中:

- name: "Simple playbook"
  hosts: localhost
  roles:
     - aws
  environment:
     AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
     AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"

我强烈建议学习如何使用 ansible-vault作为在 Ansible 中存储凭据的一种快速简便的方法。

另请注意,如果您使用的是 ec2.py动态库存脚本,上面的解决方案都行不通。在剧本设置环境之前加载库存。在这种情况下,最好的选择是使用备用 AWS credential methods 之一。 .一种简单的方法是~/.boto文件内容:
[Credentials]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_ACCESS_SECRET

关于environment-variables - 导出 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41141747/

相关文章:

heroku - 在 npm 脚本中使用 process.env 变量

java - 在属性文件中访问系统属性

linux - 如何在指定目录 Linux/Windows 中提取/解压/解压缩 hudson.war 而不是默认目录?

docker - 将主机环境变量传递给 dockerfile

bash - 如何在没有带有环境变量的文件的情况下使用 SED?

vue.js - 使用 Vuejs 将环境变量插入除 Index 之外的 HTML 文件中

jenkins - Post-build Actions 部分看不到注入(inject)的环境变量

java - 在 tomcat7 maven 插件中设置 ENV 变量

ubuntu - pyspark 找不到有效的 SPARK_HOME

Linux环境变量