Merge "Add kolla_docker action for reconfigure"
This commit is contained in:
commit
69c7decf49
@ -35,9 +35,12 @@ options:
|
|||||||
choices:
|
choices:
|
||||||
- compare_image
|
- compare_image
|
||||||
- create_volume
|
- create_volume
|
||||||
|
- get_container_env
|
||||||
|
- get_container_state
|
||||||
- pull_image
|
- pull_image
|
||||||
- remove_container
|
- remove_container
|
||||||
- remove_volume
|
- remove_volume
|
||||||
|
- restart_container
|
||||||
- start_container
|
- start_container
|
||||||
- stop_container
|
- stop_container
|
||||||
api_version:
|
api_version:
|
||||||
@ -500,6 +503,30 @@ class DockerWorker(object):
|
|||||||
if self.params.get('remove_on_exit'):
|
if self.params.get('remove_on_exit'):
|
||||||
self.remove_container()
|
self.remove_container()
|
||||||
|
|
||||||
|
def get_container_env(self):
|
||||||
|
name = self.params.get('name')
|
||||||
|
info = self.get_container_info()
|
||||||
|
if not info:
|
||||||
|
self.module.fail_json(msg="No such container: {}".format(name))
|
||||||
|
else:
|
||||||
|
envs = dict()
|
||||||
|
for env in info['Config']['Env']:
|
||||||
|
if '=' in env:
|
||||||
|
key, value = env.split('=', 1)
|
||||||
|
else:
|
||||||
|
key, value = env, ''
|
||||||
|
envs[key] = value
|
||||||
|
|
||||||
|
self.module.exit_json(**envs)
|
||||||
|
|
||||||
|
def get_container_state(self):
|
||||||
|
name = self.params.get('name')
|
||||||
|
info = self.get_container_info()
|
||||||
|
if not info:
|
||||||
|
self.module.fail_json(msg="No such container: {}".format(name))
|
||||||
|
else:
|
||||||
|
self.module.exit_json(**info['State'])
|
||||||
|
|
||||||
def stop_container(self):
|
def stop_container(self):
|
||||||
name = self.params.get('name')
|
name = self.params.get('name')
|
||||||
container = self.check_container()
|
container = self.check_container()
|
||||||
@ -507,6 +534,16 @@ class DockerWorker(object):
|
|||||||
self.changed = True
|
self.changed = True
|
||||||
self.dc.stop(name)
|
self.dc.stop(name)
|
||||||
|
|
||||||
|
def restart_container(self):
|
||||||
|
name = self.params.get('name')
|
||||||
|
info = self.get_container_info()
|
||||||
|
if not info:
|
||||||
|
self.module.fail_json(
|
||||||
|
msg="No such container: {}".format(name))
|
||||||
|
else:
|
||||||
|
self.changed = True
|
||||||
|
self.dc.restart(name)
|
||||||
|
|
||||||
def create_volume(self):
|
def create_volume(self):
|
||||||
if not self.check_volume():
|
if not self.check_volume():
|
||||||
self.changed = True
|
self.changed = True
|
||||||
@ -533,9 +570,12 @@ def generate_module():
|
|||||||
common_options=dict(required=False, type='dict', default=dict()),
|
common_options=dict(required=False, type='dict', default=dict()),
|
||||||
action=dict(requried=True, type='str', choices=['compare_image',
|
action=dict(requried=True, type='str', choices=['compare_image',
|
||||||
'create_volume',
|
'create_volume',
|
||||||
|
'get_container_env',
|
||||||
|
'get_container_state',
|
||||||
'pull_image',
|
'pull_image',
|
||||||
'remove_container',
|
'remove_container',
|
||||||
'remove_volume',
|
'remove_volume',
|
||||||
|
'restart_container',
|
||||||
'start_container',
|
'start_container',
|
||||||
'stop_container']),
|
'stop_container']),
|
||||||
api_version=dict(required=False, type='str', default='auto'),
|
api_version=dict(required=False, type='str', default='auto'),
|
||||||
|
@ -1,39 +1,64 @@
|
|||||||
---
|
---
|
||||||
|
- name: Ensuring the containers up
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
action: "get_container_state"
|
||||||
|
register: container_state
|
||||||
|
failed_when: container_state.Running == false
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: keystone, group: keystone }
|
||||||
|
|
||||||
- include: config.yml
|
- include: config.yml
|
||||||
|
|
||||||
- name: Check the configs
|
- name: Check the configs
|
||||||
command: docker exec keystone /usr/local/bin/kolla_set_configs --check
|
command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
register: check_result
|
register: check_results
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: keystone, group: keystone }
|
||||||
|
|
||||||
# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS'
|
# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS'
|
||||||
# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE',
|
# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE',
|
||||||
# just remove the container and start again
|
# just remove the container and start again
|
||||||
- name: Container config strategy
|
- name: Containers config strategy
|
||||||
command: docker exec keystone printenv KOLLA_CONFIG_STRATEGY
|
|
||||||
changed_when: false
|
|
||||||
failed_when: false
|
|
||||||
register: container_config_strategy
|
|
||||||
|
|
||||||
- name: Remove the keystone container
|
|
||||||
kolla_docker:
|
kolla_docker:
|
||||||
name: "keystone"
|
name: "{{ item.name }}"
|
||||||
|
action: "get_container_env"
|
||||||
|
register: container_envs
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: keystone, group: keystone }
|
||||||
|
|
||||||
|
- name: Remove the containers
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item[0]['name'] }}"
|
||||||
action: "remove_container"
|
action: "remove_container"
|
||||||
|
register: remove_containers
|
||||||
when:
|
when:
|
||||||
- config_strategy == "COPY_ONCE" or container_config_strategy.stdout == 'COPY_ONCE'
|
- config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
|
||||||
- check_result.rc == 1
|
- item[2]['rc'] == 1
|
||||||
|
- inventory_hostname in groups[item[0]['group']]
|
||||||
|
with_together:
|
||||||
|
- [{ name: keystone, group: keystone }]
|
||||||
|
- container_envs.results
|
||||||
|
- check_results.results
|
||||||
|
|
||||||
- include: start.yml
|
- include: start.yml
|
||||||
when:
|
when: remove_containers.changed
|
||||||
- config_strategy == "COPY_ONCE" or container_config_strategy.stdout == 'COPY_ONCE'
|
|
||||||
- check_result.rc == 1
|
|
||||||
|
|
||||||
- name: Restart keystone service
|
- name: Restart containers
|
||||||
# TODO(jeffrey4l): move to the kolla_docker module when
|
kolla_docker:
|
||||||
# it has restart_container action
|
name: "{{ item[0]['name'] }}"
|
||||||
command: docker restart keystone
|
action: "restart_container"
|
||||||
when:
|
when:
|
||||||
- config_strategy == 'COPY_ALWAYS'
|
- config_strategy == 'COPY_ALWAYS'
|
||||||
- container_config_strategy.stdout != 'COPY_ONCE'
|
- item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
|
||||||
- check_result.rc == 1
|
- item[2]['rc'] == 1
|
||||||
|
- inventory_hostname in groups[item[0]['group']]
|
||||||
|
with_together:
|
||||||
|
- [{ name: keystone, group: keystone }]
|
||||||
|
- container_envs.results
|
||||||
|
- check_results.results
|
||||||
|
Loading…
Reference in New Issue
Block a user