2017-02-21 22 views
0

私はAERをプロビジョニングするためにPackerとAnsibleの両方を使用してAWS AMIを構築しようとしています。私はいくつかのローカルファイルを新しくスピンアップされたEC2インスタンスにコピーすることができなくなってきました。私はcopyモジュールを使用してこれを行うことができます。ローカルのファイルをリモートのAWS EC2インスタンスにコピーする

- name: Testing copy of the local remote file 
     copy: 
     src: /tmp/test.test 
     dest: /tmp 

は、ここに私が取得エラーです:ここに私のAnsibleのコードは次のようになります。私は、ファイル/tmp/test.testがAnsibleが実行されているから、私のローカルマシン上に存在することを確認した

amazon-ebs: TASK [Testing copy of the local remote file] *********************************** 

amazon-ebs: fatal: [127.0.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to find '/tmp/test.test' in expected paths."} 

私のホストファイルについては、packerがAnsibleコマンドをどこで実行するかについて知っておく必要があるすべての情報をPacerが伝えているので、localhostしかありません。

ここからどこに行くのか、このエラーを適切にデバッグする方法がわからないので、ちょっとした助けが必要です。

{ 
    "variables": { 
    "aws_access_key": "{{env `access_key`}}", 
    "aws_secret_key": "{{env `secret_key`}}" 
    }, 
    "builders": [{ 
    "type": "amazon-ebs", 
    "access_key": "{{user `aws_access_key`}}", 
    "secret_key": "{{user `aws_secret_key`}}", 
    "region": "us-east-1", 
    "source_ami": "ami-116d857a", 
    "instance_type": "t2.micro", 
    "ssh_username": "admin", 
    "ami_name": "generic_jenkins_image", 
    "ami_description": "Testing AMI building with Packer", 
    "vpc_id": "xxxxxxxx", 
    "subnet_id": "xxxxxxxx", 
    "associate_public_ip_address": "true", 
    "tags": {"Environment" : "Dev", "Product": "SharedOperations"} 
    }], 
    "provisioners": [ 
    { 
     "type": "shell", 
     "inline": [ 
     "sleep 30", 
     "sudo rm -f /var/lib/dpkg/lock", 
     "sudo apt-get update -y --fix-missing", 
     "sudo apt-get -y install libpq-dev python-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev libffi-dev gcc build-essential python-pip", 
     "sudo pip install ansible" 
     ] 
    }, 
    { 
     "type": "ansible-local", 
     "playbook_file": "ansible/main.yml" 
    } 
    ] 
} 

そして、ここに私の全体のAnsibleファイルです:あなたがHashiCorpの中(「ローカル」のターゲット上で直接プレイブックを実行ansible-local provisionerを使用している

--- 
- hosts: all 
    sudo: yes 
    tasks: 
    - name: Testing copy of the local remote file 
     copy: 
     src: /tmp/test.test 
     dest: /tmp 
+0

@techrafなぜそれがそのアドレスを与えているのか100%確信はしていませんが、私はそれがEC2インスタンスであることを知っています。私は他のコマンド(ユーザー作成のような)を実行して、私のAnsibleスクリプトが実際にリモートホストで実行され、ローカルホストではないことを確認しています。 –

+0

私が考えることができるのは、Packerがただ私のAnsibleスクリプトを取り出し、新しく作成したEC2インスタンスにプッシュして実行しているということだけです。この場合、もちろんこのファイルの移動は存在しないため失敗します。私は100%確信していないので、私は完全に覆いの下でどのように動作しているわけではないので。 –

答えて

2

ここ

は私のパッカーのスクリプトは次のようになります。 Packetは、プロビジョニングされたマシンの視点を記述するために使用されます)。

ターゲットに/tmp/test.testファイルがないため、エラーが発生します。

実際には、プレイバックを通常のAnsible provisionerを使用して実行します。

+0

私が何らかの理由で無視していた明白な '127.0.0.1'アドレスを指摘した後、それが私にもたらされました。私は[Ansible Remote](https://www.packer.io/docs/provisioners/ansible.html)プロビジョナを使いたいと思っています...ありがとう! –

関連する問題