aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-01-21 00:50:01 +0000
committerGerrit Code Review <review@openstack.org>2016-01-21 00:50:01 +0000
commitb11421166cfb6ec9815b8badc1e9150cacebf02a (patch)
treedf18f0b599aaaf9e19e3a0202dcd55cec3b528df
parentd3756de84cc4556d964f3eae4028d7c9e68b9e12 (diff)
parentef971bff5135b88e3451eb451418327e672f6d8b (diff)
downloadkolla-b11421166cfb6ec9815b8badc1e9150cacebf02a.tar.gz
kolla-b11421166cfb6ec9815b8badc1e9150cacebf02a.zip
Merge "Fix permissions to /var/lib/nova/"
-rw-r--r--ansible/roles/nova/tasks/bootstrap.yml29
-rw-r--r--ansible/roles/nova/tasks/deploy.yml3
-rw-r--r--ansible/roles/nova/tasks/start.yml5
-rw-r--r--docker/nova/nova-base/Dockerfile.j24
-rw-r--r--docker/nova/nova-base/nova_sudoers1
-rw-r--r--docker/nova/nova-compute/Dockerfile.j26
-rw-r--r--docker/nova/nova-compute/extend_start.sh9
-rw-r--r--docker/nova/nova-compute/nova_compute_sudoers1
8 files changed, 54 insertions, 4 deletions
diff --git a/ansible/roles/nova/tasks/bootstrap.yml b/ansible/roles/nova/tasks/bootstrap.yml
index 16e2500c5..fcdd2a707 100644
--- a/ansible/roles/nova/tasks/bootstrap.yml
+++ b/ansible/roles/nova/tasks/bootstrap.yml
@@ -50,3 +50,32 @@
run_once: True
delegate_to: "{{ groups['nova-api'][0] }}"
when: database_created
+
+- name: Creating nova-compute volume
+ kolla_docker:
+ action: "create_volume"
+ common_options: "{{ docker_common_options }}"
+ name: "nova_compute"
+ register: nova_compute_volume
+ when:
+ - inventory_hostname in groups['compute']
+ - not enable_nova_fake | bool
+
+- name: Starting Nova compute bootstrap container
+ kolla_docker:
+ action: "start_container"
+ common_options: "{{ docker_common_options }}"
+ detach: False
+ environment:
+ KOLLA_BOOTSTRAP:
+ KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
+ image: "{{ nova_compute_image_full }}"
+ name: "bootstrap_nova_compute"
+ restart_policy: "never"
+ volumes:
+ - "{{ node_config_directory }}/nova-compute/:{{ container_config_directory }}/:ro"
+ - "nova_compute:/var/lib/nova/"
+ when:
+ - inventory_hostname in groups['compute']
+ - not enable_nova_fake | bool
+ - nova_compute_volume.changed
diff --git a/ansible/roles/nova/tasks/deploy.yml b/ansible/roles/nova/tasks/deploy.yml
index f72e6e219..13a5dba8f 100644
--- a/ansible/roles/nova/tasks/deploy.yml
+++ b/ansible/roles/nova/tasks/deploy.yml
@@ -27,7 +27,8 @@
- inventory_hostname in groups['compute']
- include: bootstrap.yml
- when: inventory_hostname in groups['nova-api']
+ when: inventory_hostname in groups['nova-api'] or
+ inventory_hostname in groups['compute']
- include: start.yml
when: inventory_hostname in groups['compute'] or
diff --git a/ansible/roles/nova/tasks/start.yml b/ansible/roles/nova/tasks/start.yml
index e97455c8e..4df7f4d84 100644
--- a/ansible/roles/nova/tasks/start.yml
+++ b/ansible/roles/nova/tasks/start.yml
@@ -10,9 +10,8 @@
volumes:
- "{{ node_config_directory }}/nova-libvirt/:{{ container_config_directory }}/:ro"
- "/lib/modules:/lib/modules:ro"
- - "/run:/run"
- "/sys/fs/cgroup:/sys/fs/cgroup"
- - "nova_compute:/var/lib/nova/instances"
+ - "nova_compute:/var/lib/nova/"
- "nova_libvirt:/var/lib/libvirt"
when: inventory_hostname in groups['compute']
@@ -100,7 +99,7 @@
- "/lib/modules:/lib/modules:ro"
- "/run:/run"
- "/var/lib/kolla/dev/log:/dev/log"
- - "nova_compute:/var/lib/nova/instances"
+ - "nova_compute:/var/lib/nova/"
- "nova_libvirt:/var/lib/libvirt"
when:
- inventory_hostname in groups['compute']
diff --git a/docker/nova/nova-base/Dockerfile.j2 b/docker/nova/nova-base/Dockerfile.j2
index 898dd3736..0f9aedd94 100644
--- a/docker/nova/nova-base/Dockerfile.j2
+++ b/docker/nova/nova-base/Dockerfile.j2
@@ -52,6 +52,10 @@ RUN ln -s nova-base-source/* nova \
&& cp -r /nova/etc/nova/* /etc/nova/ \
&& chown -R nova: /etc/nova /var/log/nova /home/nova /var/lib/nova
+COPY nova_sudoers /etc/sudoers.d/nova_sudoers
+RUN chmod 750 /etc/sudoers.d \
+ && chmod 440 /etc/sudoers.d/nova_sudoers
+
{% endif %}
RUN usermod -a -G kolla nova
diff --git a/docker/nova/nova-base/nova_sudoers b/docker/nova/nova-base/nova_sudoers
new file mode 100644
index 000000000..6d73da6d3
--- /dev/null
+++ b/docker/nova/nova-base/nova_sudoers
@@ -0,0 +1 @@
+nova ALL = (root) NOPASSWD: /var/lib/kolla/venv/bin/nova-rootwrap /etc/nova/rootwrap.conf *
diff --git a/docker/nova/nova-compute/Dockerfile.j2 b/docker/nova/nova-compute/Dockerfile.j2
index 029a435c7..aad9c8ba8 100644
--- a/docker/nova/nova-compute/Dockerfile.j2
+++ b/docker/nova/nova-compute/Dockerfile.j2
@@ -50,6 +50,12 @@ RUN /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements
{% endif %}
+COPY nova_compute_sudoers /etc/sudoers.d/nova_compute_sudoers
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+RUN chmod 755 /usr/local/bin/kolla_extend_start \
+ && chmod 750 /etc/sudoers.d \
+ && chmod 440 /etc/sudoers.d/nova_compute_sudoers
+
{{ include_footer }}
USER nova
diff --git a/docker/nova/nova-compute/extend_start.sh b/docker/nova/nova-compute/extend_start.sh
new file mode 100644
index 000000000..084e76a19
--- /dev/null
+++ b/docker/nova/nova-compute/extend_start.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
+# of the KOLLA_BOOTSTRAP variable being set, including empty.
+if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
+ sudo chown nova: /var/lib/nova/
+ mkdir /var/lib/nova/instances
+ exit 0
+fi
diff --git a/docker/nova/nova-compute/nova_compute_sudoers b/docker/nova/nova-compute/nova_compute_sudoers
new file mode 100644
index 000000000..a7fb7b864
--- /dev/null
+++ b/docker/nova/nova-compute/nova_compute_sudoers
@@ -0,0 +1 @@
+%kolla ALL=(root) NOPASSWD: /usr/bin/chown nova\: /var/lib/nova/, /bin/chown nova\: /var/lib/nova/