Ansible aws_secrets lookup bypath仅返回10个元素如何解决
问题原因
返回结果最多10条是AWS Secrets Manager的ListSecretsAPI默认分页阈值为10,低版本amazon.aws集合的aws_secret lookup插件未实现自动分页逻辑导致的。
解决方案
方案1:升级amazon.aws集合(推荐)
将amazon.aws集合升级到1.5.0及以上版本,该版本开始aws_secret lookup的bypath模式已支持自动拉取全量结果,无需额外分页配置。升级后原有配置可直接返回全量密钥,也可显式添加max_items参数指定最大拉取数量:
vars: #which environment: dev, test,uat, prd my_env: dev aws_secret_path: mypath/{{my_env}} tasks: - name: "get all secrets from AWS Secrets Manager" set_fact: secret_value: "{{ lookup('amazon.aws.aws_secret', aws_secret_path, on_missing='skip', bypath=true, region='eu-west-1', max_items=100 )}}"
注意:原配置中lookup参数里的aws_secret_path不需要额外嵌套{{}},Jinja在变量值位置可直接识别变量
方案2:使用aws_secret_info模块适配低版本集合
如果无法升级依赖集合,可改用amazon.aws.aws_secret_info模块先拉取指定路径下的全量密钥元数据,再循环拉取每个密钥的明文值:
vars: my_env: dev aws_secret_path: mypath/{{my_env}} tasks: - name: 获取指定路径下所有密钥元数据 amazon.aws.aws_secret_info: path: "{{ aws_secret_path }}" region: eu-west-1 register: all_secrets_meta - name: 拉取所有密钥的明文值 set_fact: secret_value: "{{ secret_value | default({}) | combine({item.name: lookup('amazon.aws.aws_secret', item.name, region='eu-west-1', on_missing='skip')}) }}" loop: "{{ all_secrets_meta.secrets }}"
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

