[英]Ansible/Rackspace - adding multiple nodes to a load balancer
我正在使用Ansible構建多個節點,然后將它們添加到負載均衡器中。 出現的問題是,使用rax_clb_nodes模塊添加第二個節點時,我得到:
TASK: [build-servers | add nodes to load balancer] **************************
failed: [myserver-v0-0-1-ord -> 127.0.0.1] => {"failed": true}
msg: Load Balancer '123456' has a status of 'PENDING_UPDATE' and is considered immutable.
changed: [myserver-v0-0-1-ord -> 127.0.0.1]
我的劇本在rax_clb_nodes中定義了wait=yes
和wait_timeout=60
,所以我不確定為什么會這樣。
對修復有任何見解嗎?
之所以發生這種情況是因為rax_clb_nodes
任務是代表清單中的每個匹配主機並行執行的,但是一次只能執行一次負載均衡器更新。 有幾種方法可以串行執行它,具體取決於您的劇本的組織方式。
如果可以輕松地將此任務轉移到自己的任務中,請使用serial: 1
一次代表一個主機執行該任務:
- name: Load balancer membership
hosts: build-servers
serial: 1
tasks:
- name: Add {{ inventory_hostname }} node to the load balancer
local_action:
module: rax_clb_nodes
address: "{{ rax_addresses.private.0.addr }}"
port: 443
state: present
wait: yes
wait_timeout: 60
# ...
不幸的是, serial
只能在整個戲劇在指定的時間,而不是單獨的任務。 如果無法輕松地將任務轉移到自己的任務上 (例如,如果它在某個角色中或在包含的任務列表中),則可以通過組合run_once
和with_items
循環來實現串行執行:
- name: Add nodes to load balancer
local_action:
module: rax_clb_nodes
address: "{{ hostvars[item].rax_addresses.private.0.addr }}"
port: 443
state: present
wait: yes
wait_timeout: 60
# ...
run_once: yes
with_items: "{{ groups['build-servers'] }}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.