我正在尝试制作一些Ansible手册,它将提供一个环境(n个数据库,m个Web服务器等)并保存这些主机以供日后使用,以便我可以对它们进行部署.我能想到的最好的是https://gist.github.com/geowa4/7686681(复制如下).这适用于它为各种服务器类型创建机器并将它们保存到hosts文件.我将使用新生成的hosts文件的部署脚本确保在部署源代码之前正确安装和配置了正确的软件包.这是使用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'
Ash Wilson.. 5
最近版本的Ansible中的Rackspace模块和动态库存(我使用的是1.4.1)可以让您对服务器进行分组!
该rax
模块接受一个"组"参数中所储存的创建服务器的元数据,其中,Rackspace公司动态库存plugin将解压到创建Ansible组,因此后续的戏剧可以使用您所指定的组名.
但是,看起来只是在比赛开始时查询库存.要在同一运行中使用新启动的服务器,您需要使用add-host模块在运行时将它们添加到清单中:
- name: build webservers local_action: module: rax name: webserver group: webservers exact_count: true credentials: ~/.rackspace_cloud_credentials flavor: 2 image: df27d481-63a5-40ca-8920-3d132ed643d9 files: /root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub state: present disk_config: manual wait: yes wait_timeout: 10000 register: webserversvar - name: add newly provisioned webservers to a group local_action: add_host hostname={{ item.accessIPv4 }} groupname=webservers with_items: webserversvar.instances - name: build databases local_action: module: rax name: database group: databases exact_count: true credentials: ~/.rackspace_cloud_credentials flavor: 2 image: df27d481-63a5-40ca-8920-3d132ed643d9 files: /root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub state: present disk_config: manual wait: yes wait_timeout: 10000 register: databasesvar - name: add newly provisioned databases to a group local_action: add_host hostname={{ item.accessIPv4 }} groupname=databases with_items: databasesvar.instances
有一篇关于在AWS上执行此操作的文章,其中涵盖了许多相同的高级概念,即使提供者不同.
最近版本的Ansible中的Rackspace模块和动态库存(我使用的是1.4.1)可以让您对服务器进行分组!
该rax
模块接受一个"组"参数中所储存的创建服务器的元数据,其中,Rackspace公司动态库存plugin将解压到创建Ansible组,因此后续的戏剧可以使用您所指定的组名.
但是,看起来只是在比赛开始时查询库存.要在同一运行中使用新启动的服务器,您需要使用add-host模块在运行时将它们添加到清单中:
- name: build webservers local_action: module: rax name: webserver group: webservers exact_count: true credentials: ~/.rackspace_cloud_credentials flavor: 2 image: df27d481-63a5-40ca-8920-3d132ed643d9 files: /root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub state: present disk_config: manual wait: yes wait_timeout: 10000 register: webserversvar - name: add newly provisioned webservers to a group local_action: add_host hostname={{ item.accessIPv4 }} groupname=webservers with_items: webserversvar.instances - name: build databases local_action: module: rax name: database group: databases exact_count: true credentials: ~/.rackspace_cloud_credentials flavor: 2 image: df27d481-63a5-40ca-8920-3d132ed643d9 files: /root/.ssh/authorized_keys: ~/.ssh/id_rsa.pub state: present disk_config: manual wait: yes wait_timeout: 10000 register: databasesvar - name: add newly provisioned databases to a group local_action: add_host hostname={{ item.accessIPv4 }} groupname=databases with_items: databasesvar.instances
有一篇关于在AWS上执行此操作的文章,其中涵盖了许多相同的高级概念,即使提供者不同.