我正在尝试制作一些 Ansible 剧本,这些剧本将提供一个环境(n 个数据库、m 个 Web 服务器等)并保存这些主机以供以后使用,以便我可以针对它们运行部署。我能想到的最好的方法是https://gist.github.com/geowa4/7686681(复制如下)。这是因为它为各种服务器类型创建机器并将它们保存到主机文件中。我将使用新生成的 hosts 文件的部署脚本确保在部署源代码之前正确安装和配置了正确的包。这是使用 Ansible 完成配置和部署的唯一方法吗?如果我想动态添加一个新的 Web 服务器怎么办?我必须手动编辑静态主机文件吗?到目前为止,使用 Rackspace 的动态清单脚本,它只是列出了一大堆服务器,无法按类型对它们进行分组。如果我能得到它,我会欣喜若狂。
主机.j2:
[a]
{% for a in a_provision.instances %}
{{ a.rax_accessipv4 }}
{% endfor %}
[b]
{% for b in b_provision.instances %}
{{ b.rax_accessipv4 }}
{% endfor %}
主要.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'