2016-07-13 8 views
0

私は複数のノードをビルドしてからロードバランサに追加することができます。発生する問題は、第2のノードがrax_clb_nodesモジュールを使用して追加されているとき、私は得ることです:アシスタント/ Rackspace - ロードバランサに複数のノードを追加する

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を定義するので、私はこの問題が発生した理由としてわかりませんよ。

修正についての洞察はありますか?

答えて

0

これは、rax_clb_nodesタスクがインベントリ内の一致するホストのために並列に実行されているために発生していますが、一度に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だけで全体のプレーに指定することができます。

この作業は簡単に独自の遊びに移動することができる場合は、代わりに、一度に一つのホストの代わりにそれを実行するためにserial: 1を使用個々のタスクではなく、時間です。 を自分のプレイに簡単に移動できない場合(たとえば、ロール内または含まれているタスクリストの中にある場合)、run_onceと​​:

の組み合わせでシリアル実行を実現できます
- 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'] }}" 
関連する問題