1

当我不在 Ansible Tower 上运行 ec2-remote-facts 模块时,它可以正常工作。下面的第一个示例(不使用 Tower)包含我在后续任务中使用的所有 block_device_mapping 信息。

从长远来看,这是我要使用 Tower 的一个大问题。我的代码对于两个示例都是相同的。任何可以引导我走向正确方向的想法。

我唯一的想法是,由于它不是核心模块,Ansible Tower 并没有完美地同步到模块的最新代码。但我很困惑。谢谢!

Ansible 版本 - ansible 2.2.0.0(在 Ubuntu 上运行)

Ansible Tower 版本 - Tower 版本 3.0.3(在 Centos 上运行)

---下面的例子----

-Ansible(不使用 Tower)-

ok: [localhost -> localhost] => {
"changed": false,
"instances": [
    {
        "ami_launch_index": "0",
        "architecture": "x86_64",
        "block_device_mapping": [
            {
                "attach_time": "2017-01-13T17:05:31.000Z",
                "delete_on_termination": false,
                "device_name": "/dev/sdb",
                "status": "attached",
                "volume_id": "vol-132312313212313"
            },
            {
                "attach_time": "2017-01-13T17:05:31.000Z",
                "delete_on_termination": true,
                "device_name": "/dev/sda1",
                "status": "attached",
                "volume_id": "vol-123123123123"
            },
            {
                "attach_time": "2017-01-13T17:05:31.000Z",
                "delete_on_termination": false,
                "device_name": "/dev/sdc",
                "status": "attached",
                "volume_id": "vol-123123123123"
            }
        ],
        "client_token": "",
        "ebs_optimized": false,
        "groups": [
            {
                "id": "sg-12312313",
                "name": "n123123123
            }
        ],
        "hypervisor": "xen",
        "id": "i-123123123123",
        "image_id": "ami-123123123123",
        "instance_profile": null,
        "interfaces": [
            {
                "id": "eni-123123123",
                "mac_address": "123123123"
            }
        ],
        "kernel": null,
        "key_name": "my-v123123",
        "launch_time": "2017-01-13T17:05:30.000Z",
        "monitoring_state": "disabled",
        "persistent": false,
        "placement": {
            "tenancy": "default",
            "zone": "us-east-1b"
        },
        "private_dns_name": "ip-112312312",
        "private_ip_address": "10.1.1.4",
        "public_dns_name": "",
        "public_ip_address": null,
        "ramdisk": null,
        "region": "us-east-1",
        "requester_id": null,
        "root_device_type": "ebs",
        "source_destination_check": "true",
        "spot_instance_request_id": null,
        "state": "running",
        "tags": {
            "CurrentIP": "10.1.1.1.4",
            "Name": "d1",
            "Type": "d2"
        },
        "virtualization_type": "hvm",
        "vpc_id": "vpc-123123123"
    },

Ansible Tower(注意它缺少 block_device_mapping 代码块)

  TASK [debug]  **********************
  ok: [localhost] => {
"db_id.instances": [
    {
        "ami_launch_index": "0", 
        "architecture": "x86_64", 
        "client_token": "", 
        "ebs_optimized": false, 
        "groups": [
            {
                "id": "sg-123123", 
                "name": "n123123123"
            }
        ], 
        "hypervisor": "xen", 
        "id": "i-123123123", 
        "image_id": "ami-123123", 
        "instance_profile": null, 
        "interfaces": [
            {
                "id": "eni-123123123", 
                "mac_address": "123123123"
            }
        ], 
        "kernel": null, 
        "key_name": "m123123", 
        "launch_time": "2017-01-13T17:05:30.000Z", 
        "monitoring_state": "disabled", 
        "persistent": false, 
        "placement": {
            "tenancy": "default", 
            "zone": "us-east-1b"
        }, 
        "private_dns_name": "ip-1123123123123", 
        "private_ip_address": "10.1.1.4", 
        "public_dns_name": "", 
        "ramdisk": null, 
        "region": "us-east-1", 
        "requester_id": null, 
        "root_device_type": "ebs", 
        "source_destination_check": "true", 
        "spot_instance_request_id": null, 
        "state": "running", 
        "tags": {
            "Name": "123123", 
            "Type": "123123"
        }, 
        "virtualization_type": "hvm", 
        "vpc_id": "vpc-123123123"
    }, 
4

1 回答 1

1

我猜你的 Tower 盒子上确实有旧的 Ansible 版本。

截至今天,官方 Ansible Tower Vagrant box (ansible/tower (virtualbox, 3.0.3)) 里面有 2.1.2 版本:

[vagrant@ansible-tower ~]$ ansible --version
ansible 2.1.2.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

在这个版本ec2_remote_facts中没有。 因此,在您的 Tower box 上更新 Ansible 或应用补丁。block_device_mapping

于 2017-01-14T15:56:25.407 回答