我是AWS的新手。我的公司使用AD联合身份登录到AWS管理控制台。我正在尝试通过Ansible 2.7.5启动ec2实例,但是我认为我需要使用sts_session_token模块向AWS进行身份验证?
可调整2.7.5 配置文件=无 配置的模块搜索路径= ['〜/ .ansible / plugins / modules','/ usr / share / ansible / plugins / modules'] ansible python模块位置= /usr/local/Cellar/ansible/2.7.5/libexec/lib/python3.7/site-packages/ansible 可执行位置= / usr / local / bin / ansible python版本= 3.7.2(默认,2019年1月13日,12:50:15)[Clang 10.0.0(clang-1000.11.45.5)]
对于python,我安装了boto,boto3和botocore。
我有一个带有凭据和配置的〜/ .aws /目录
凭据
[默认]
aws_access_key_id =
aws_secret_access_key =
配置
[默认]
region = us-east-1
output = json
Ansible Playbook
---
- hosts: localhost
gather_facts: False
tasks:
- name: Get Session Token Credentials from STS
sts_session_token:
duration_seconds: 3600
register: session_credentials
- debug:
var: session_credentials
- name: Assume Role AWS
sts_assume_role:
role_arn: "arn:aws:iam::<id+role>"
role_session_name: "session role name"
register: assumed_role
- debug:
var: assumed_role`
错误的结果:
完整的回溯是: 追溯(最近一次通话): 在第113行中输入文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py” _ansiballz_main() _ansiballz_main中第105行的文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py” invoke_module(zipped_mod,temp_path,ANSIBALLZ_PARAMS) 在invoke_module中的文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py”,第48行 imp.load_module(' main ',mod,module,MOD_DESC) 在第155行中输入文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/main.py” 主文件151行中的文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/main.py” get_session_token中的第124行的文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/main.py” 文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第2369行,位于fail_json中 文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第2341行,以_return 文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,行522,在remove_values中 文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第505行,位于_recondition TypeError:未知类型的值:,调用GetSessionToken操作时发生错误(InvalidClientTokenId):请求中包含的安全令牌无效。
致命:[localhost]:失败! => { “已更改”:错误, “ module_stderr”:“追踪(最近一次通话最近):\ n文件\”〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py \“,第\ 113行,位于\ n _ansiballz_main()\ n在_ansiballz_main \ n invoke_module(zipped_mod,temp_path,ANSIBALLZ_PARAMS)的文件\“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py \”行105中,\ n文件\“〜/。 /ansible-tmp-1548008584.240192-70823728355706/AnsiballZ_sts_session_token.py \“,第48行,invoke_module \ n imp.load_module(' main ',mod,module,MOD_DESC)\ n文件\” / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / main .py \“,第155行,位于\ n文件\” / var / folders / gn / 2zrt_ym_y_s_y_s_yz_yz_y_st_yz_yz_y_s_yj_ys_yj_ys_k_ys_y_s_y_s_yj_ys_ys_y_j_ys_y_s_y_j_ys_ys_k_ys_y_s_yj_ys_y_j_ys_k_ys_y_s_y_s_ys_k_ys_ys_ys_k_ys_ys_y_j_y_s_ys_k_y_s_y_s_y_sjy .py \”,主\ n文件\“ / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / 主 .py \”中的第151行get_session_token \ n文件中的第124行,“ / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / ansible_sts_session_token_payload.zip / ansible / module_pys / bas,ic / 369” /folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py \ “线2341,在_return_formatted \ n文件\” 的/ var /文件夹/ GN / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / ansible_sts_session_token_payload。 zip / ansible / module_utils / basic.py \“,第522行,位于remove_values \ n文件\” / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payken_payload_6Rj3ys / ansible_sts_session_pys_ans / ansible_sts_session_tos_session_to。 ,在_remove_values_conditions \ nTypeError:未知类型的值:中,调用GetSessionToken操作时发生错误(InvalidClientTokenId):要求中包含的安全令牌st无效。\ n“, “ module_stdout”:“”, “ msg”:“模块失败\ n请参阅stdout / stderr了解确切错误”, “ rc”:1 }
答案 0 :(得分:0)
您需要尝试使用EC2 module并安装boto并configure。您可能会找到示例剧本here。这是最简单的方法。但是不建议将凭证存储在EC2实例(您的方框)中,建议您使用AWS角色。