6

環境 (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'
4

1 に答える 1