【问题标题】:Ansible + AWS EC2 Plugin + username + ssh key on the dynamic inventory fileAnsible + AWS EC2 插件 + 用户名 + 动态清单文件上的 ssh 密钥
【发布时间】:2021-05-24 16:59:05
【问题描述】:

我正在使用 aws_ec2 插件在 AWS 上获取我的库存,但我需要一些帮助。

我想在动态库存文件上设置“ansible_user”和“ansible_ssh_private_key_file”,但无法正常工作。这可能吗?所以我不需要在命令行设置'--private-key'和'-u'选项。

这是我当前的 aws_ec2.yaml:

---
plugin: aws_ec2
aws_access_key: 123
aws_secret_key: 345
filters:
  tag:Cliente: CustName
  instance-state-name : running

有什么想法吗?

谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-ec2 ssh ansible


    【解决方案1】:

    您可以为每个 Ansible 主机组创建和加载动态变量。您需要在库存目录中创建适当的文件。例如:假设您已使用指向相对路径 ./inventory 的 inventory 键配置您的 ansible.cfg 文件。这告诉 Ansible 它应该查看名为 ./inventory 的文件或 ./inventory 文件夹中的一系列文件以获取主机组的信息。

    您只需遵循文件夹结构的适当约定,即可告诉 Ansible 为每个组加载不同的变量:

    • ./inventory/group_vars: 将持有组变量。
    • ./inventory/host_vars: 将保存宿主变量。

    Ansible 将使用每个文件夹中的文件名来引用相应的group 或host。如果您想使用多个文件来保存所有变量,也可以使用带有组名的子目录。

    您的aws_ec2.yml 文件必须位于./inventory 目录中,这一点很重要。

    例如:如果您想存储适当的user 和key 配置以访问标记为Project 标记设置为stackoverflow 的EC2 实例,则需要在./inventory/group_vars/tag_Project_stackoverflow 创建一个目录一个变量文件,如下所示:

    ansible_user: ec2-user
    ansible_ssh_private_key_file: ~/.ssh/id_rsa
    

    EC2 动态清单模块可以根据您的 EC2 实例的配置创建动态组。检查其documentation 以了解如何配置它。

    您甚至可以使用任务动态创建这些文件。这里我创建一个新的 ec2 密钥,将其存储在本地,并创建必要的文件夹结构来保存连接信息:

    - name: Create a new EC2 key
      amazon.aws.ec2_key:
        name: "{{ ec2_key_name }}"
      register: ec2_key_output
    
    - name: Save private key
      ansible.builtin.copy:
        content: "{{ ec2_key_output.key.private_key }}"
        dest: "{{ ec2_key_path }}"
        mode: 0600
      when: ec2_key_output.changed == True
    
    - name: Create the group_vars folder
      ansible.builtin.file:
        path: ./inventory/group_vars
        state: directory
        mode: '0755'
    
    - name: Create the group_vars configuration file
      ansible.builtin.copy:
        content: |
          ansible_user: "{{ ec2_user }}"
          ansible_ssh_private_key_file: "{{ ec2_key_path }}"
        dest: ./inventory/group_vars/tag_Project_stackoverflow
    

    请查看Ansible's documentation regarding inventory management了解更多信息。

    【讨论】:

    • 太棒了!让我试试,我会回来和你分享结果。
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多