Optimize the reconfiguration for 'common' container
Change-Id: I57e3b310c65aabeea9f298db78762e9d535e8703 Partially-implements: blueprint better-reconfigure
This commit is contained in:
parent
b595f236d0
commit
46a54e6178
@ -3,6 +3,42 @@
|
||||
# this role has already run. We can track what has run with host facts.
|
||||
common_run: False
|
||||
|
||||
common_services:
|
||||
fluentd:
|
||||
container_name: fluentd
|
||||
image: "{{ fluentd_image_full }}"
|
||||
environment:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
SKIP_LOG_SETUP: "true"
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/fluentd/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
kolla-toolbox:
|
||||
container_name: kolla_toolbox
|
||||
image: "{{ kolla_toolbox_image_full }}"
|
||||
environment:
|
||||
ANSIBLE_NOCOLOR: "1"
|
||||
ANSIBLE_LIBRARY: "/usr/share/ansible"
|
||||
privileged: True
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/kolla-toolbox/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "/dev/:/dev/"
|
||||
- "/run/:/run/:shared"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
# DUMMY_ENVIRONMENT is needed because empty environment is not supported
|
||||
cron:
|
||||
container_name: cron
|
||||
image: "{{ cron_image_full }}"
|
||||
environment:
|
||||
DUMMY_ENVIRONMENT:
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/cron/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
|
||||
|
||||
####################
|
||||
# Docker
|
||||
####################
|
||||
|
67
ansible/roles/common/handlers/main.yml
Normal file
67
ansible/roles/common/handlers/main.yml
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
- name: Restart fluentd container
|
||||
vars:
|
||||
service_name: "fluentd"
|
||||
service: "{{ common_services[service_name] }}"
|
||||
config_json: "{{ common_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
fluentd_container: "{{ check_common_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
kolla_docker:
|
||||
action: "recreate_or_restart_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ service.container_name }}"
|
||||
image: "{{ service.image }}"
|
||||
volumes: "{{ service.volumes }}"
|
||||
environment: "{{ service.environment }}"
|
||||
when:
|
||||
- action != "config"
|
||||
- config_json.changed | bool
|
||||
or fluentd_input.changed | bool
|
||||
or fluentd_output.changed | bool
|
||||
or fluentd_format.changed | bool
|
||||
or fluentd_filter.changed | bool
|
||||
or fluentd_td_agent.changed | bool
|
||||
or fluentd_container.changed | bool
|
||||
|
||||
- name: Restart kolla-toolbox container
|
||||
vars:
|
||||
service_name: "kolla-toolbox"
|
||||
service: "{{ common_services[service_name] }}"
|
||||
config_json: "{{ common_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
kolla_toolbox_container: "{{ check_common_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
kolla_docker:
|
||||
action: "recreate_or_restart_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ service.container_name }}"
|
||||
image: "{{ service.image }}"
|
||||
privileged: "{{ service.privileged | default(False) }}"
|
||||
volumes: "{{ service.volumes }}"
|
||||
environment: "{{ service.environment }}"
|
||||
when:
|
||||
- action != "config"
|
||||
- config_json.changed | bool
|
||||
or kolla_toolbox_container.changed | bool
|
||||
notify:
|
||||
- Initializing toolbox container using normal user
|
||||
|
||||
- name: Initializing toolbox container using normal user
|
||||
command: docker exec -t kolla_toolbox /usr/bin/ansible --version
|
||||
changed_when: false
|
||||
|
||||
- name: Restart cron container
|
||||
vars:
|
||||
service_name: "cron"
|
||||
service: "{{ common_services[service_name] }}"
|
||||
config_json: "{{ common_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
cron_container: "{{ check_common_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||
kolla_docker:
|
||||
action: "recreate_or_restart_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ service.container_name }}"
|
||||
image: "{{ service.image }}"
|
||||
volumes: "{{ service.volumes }}"
|
||||
environment: "{{ service.environment }}"
|
||||
when:
|
||||
- action != "config"
|
||||
- config_json.changed | bool
|
||||
or cron_confs.changed | bool
|
||||
or check_common_containers.changed | bool
|
@ -16,27 +16,31 @@
|
||||
|
||||
- name: Copying over config.json files for services
|
||||
template:
|
||||
src: "{{ item }}.json.j2"
|
||||
dest: "{{ node_config_directory }}/{{ item }}/config.json"
|
||||
with_items:
|
||||
- "fluentd"
|
||||
- "kolla-toolbox"
|
||||
- "cron"
|
||||
src: "{{ item.key }}.json.j2"
|
||||
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
||||
register: common_config_jsons
|
||||
with_dict: "{{ common_services }}"
|
||||
notify:
|
||||
- "Restart {{ item.key }} container"
|
||||
|
||||
- name: Copying over fluentd input config files
|
||||
template:
|
||||
src: "conf/input/{{ item }}.conf.j2"
|
||||
dest: "{{ node_config_directory }}/fluentd/input/{{ item }}.conf"
|
||||
register: fluentd_input
|
||||
with_items:
|
||||
- "00-global"
|
||||
- "01-syslog"
|
||||
- "02-mariadb"
|
||||
- "03-rabbitmq"
|
||||
notify:
|
||||
- Restart fluentd container
|
||||
|
||||
- name: Copying over fluentd output config files
|
||||
template:
|
||||
src: "conf/output/{{ item.name }}.conf.j2"
|
||||
dest: "{{ node_config_directory }}/fluentd/output/{{ item.name }}.conf"
|
||||
register: fluentd_output
|
||||
when: item.enabled | bool
|
||||
with_items:
|
||||
- name: "00-local"
|
||||
@ -44,35 +48,47 @@
|
||||
- name: "01-es"
|
||||
enabled: "{{ enable_elasticsearch | bool or
|
||||
( elasticsearch_address != kolla_internal_vip_address ) | bool }}"
|
||||
notify:
|
||||
- Restart fluentd container
|
||||
|
||||
- name: Copying over fluentd format config files
|
||||
template:
|
||||
src: "conf/format/{{ item }}.conf.j2"
|
||||
dest: "{{ node_config_directory }}/fluentd/format/{{ item }}.conf"
|
||||
register: fluentd_format
|
||||
with_items:
|
||||
- "apache_access"
|
||||
- "wsgi_access"
|
||||
- "wsgi_python"
|
||||
notify:
|
||||
- Restart fluentd container
|
||||
|
||||
- name: Copying over fluentd filter config files
|
||||
template:
|
||||
src: "conf/filter/{{ item }}.conf.j2"
|
||||
dest: "{{ node_config_directory }}/fluentd/filter/{{ item }}.conf"
|
||||
register: fluentd_filter
|
||||
with_items:
|
||||
- "00-record_transformer"
|
||||
- "01-rewrite"
|
||||
notify:
|
||||
- Restart fluentd container
|
||||
|
||||
- name: Copying over td-agent.conf
|
||||
template:
|
||||
src: "td-agent.conf.j2"
|
||||
dest: "{{ node_config_directory }}/{{ item }}/td-agent.conf"
|
||||
register: fluentd_td_agent
|
||||
with_items:
|
||||
- "fluentd"
|
||||
notify:
|
||||
- Restart fluentd container
|
||||
|
||||
- name: Copying over cron logrotate config files
|
||||
template:
|
||||
src: "cron-logrotate-{{ item.name }}.conf.j2"
|
||||
dest: "{{ node_config_directory }}/cron/logrotate/{{ item.name }}.conf"
|
||||
register: cron_confs
|
||||
when: item.enabled | bool
|
||||
with_items:
|
||||
- { name: "ansible", enabled: "yes" }
|
||||
@ -125,3 +141,21 @@
|
||||
- { name: "trove", enabled: "{{ enable_trove }}" }
|
||||
- { name: "watcher", enabled: "{{ enable_watcher }}" }
|
||||
- { name: "zun", enabled: "{{ enable_zun }}" }
|
||||
notify:
|
||||
- Restart cron container
|
||||
|
||||
- name: Check common containers
|
||||
kolla_docker:
|
||||
action: "compare_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ item.value.container_name }}"
|
||||
image: "{{ item.value.image }}"
|
||||
volumes: "{{ item.value.volumes }}"
|
||||
privileged: "{{ item.value.privileged | default(False) }}"
|
||||
environment: "{{ item.value.environment }}"
|
||||
register: check_common_containers
|
||||
when:
|
||||
- action != "config"
|
||||
with_dict: "{{ common_services }}"
|
||||
notify:
|
||||
- "Restart {{ item.key }} container"
|
||||
|
@ -3,4 +3,5 @@
|
||||
|
||||
- include: bootstrap.yml
|
||||
|
||||
- include: start.yml
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
||||
|
@ -1,18 +1,7 @@
|
||||
---
|
||||
- name: Pulling kolla-toolbox image
|
||||
- name: Pulling common images
|
||||
kolla_docker:
|
||||
action: "pull_image"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ kolla_toolbox_image_full }}"
|
||||
|
||||
- name: Pulling fluentd image
|
||||
kolla_docker:
|
||||
action: "pull_image"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ fluentd_image_full }}"
|
||||
|
||||
- name: Pulling cron image
|
||||
kolla_docker:
|
||||
action: "pull_image"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ cron_image_full }}"
|
||||
image: "{{ item.value.image }}"
|
||||
with_dict: "{{ common_services }}"
|
||||
|
@ -1,42 +1,2 @@
|
||||
---
|
||||
- name: Ensuring the fluentd container is up
|
||||
kolla_docker:
|
||||
name: "fluentd"
|
||||
action: "get_container_state"
|
||||
register: container_state
|
||||
failed_when: container_state.Running == false
|
||||
|
||||
- include: config.yml
|
||||
|
||||
- name: Checking the fluentd config
|
||||
command: docker exec fluentd /usr/local/bin/kolla_set_configs --check
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
register: check_result
|
||||
|
||||
- name: Getting the fluentd container config strategy
|
||||
kolla_docker:
|
||||
name: "fluentd"
|
||||
action: "get_container_env"
|
||||
register: container_env
|
||||
|
||||
- name: Removing the fluentd container
|
||||
kolla_docker:
|
||||
name: "fluentd"
|
||||
action: "remove_container"
|
||||
register: remove_container
|
||||
when:
|
||||
- config_strategy == "COPY_ONCE" or container_env["KOLLA_CONFIG_STRATEGY"] == "COPY_ONCE"
|
||||
- check_result.rc == 1
|
||||
|
||||
- include: start.yml
|
||||
when: remove_container.changed
|
||||
|
||||
- name: Restarting the fluentd container
|
||||
kolla_docker:
|
||||
name: "fluentd"
|
||||
action: "restart_container"
|
||||
when:
|
||||
- config_strategy == "COPY_ALWAYS"
|
||||
- container_env["KOLLA_CONFIG_STRATEGY"] == "COPY_ALWAYS"
|
||||
- check_result.rc == 1
|
||||
- include: deploy.yml
|
||||
|
@ -1,46 +0,0 @@
|
||||
---
|
||||
- name: Starting fluentd container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
SKIP_LOG_SETUP: "true"
|
||||
image: "{{ fluentd_image_full }}"
|
||||
name: "fluentd"
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/fluentd/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
|
||||
- name: Starting kolla-toolbox container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
ANSIBLE_NOCOLOR: "1"
|
||||
ANSIBLE_LIBRARY: "/usr/share/ansible"
|
||||
image: "{{ kolla_toolbox_image_full }}"
|
||||
name: "kolla_toolbox"
|
||||
privileged: True
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/kolla-toolbox/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "/dev/:/dev/"
|
||||
- "/run/:/run/:shared"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
|
||||
- name: Initializing toolbox container using normal user
|
||||
command: docker exec -t kolla_toolbox /usr/bin/ansible --version
|
||||
changed_when: false
|
||||
|
||||
- name: Starting cron container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ cron_image_full }}"
|
||||
name: "cron"
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/cron/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "kolla_logs:/var/log/kolla/"
|
@ -1,4 +1,5 @@
|
||||
---
|
||||
- include: config.yml
|
||||
|
||||
- include: start.yml
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
||||
|
Loading…
Reference in New Issue
Block a user