環境 (n 個のデータベース、m 個の Web サーバーなど) をプロビジョニングし、後でそれらのホストを保存して、それらに対してデプロイを実行できるようにするいくつかの Ansible プレイブックを作成しようとしています。私が思いつくことができる最高のものはhttps://gist.github.com/geowa4/7686681です(以下にコピー)。これは、さまざまなサーバー タイプのマシンを作成し、それらをホスト ファイルに保存するという点で機能します。新しく生成されたホスト ファイルを使用するデプロイ スクリプトでは、ソース コードをデプロイする前に、正しいパッケージが正しくインストールおよび構成されていることを確認します。これは、Ansible でプロビジョニングと展開を行う唯一の方法ですか? 新しい Web サーバーをミックスに動的に追加したい場合はどうすればよいですか? 静的ホスト ファイルを手動で編集する必要はありますか? これまでのところ、Rackspace の動的インベントリ スクリプトを使用すると、多数のサーバーを一覧表示するだけで、種類別にグループ化する方法はありません。もし私がそれを手に入れることができたら、私は有頂天になるだろう.
hosts.j2:
[a]
{% for a in a_provision.instances %}
{{ a.rax_accessipv4 }}
{% endfor %}
[b]
{% for b in b_provision.instances %}
{{ b.rax_accessipv4 }}
{% endfor %}
main.yml:
---
- name: a - build request
local_action:
module: rax
username: username
api_key: key
name: test-a
count: 1
flavor: 3
image: a-image-id
files:
/root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub
state: present
wait: yes
wait_timeout: 1000
networks:
- private
- public
register: a_provision
- name: b - build request
local_action:
module: rax
username: username
api_key: key
name: test-b
flavor: 5
image: b-image-id
files:
/root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub
state: present
wait: yes
wait_timeout: 1000
networks:
- private
- public
register: b_provision
- name: add new nodes to hosts configuration
template: 'src=hosts.j2 dest=provisioned_hosts'