私は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
@techrafなぜそれがそのアドレスを与えているのか100%確信はしていませんが、私はそれがEC2インスタンスであることを知っています。私は他のコマンド(ユーザー作成のような)を実行して、私のAnsibleスクリプトが実際にリモートホストで実行され、ローカルホストではないことを確認しています。 –
私が考えることができるのは、Packerがただ私のAnsibleスクリプトを取り出し、新しく作成したEC2インスタンスにプッシュして実行しているということだけです。この場合、もちろんこのファイルの移動は存在しないため失敗します。私は100%確信していないので、私は完全に覆いの下でどのように動作しているわけではないので。 –