迭代 AWS 中的账户以创建库存源

问题描述 投票:0回答:1

环境是这样的:

  • AWS 中的多个账户列表(实际上,这些都是数字):

    账户1

    账户2

    账户3

  • 一个 id 已在所有帐户中承担角色能力

  • 成功生成假定角色列表(包括 arn、session_token、session_name)

  • Ansible 自动化平台(AAP 又名 Tower)

  • 库存存在“dyn_aws_inventory”

目标:

迭代所有假设的角色

为每个名称为“_src”的库存源创建

帐户中的所有服务器都显示在“dyn_aws_inventory/Hosts”下

能够刷新每个库存来源

尝试过:

    - name: Create an AWS EC2 inventory source
      ansible.controller.inventory_source:
        controller_oauthtoken: "{{ controller_oauthtoken }}"
        name: "{{ vpc_session.invocation.module_args.role_session_name }}_src"
        source: "ec2"
'#      credential: ### this worked for a single account, not the list
        inventory: "{{ inv_out.id }}"
        overwrite: true
        overwrite_vars: true
        source_vars:
          plugin: amazon.aws.aws_ec2
          session_token: "{{ vpc_session.sts_creds.session_token  }}" # <== tried with and without
          assume_role_arn: "{{ vpc_session.invocation.module_args.role_arn }}_src" <== tried with and without
          regions:
          - us-east-1
          - us-east-2
          filters:
            instance-state-name: running
          compose:
            ansible_hostname:
            - "tag:Name"
      ignore_errors: true
      loop: "{{ aws_assumed_roles.results }}"
      loop_control:
        label: "{{ vpc_session.invocation.module_args.role_session_name }}"
        loop_var: vpc_session
      register: inv_source_out

实际结果:

在正确的清单中创建了清单源,但没有导入服务器

任何清单源刷新都会失败并出现以下错误:

[警告]:* 无法使用自动插件解析 /runner/inventory/aws_ec2.yml: 调用AssumeRole操作时发生错误(InvalidClientTokenId): 请求中包含的安全令牌无效。

dynamic ansible ansible-inventory assume-role tower
1个回答
0
投票

我没有答案,发帖只是为了说我有一个非常相似的问题。

在我的场景中,我有一个有权在另一个 AWS 账户上担任角色的 ID。我可以通过 CLI 在 AWS 账户上执行代入角色,没有任何问题。我的 AAP 控制器(又名 Tower)仅配置了有权承担角色的账户的 AWS 访问密钥 ID 和秘密访问密钥凭证(我没有输入 STS 令牌,因为我目前没有)。然后,我通过将源变量“iam_role_arn”设置为账户的 ARN,为我想要承担角色的账户配置动态清单插件。我也提供地区。但是,当我运行同步时,我遇到了与您相同的错误。

对我有用的方法(但在我看来,这违背了自动化的目的),是通过 CLI 承担角色,然后将假设命令生成的访问密钥 ID、秘密访问密钥和会话令牌输入到 AWS 凭证中美国联合总会。然后从源变量中删除“iam_role_arn”。同步成功了。我不喜欢这个的原因是我每次都必须手动生成凭据,如果您尝试运行事件驱动的自动化,这将达不到目的。

我希望有人知道解决方案或知道社区插件是否有问题。

© www.soinside.com 2019 - 2024. All rights reserved.