Identify container through PS1 shell variable

As suggested it was created the variable KOLLA_SERVICE_NAME to identify
the container service name through  PS1 shell variable.
This method it was previously discussed in IRC.
https://goo.gl/k7AdEg

The other option it was usage hostname param in kolla_docker, but
currently docker does not support it due this issue:
https://github.com/docker/compose/issues/2460

The final result is like this:

$ docker exec -it heka /bin/bash
(heka)[heka@kolla-control /]$

$ docker exec -it mariadb /bin/bash
(mariadb)[mysql@kolla-control /]$

More details can be accessed through this link
http://paste.openstack.org/show/493689/

Closes-Bug: #1557454
Change-Id: I6aab8d640a8ebb17baa9d6d4f1edd6e331674713
This commit is contained in:
Carlos Cesario 2016-03-26 16:41:46 -03:00
parent f0c18db2c1
commit 08b08c78b5
3 changed files with 30 additions and 1 deletions

View File

@ -477,8 +477,15 @@ class DockerWorker(object):
return self.dc.create_host_config(**options)
def _inject_env_var(self, environment_info):
newenv = {
'KOLLA_SERVICE_NAME': self.params.get('name').replace('_', '-')
}
environment_info.update(newenv)
return environment_info
def _format_env_vars(self):
env = self.params.get('environment')
env = self._inject_env_var(self.params.get('environment'))
return {k: "" if env[k] is None else env[k] for k in env}
def build_container_options(self):

View File

@ -10,6 +10,14 @@ ENV KOLLA_BASE_DISTRO {{ base_distro }}
ENV KOLLA_INSTALL_TYPE {{ install_type }}
ENV KOLLA_INSTALL_METATYPE {{ install_metatype }}
#### Customize PS1 to be used with bash shell
COPY kolla_bashrc /tmp/
RUN cat /tmp/kolla_bashrc >> /etc/skel/.bashrc
RUN cat /tmp/kolla_bashrc >> /root/.bashrc
# PS1 var when used /bin/sh shell
ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(hostname -s) $(pwd)]$ "
# For RPM Variants, enable the correct repositories - this should all be done
# in the base image so repos are consistent throughout the system. This also
# enables to provide repo overrides at a later date in a simple fashion if we
@ -17,6 +25,9 @@ ENV KOLLA_INSTALL_METATYPE {{ install_metatype }}
{% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
# Customize PS1 bash shell
RUN cat /tmp/kolla_bashrc >> /etc/bashrc
#### BEGIN REPO ENABLEMENT
# Turns on Elasticsearch repos
COPY elasticsearch.yum.repo /etc/yum.repos.d/elasticsearch.repo
@ -152,6 +163,9 @@ RUN yum -y install \
{# endif for base_distro centos,fedora,oraclelinux,rhel #}
{% elif base_distro in ['ubuntu', 'debian'] %}
# Customize PS1 bash shell
RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc
# This will prevent questions from being asked during the install
ENV DEBIAN_FRONTEND noninteractive
@ -189,4 +203,6 @@ RUN touch /usr/local/bin/kolla_extend_start \
&& chmod 440 /etc/sudoers \
&& groupadd kolla
RUN rm -f /tmp/kolla_bashrc
CMD ["kolla_start"]

6
docker/base/kolla_bashrc Normal file
View File

@ -0,0 +1,6 @@
#### Custom data added by Kolla
_KBOLD="\[$(tput bold)\]"
_KRESET="\[$(tput sgr0)\]"
PS1="${_KBOLD}(${KOLLA_SERVICE_NAME})${_KRESET}[\u@\h \W]\\$ "