首页 > 解决方案 > 如何从 Ansible 中的主机变量中获取值?

问题描述

我可以使用以下代码运行 EC2 实例。公共 DNS (IP) 将位于demogroup.

- hosts: localhost
  gather_facts: no
  vars_files:
    - variables/vars.yml
    - variables/encrypt-iam-account.yml
  tasks:
    - name: provision CentOS VM (EC2)
 .
 .     
 .
    - name: add hosts to inventory  **********
      add_host:
        hostname: '{{ item.public_ip }}'
        groupname: demogroup
        ansible_ssh_common_args: "-o StrictHostKeyChecking=no" 
        ansible_ssh_private_key_file: keypair-for-ansible.pem
      loop: '{{ ec2.instances }}'
  
- hosts: demogroup
  gather_facts: no
  remote_user: centos
  tasks:  
    - name: wait for SSH
 .
 .
 .
    - name: generate the key, x509 *******
      expect:
        command: openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
        responses:
          'Enter pass phrase for ca-key.pem': "12345"
          'Country Name': "th"
          'State or Province Name': "Bangkok"
          'Locality Name': "Sukhumwit"
          'Organization Name': "Kixxxx"
          'Organizational Unit Name': "DevTeam"
          'Common Name': "{{ hostvars[groups['demogroup']['xxxxx']] }}"
          'Email Address': "sample@kixxxx.com"
      no_log: false
      register: mycmd
    - debug:
        var: mycmd 

在同一个 YAML 文件中,我想获取每个公共 DNS 以便分配给'Common Name'

在这一行'Common Name': "{{ hostvars[groups['demogroup']['xxxxx']] }}"。如何从中获取每个公共 DNS (IP) demogroup

先感谢您。

标签: amazon-web-servicesamazon-ec2ansible

解决方案


推荐阅读