簡體   English   中英

Ansible / Rackspace-將多個節點添加到負載均衡器

[英]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=yeswait_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_oncewith_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM