我一直在按照这个示例剧本使用 Ansible 创建机架空间服务器
http://nicholaskuechler.com/2015/01/09/build-rackspace-cloud-servers-ansible-virtualenv/
效果很好,但一次只能在一台服务器上运行,所以我试图让它更具动态性,使用 with_items 循环遍历我想要构建的服务器数量
tasks:
- name: Rackspace cloud server build request
local_action:
module: rax
credentials: "{{ credentials }}"
name: "{{ item }}"
flavor: "{{ flavor }}"
image: "{{ image }}"
region: "{{ region }}"
files: "{{ files }}"
wait: yes
state: present
networks:
- private
- public
with_items:
- server-app-01
- server-app-02
register: rax
这可以很好地创建服务器,但是当我尝试使用链接中的方法将其添加到部署组时,我收到一个错误,正如预期的那样,现在有一个“结果”键我尝试了各种方法并以我认为文档暗示的方式来定位它:
- name: Add new cloud server to host group
local_action:
module: add_host
hostname: "{{ item.success.name }}"
ansible_ssh_host: "{{ item.success.rax_accessipv4 }}"
ansible_ssh_user: root
groupname: deploy
with_items: rax.results
(我也尝试了许多其他类型的方法来解决这个问题)但是我得到“一个或多个未定义的变量:'list object' has no attribute 'rax_accessipv4”</p>
这是我通过调试从 rax 返回的对象的精简版本。这些服务器不再存在。 http://pastebin.com/NRvM7anS
谁能告诉我哪里出错了我开始有点生气了