Add support for clustered servers
Certain services are expected to be served by more than one server, think of git mirrors, zuul workers etc. While we could define all of them with numbered pattern manually in the resources.yaml file, this gets unwieldy and boring if the count is large, repeating on and on the same server stanzas with just <service_name><$NODE_COUNT>. This change allows to put a 'node_count' attribute to the server resource. With it, the role will create as many servers as 'node_count' by numbering the servers as <server_name><$NODE_COUNT>. e.g. servers: - name: logstash-worker.openstack.org image: ubuntu-trusty flavor: d1 node_count: 2 That would make the role to create two server instances named 'logstash-worker01.openstack.org' and 'logstash-worker02.openstack.org' Change-Id: I220a2786efe56187f60f1eed2f32e661e6d3ed3f
This commit is contained in:
parent
6438dea321
commit
205f4d31de
@ -5,7 +5,7 @@
|
||||
- os_server:
|
||||
cloud: "{{ item_cloud.oscc_cloud|default(item_cloud.name) }}"
|
||||
state: "{{ item_server.state|default(omit) }}"
|
||||
name: "{{ item_server.name }}"
|
||||
name: "{{ item_server.name.partition('.')[0] }}{{ '' if item_server.node_count is not defined else item }}{{ item_server.name.partition('.')[1] + item_server.name.partition('.')[2] }}"
|
||||
image: "{{ item_server.image }}"
|
||||
auto_ip: "{{ item_server.auto_ip|default(omit) }}"
|
||||
boot_from_volume: "{{ item_server.boot_from_volume|default(omit) }}"
|
||||
@ -28,6 +28,7 @@
|
||||
userdata: "{{ item_server.userdata|default(omit) }}"
|
||||
volume_size: "{{ item_server.volume_size|default(omit) }}"
|
||||
volumes: "{{ item_server.volumes|default(omit) }}"
|
||||
with_sequence: start=1 end={{ item_server.node_count|default(1) }} format=%02x
|
||||
register: os_server_result
|
||||
|
||||
- add_host: name={{ item.server.name }} groups=cl_servers_just_created ansible_ssh_host={{ item.server.public_v4 }}
|
||||
|
@ -29,6 +29,16 @@ clouds:
|
||||
image: cirros-0.3.4-x86_64-uec
|
||||
flavor: c1
|
||||
network: test_network
|
||||
- name: test_cluster
|
||||
image: cirros-0.3.4-x86_64-uec
|
||||
flavor: c1
|
||||
network: test_network
|
||||
node_count: 2
|
||||
- name: test_cluster.testdomain
|
||||
image: cirros-0.3.4-x86_64-uec
|
||||
flavor: c1
|
||||
network: test_network
|
||||
node_count: 2
|
||||
networks:
|
||||
- name: test_network
|
||||
subnets:
|
||||
|
@ -68,3 +68,35 @@
|
||||
|
||||
- name: Assert test-network network has been created
|
||||
assert: { that: result.rc == 0 }
|
||||
|
||||
- name: Querying for test_cluster01 server
|
||||
command: openstack --os-cloud devstack server show test_cluster01
|
||||
register: result
|
||||
changed_when: False
|
||||
|
||||
- name: Assert test_cluster01 server has been created
|
||||
assert: { that: result.rc == 0 }
|
||||
|
||||
- name: Querying for test_cluster02 server
|
||||
command: openstack --os-cloud devstack server show test_cluster02
|
||||
register: result
|
||||
changed_when: False
|
||||
|
||||
- name: Assert test_cluster02 server has been created
|
||||
assert: { that: result.rc == 0 }
|
||||
|
||||
- name: Querying for test_cluster01.testdomain server
|
||||
command: openstack --os-cloud devstack server show test_cluster01.testdomain
|
||||
register: result
|
||||
changed_when: False
|
||||
|
||||
- name: Assert test_cluster01.testdomain server has been created
|
||||
assert: { that: result.rc == 0 }
|
||||
|
||||
- name: Querying for test_cluster02.testdomain server
|
||||
command: openstack --os-cloud devstack server show test_cluster02.testdomain
|
||||
register: result
|
||||
changed_when: False
|
||||
|
||||
- name: Assert test_cluster02.testdomain server has been created
|
||||
assert: { that: result.rc == 0 }
|
||||
|
Loading…
x
Reference in New Issue
Block a user