在AWS中使用Packer在Windows上运行Ansible

3
我正在尝试在Windows AMI上使用packer来提供Ansible playbook。 这是我的packer模板:
{
  "variables": {
    "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}",
    "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}",
    "aws_region": "{{env `AWS_DEFAULT_REGION`}}",
    "aws_source_ami": "*****",
    "ssh_username": "{{env `AWS_AMI_USERNAME`}}",
    "aws_instance_type": "m1.medium",
    "name": "windows2012-...",
    "packer_dir": "/opt/packer",
    "home": "{{env `HOME`}}"
},
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `aws_access_key`}}",
    "secret_key": "{{user `aws_secret_key`}}",
    "region": "{{user `aws_region`}}",
    "source_ami": "{{user `aws_source_ami`}}",
    "ami_regions": ["{{user `aws_region`}}"],
    "instance_type": "{{user `aws_instance_type`}}",
    "communicator": "winrm",
    "winrm_username": "Administrator",
    "winrm_use_ssl": true,
    "winrm_insecure": true,
    "winrm_timeout": "12h",
    "user_data_file": "scripts/userdata_setup.ps1",
    "ami_name": "{{user `name`}}-ami",
    "ami_description": "{{user `name`}}-ami",
    "associate_public_ip_address": true,
    "launch_block_device_mappings": [{
      "device_name": "/dev/xvda",
      "volume_type": "gp2",
      "volume_size": 50,
      "delete_on_termination": true
  }],
    "tags": {
      "artifact": "{{user `name`}}"
    }
  }],
  "provisioners": [
    {
      "type": "powershell",
      "script": "scripts/ConfigureRemotingForAnsible.ps1"
    },
    {
      "type": "ansible",
      "playbook_file": "/path/to/playbook_file.yml",
      "extra_arguments" : [
        "--extra-vars", "ansible_user=Administrator ansible_connection=winrm ansible_winrm_server_cert_validation=ignore"
      ]
    }
  ]
}

当我运行packer build my_template.json时,Ansible provisioner正在运行时出现以下错误:
amazon-ebs: TASK [Gathering Facts] *********************************************************
amazon-ebs: fatal: [default]: UNREACHABLE! => {"changed": false, "msg":
            "ssl: HTTPSConnectionPool(host='127.0.0.1', port=5986): Max retries
            exceeded with url: /wsman (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x102ba6f90>: 
            Failed to establish a new connection: [Errno 61] Connection refused',))", "unreachable": true}

我猜我做错了些什么(为什么主机是127.0.0.1?),但我没有找到任何关于在AMI上使用packer在Windows中运行ansible的文档。

有人知道我做错了什么吗?我该如何解决这个问题?


最好的问候,
亚当


流量通过代理进行中转。因此,Ansible在本地packer机器上运行,并连接到127.0.0.1(packer可执行文件),然后将流量转发到实例。 - Rickard von Essen
1个回答

0

您需要遵循文档Packer Documentation - Ansible: winrm communicator中的说明,使用自定义连接插件,并使用以下ansible提供程序参数:

  "extra_arguments": [
    "--connection", "packer",
    "--extra-vars", "ansible_shell_type=powershell ansible_shell_executable=None"
  ]

现在我遇到了以下错误:amazon-ebs: 致命错误:[default]:FAILED! => {"failed": true,"msg": "无法将文件传输到'C:\\ Users \\ Administrator \\ AppData \\ Local \\ Temp \\ ansible-tmp-1493043899.96-87816042318692 \\ setup.ps1':\n\n\n"} amazon-ebs: 致命错误:[default]:FAILED! => {"failed": true,"msg": "无法将文件传输到'C:\\ Users \\ Administrator \\ AppData \\ Local \\ Temp \\ ansible-tmp-1493043899.96-87816042318692 \\ setup.ps1':\n\n\n"} - Adamba4
嗨 @Adamba4,你找到解决方案了吗? - elhostis
@elhostis 尝试发布一个新的问题或者在 Packer 邮件列表中询问,参见 https://www.packer.io/community.html 。 - Rickard von Essen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接