Ansible を使用して Amazon EC2 にデプロイしています。また、Amazon からサーバーのリストを取得できるように ec2.py と ec2.ini をセットアップしています。AWS にサーバーをタグ付けし、実行できるのでタグrvmdocker:production
をansible all --list
返します。ec2_tag_rvmdocker_production.
ansible -m ping tag_rvmdocker_production`
そしてそれは動作します。しかし、静的インベントリ ファイルにそのタグがあり、次を実行した場合:
ansible all -m ping -i production
戻ります:
tag_rvmdocker_production | UNREACHABLE! => {
"changed": false,
"msg": "ERROR! SSH encountered an unknown error during the connection. Werecommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue",
"unreachable": true
}
これが私の生産在庫ファイルです:
[dockerservers]
tag_rvmdocker_production
tag_rvmdocker_production
静的インベントリ ファイルにある場合、Ansible は解決できないようです。
アップデート
ydaetskcoR のアドバイスに従いましたが、新しいエラー メッセージが表示されます。
$ ansible-playbook -i production app.yml
ERROR! ERROR! production:2: Section [dockerservers:children] includes undefined group: tag_rvmdocker_production
しかし、私はタグが存在することを知っており、Ansible と ec2.py はそれを知っているようです:
$ ansible tag_rvmdocker_production --list
hosts (1):
12.34.56.78
ここに私の生産在庫があります:
[dockerservers:children]
tag_rvmdocker_production
そして、私の app.yml プレイブック ファイル:
---
- name: Deploy RVM app to production
hosts: dockerservers
remote_user: ec2-user
become: true
roles:
- ec2
- myapp
最後に、環境を開始するために、開発 (私の Mac 上の VM)、ステージング、または運用に対して同じ Playbook を実行できるようにしたいと考えています。私の考えでは、EC2 上のタグまたはグループを指す静的なインベントリ ファイルを用意することでした。私はこれに正しい方法でアプローチしていますか?