From 4f15ac800855ca2b5625ac6e3efbb90f7dc62c16 Mon Sep 17 00:00:00 2001 From: Ryan Hallisey Date: Mon, 28 Sep 2015 15:59:53 -0400 Subject: [PATCH] Neutron Agents json support Neutron Agents is a special case for json support. Since it's a fat container, there will be multiple commnds that will need to be run in the container. In order to account for this, the commands will be hardcoded until the agents are split out to their own containers. The files will be copied the normal way. Co-Authored-By: Steven Dake Change-Id: I9fc226cc7b82c2594db5814d30d453a29a4af8c0 Partially-Implements: blueprint replace-config-external Closes-Bug: #1500566 --- ansible/roles/neutron/tasks/config.yml | 6 +++ ansible/roles/neutron/tasks/start.yml | 2 +- .../neutron/templates/neutron-agents.json.j2 | 41 +++++++++++++++++++ docker/neutron/neutron-agents/Dockerfile.j2 | 4 +- .../neutron-dhcp-agent/config-external.sh | 13 ------ .../neutron-dhcp-agent/start.sh | 34 ++------------- .../neutron-l3-agent/config-external.sh | 23 ----------- .../neutron-agents/neutron-l3-agent/start.sh | 34 ++------------- .../neutron-metadata-agent/config-external.sh | 13 ------ .../neutron-metadata-agent/start.sh | 34 ++------------- docker/neutron/neutron-agents/start.sh | 7 ++++ 11 files changed, 70 insertions(+), 141 deletions(-) create mode 100644 ansible/roles/neutron/templates/neutron-agents.json.j2 delete mode 100755 docker/neutron/neutron-agents/neutron-dhcp-agent/config-external.sh delete mode 100755 docker/neutron/neutron-agents/neutron-l3-agent/config-external.sh delete mode 100755 docker/neutron/neutron-agents/neutron-metadata-agent/config-external.sh create mode 100755 docker/neutron/neutron-agents/start.sh diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml index f7b5df4703..e7cc7b1916 100644 --- a/ansible/roles/neutron/tasks/config.yml +++ b/ansible/roles/neutron/tasks/config.yml @@ -137,6 +137,12 @@ config_dest: "{{ node_config_directory }}/{{ service_name }}/ml2_conf.ini" when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents']) +- name: Copying Neutron Agents JSON configuration file + template: + src: "roles/neutron/templates/neutron-agents.json.j2" + dest: "{{ node_config_directory }}/neutron-agents/config.json" + when: inventory_hostname in groups['neutron-server'] + - name: Copying Neutron Server JSON configuration file template: src: "roles/neutron/templates/neutron-server.json.j2" diff --git a/ansible/roles/neutron/tasks/start.yml b/ansible/roles/neutron/tasks/start.yml index 7922aee05b..67af9001f7 100644 --- a/ansible/roles/neutron/tasks/start.yml +++ b/ansible/roles/neutron/tasks/start.yml @@ -142,7 +142,7 @@ image: "{{ neutron_agents_image_full }}" volumes: - "/run:/run" - - "{{ node_config_directory }}/neutron-agents/:/opt/kolla/neutron-agents/:ro" + - "{{ node_config_directory }}/neutron-agents/:/opt/kolla/config_files/:ro" - "/var/lib/kolla/dev/log:/dev/log" env: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" diff --git a/ansible/roles/neutron/templates/neutron-agents.json.j2 b/ansible/roles/neutron/templates/neutron-agents.json.j2 new file mode 100644 index 0000000000..4503acbaec --- /dev/null +++ b/ansible/roles/neutron/templates/neutron-agents.json.j2 @@ -0,0 +1,41 @@ +{ + "command": "", + "config_files": [ + { + "source": "/opt/kolla/config_files/neutron.conf", + "dest": "/etc/neutron/neutron.conf", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "/opt/kolla/config_files/dhcp_agent.ini", + "dest": "/etc/neutron/dhcp_agent.ini", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "/opt/kolla/config_files/dnsmasq.conf", + "dest": "/etc/neutron/dnsmasq.conf", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "/opt/kolla/config_files/l3_agent.ini", + "dest": "/etc/neutron/l3_agent.ini", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "/opt/kolla/config_files/ml2_conf.ini", + "dest": "/etc/neutron/plugins/ml2/ml2_conf.ini", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "/opt/kolla/config_files/metadata_agent.ini", + "dest": "/etc/neutron/metadata_agent.ini", + "owner": "neutron", + "perm": "0600" + } + ] +} diff --git a/docker/neutron/neutron-agents/Dockerfile.j2 b/docker/neutron/neutron-agents/Dockerfile.j2 index 7eb1a1152c..3fb1ffe30d 100644 --- a/docker/neutron/neutron-agents/Dockerfile.j2 +++ b/docker/neutron/neutron-agents/Dockerfile.j2 @@ -32,6 +32,8 @@ COPY neutron-dhcp-agent/ /opt/kolla/neutron-dhcp-agent COPY neutron-l3-agent/ /opt/kolla/neutron-l3-agent COPY neutron-metadata-agent/ /opt/kolla/neutron-metadata-agent -CMD ["/usr/bin/supervisord"] +COPY start.sh / + +CMD ["/start.sh"] {{ include_footer }} diff --git a/docker/neutron/neutron-agents/neutron-dhcp-agent/config-external.sh b/docker/neutron/neutron-agents/neutron-dhcp-agent/config-external.sh deleted file mode 100755 index badbd86a10..0000000000 --- a/docker/neutron/neutron-agents/neutron-dhcp-agent/config-external.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -SOURCES="/opt/kolla/neutron-agents/neutron.conf /opt/kolla/neutron-agents/dhcp_agent.ini /opt/kolla/neutron-agents/dnsmasq.conf" -TARGET="/etc/neutron/" -OWNER="neutron" - -for f in $SOURCES; do - if [[ -f "$f" ]]; then - fname=$(basename $f) - cp $f $TARGET - chown ${OWNER}: $TARGET/$fname - chmod 0644 $TARGET/$fname - fi -done diff --git a/docker/neutron/neutron-agents/neutron-dhcp-agent/start.sh b/docker/neutron/neutron-agents/neutron-dhcp-agent/start.sh index 9186a5c90d..96ecd80e6f 100755 --- a/docker/neutron/neutron-agents/neutron-dhcp-agent/start.sh +++ b/docker/neutron/neutron-agents/neutron-dhcp-agent/start.sh @@ -1,37 +1,11 @@ #!/bin/bash set -o errexit +# Loading common functions. +source /opt/kolla/config-sudoers.sh + +# Will be removed when neutron-agents is a thin container CMD="/usr/bin/neutron-dhcp-agent" ARGS="--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini" -# Loading common functions. -source /opt/kolla/kolla-common.sh -source /opt/kolla/config-sudoers.sh - -# Override set_configs() here because it doesn't work for fat containers like -# this one. -set_configs() { - case $KOLLA_CONFIG_STRATEGY in - COPY_ALWAYS) - source /opt/kolla/neutron-dhcp-agent/config-external.sh - ;; - COPY_ONCE) - if [[ -f /configured-dhcp ]]; then - echo 'INFO - Neutron-dhcp has already been configured; Refusing to copy new configs' - return - fi - source /opt/kolla/neutron-dhcp-agent/config-external.sh - touch /configured-dhcp - ;; - - *) - echo '$KOLLA_CONFIG_STRATEGY is not set properly' - exit 1 - ;; - esac -} - -# Execute config strategy -set_configs - exec $CMD $ARGS diff --git a/docker/neutron/neutron-agents/neutron-l3-agent/config-external.sh b/docker/neutron/neutron-agents/neutron-l3-agent/config-external.sh deleted file mode 100755 index e6eb049a4b..0000000000 --- a/docker/neutron/neutron-agents/neutron-l3-agent/config-external.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -SOURCES="/opt/kolla/neutron-agents/neutron.conf /opt/kolla/neutron-agents/l3_agent.ini /opt/kolla/neutron-agents/fwaas_driver.ini" -TARGET="/etc/neutron/" -OWNER="neutron" - -for f in $SOURCES; do - if [[ -f "$f" ]]; then - fname=$(basename $f) - cp $f $TARGET - chown ${OWNER}: $TARGET/$fname - chmod 0644 $TARGET/$fname - fi -done - -SOURCE="/opt/kolla/neutron-agents/ml2_conf.ini" -TARGET="/etc/neutron/plugins/ml2/ml2_conf.ini" -OWNER="neutron" - -if [[ -f "$SOURCE" ]]; then - cp $SOURCE $TARGET - chown ${OWNER}: $TARGET - chmod 0644 $TARGET -fi diff --git a/docker/neutron/neutron-agents/neutron-l3-agent/start.sh b/docker/neutron/neutron-agents/neutron-l3-agent/start.sh index 2a0f18b62c..aa73b090b6 100755 --- a/docker/neutron/neutron-agents/neutron-l3-agent/start.sh +++ b/docker/neutron/neutron-agents/neutron-l3-agent/start.sh @@ -1,37 +1,11 @@ #!/bin/bash set -o errexit +# Loading common functions. +source /opt/kolla/config-sudoers.sh + +# Will be removed when this container is broken out into thin containers CMD="/usr/bin/neutron-l3-agent" ARGS="--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini --config-file /etc/neutron/fwaas_driver.ini --config-file /etc/neutron/plugins/ml2/ml2_conf.ini" -# Loading common functions. -source /opt/kolla/kolla-common.sh -source /opt/kolla/config-sudoers.sh - -# Override set_configs() here because it doesn't work for fat containers like -# this one. -set_configs() { - case $KOLLA_CONFIG_STRATEGY in - COPY_ALWAYS) - source /opt/kolla/neutron-l3-agent/config-external.sh - ;; - COPY_ONCE) - if [[ -f /configured-l3 ]]; then - echo 'INFO - Neutron-l3 has already been configured; Refusing to copy new configs' - return - fi - source /opt/kolla/neutron-l3-agent/config-external.sh - touch /configured-l3 - ;; - - *) - echo '$KOLLA_CONFIG_STRATEGY is not set properly' - exit 1 - ;; - esac -} - -# Execute config strategy -set_configs - exec $CMD $ARGS diff --git a/docker/neutron/neutron-agents/neutron-metadata-agent/config-external.sh b/docker/neutron/neutron-agents/neutron-metadata-agent/config-external.sh deleted file mode 100755 index 319ee3793c..0000000000 --- a/docker/neutron/neutron-agents/neutron-metadata-agent/config-external.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -SOURCES="/opt/kolla/neutron-agents/neutron.conf /opt/kolla/neutron-agents/metadata_agent.ini" -TARGET="/etc/neutron/" -OWNER="neutron" - -for f in $SOURCES; do - if [[ -f "$f" ]]; then - fname=$(basename $f) - cp $f $TARGET - chown ${OWNER}: $TARGET/$fname - chmod 0644 $TARGET/$fname - fi -done diff --git a/docker/neutron/neutron-agents/neutron-metadata-agent/start.sh b/docker/neutron/neutron-agents/neutron-metadata-agent/start.sh index 04c37159af..d94f767e24 100755 --- a/docker/neutron/neutron-agents/neutron-metadata-agent/start.sh +++ b/docker/neutron/neutron-agents/neutron-metadata-agent/start.sh @@ -1,37 +1,11 @@ #!/bin/bash set -o errexit +# Loading common functions. +source /opt/kolla/config-sudoers.sh + +# Will be removed when this container is broken out in thin containers CMD="/usr/bin/neutron-metadata-agent" ARGS="--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini" -# Loading common functions. -source /opt/kolla/kolla-common.sh -source /opt/kolla/config-sudoers.sh - -# Override set_configs() here because it doesn't work for fat containers like -# this one. -set_configs() { - case $KOLLA_CONFIG_STRATEGY in - COPY_ALWAYS) - source /opt/kolla/neutron-metadata-agent/config-external.sh - ;; - COPY_ONCE) - if [[ -f /configured-md ]]; then - echo 'INFO - Neutron-metadata has already been configured; Refusing to copy new configs' - return - fi - source /opt/kolla/neutron-metadata-agent/config-external.sh - touch /configured-md - ;; - - *) - echo '$KOLLA_CONFIG_STRATEGY is not set properly' - exit 1 - ;; - esac -} - -# Execute config strategy -set_configs - exec $CMD $ARGS diff --git a/docker/neutron/neutron-agents/start.sh b/docker/neutron/neutron-agents/start.sh new file mode 100755 index 0000000000..8b5f302cfb --- /dev/null +++ b/docker/neutron/neutron-agents/start.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -o errexit + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +exec /usr/bin/supervisord