gkzz / st2-docker-gkz

customized st2-docker
Apache License 2.0
1 stars 0 forks source link

sed and ENVIRONMENT VAR don't work, when st2-docker image is built[images/stackstorm/bin/entrypoint.sh] #1

Open gkzz opened 4 years ago

gkzz commented 4 years ago

Describe the problem By images/stackstorm/bin/entrypoint.sh , strings in container's files are not replaced with sed.

Versions

To Reproduce $ git clone https://github.com/gkzz/st2-docker-gkz.git $ git branch -r | grep dev-conf-env

  origin/dev-conf-env

$ git checkout dev-conf-env

Switched to branch 'dev-conf-env'

Edit ~/.bashrc after adding Hubot to slack $ vi ~/.bashrc

export HUBOT_SLACK_TOKEN='xoxb-your-token'
export YOURBOTNAME='your-hubo-name'

$ source ~/.bashrc $ docker-compose -f docker-compose-dev.yml up -d

Creating network "st2-docker-gkz_private" with driver "bridge"
Creating network "st2-docker-gkz_public" with driver "bridge"
Creating volume "st2-docker-gkz_mongo-volume" with default driver
Creating volume "st2-docker-gkz_mongo-configdb-volume" with default driver
Creating volume "st2-docker-gkz_postgres-volume" with default driver
Creating volume "st2-docker-gkz_rabbitmq-volume" with default driver
Creating volume "st2-docker-gkz_redis-volume" with default driver
Creating volume "st2-docker-gkz_stackstorm-packs-volume" with default driver
Creating volume "st2-docker-gkz_stackstorm-virtualenvs-volume" with default driver
Creating volume "st2-docker-gkz_stackstorm-configs-volume" with default driver
Creating volume "st2-docker-gkz_stackstorm-log-volume" with default driver
Creating st2-docker-gkz_postgres_1 ... done
Creating st2-docker-gkz_redis_1    ... done
Creating st2-docker-gkz_mongo_1    ... done
Creating st2-docker-gkz_rabbitmq_1 ... done
Creating st2-docker-gkz_stackstorm_1 ... done

$ docker-compose exec stackstorm bash root@40c0e80dce83:/# cat /etc/os-release

NAME="Ubuntu"
VERSION="14.04.6 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.6 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

sed and ENVIRONMENT VAR don't work root@40c0e80dce83/# cat /opt/stackstorm/chatops/st2chatops.env | grep ST2_API_KEY

export ST2_API_KEY="${ST2_API_KEY}"
# (Uncomment ST2_AUTH_URL, ST2_AUTH_USERNAME, ST2_AUTH_PASSWORD and comment out ST2_API_KEY)

root@40c0e80dce83:/# cat /opt/stackstorm/chatops/st2chatops.env | grep HUBOT_ADAPTER=slack

# export HUBOT_ADAPTER=slack

root@40c0e80dce83:/# cat /opt/stackstorm/chatops/st2chatops.env | grep HUBOT_SLACK_TOKEN

# export HUBOT_SLACK_TOKEN=xoxb-CHANGE-ME-PLEASE

Four possible causes:

It was successful to make configuration in container as bellow, therefore some of sed commands or of environment variables are wrong. In my opinion, I cannot set commands or envrionment variables in images/stackstorm/bin/entorypoint.sh

$ sed -n -e 75p -e 76p -e 77p -e 78p -e 79p -e 80p -e 81p images/stackstorm/bin/entrypoint.sh

export ST2_API_KEY=$(st2 apikey create -k -m '{"name": "'$YOURBOTNAME'"}')
sed -i -e 's/export ST2_API_KEY="${ST2_API_KEY}"/export ST2_API_KEY='"$ST2_API_KEY"'/' \
    -i -e 's/# export HUBOT_ADAPTER=slack/export HUBOT_ADAPTER=slack/' \
    -i -e 's/# export HUBOT_SLACK_TOKEN=xoxb-CHANGE-ME-PLEASE/export HUBOT_SLACK_TOKEN='"$HUBOT_SLACK_TOKEN"'/' \
    /opt/stackstorm/chatops/st2chatops.env

st2ctl reload --register-all && service st2chatops restart

Set configuration values one by one in your container root@40c0e80dce83:/# export ST2_API_KEY=$(st2 apikey create -k -m '{"name": "'$YOURBOTNAME'"}'); \ >sed -i -e 's/export ST2_API_KEY=\"${ST2_API_KEY}\"/export ST2_API_KEY='"$ST2_API_KEY"'/' \ > -i -e 's/# export HUBOT_ADAPTER=slack/export HUBOT_ADAPTER=slack/' \ > -i -e 's/# export HUBOT_SLACK_TOKEN=xoxb-CHANGE-ME-PLEASE/export HUBOT_SLACK_TOKEN='"$HUBOT_SLACK_TOKEN"'/' \ > /opt/stackstorm/chatops/st2chatops.env root@40c0e80dce83:/# cat /opt/stackstorm/chatops/st2chatops.env | grep ST2_API_KEY

export ST2_API_KEY=YOUR_KEY_XXXXXXXXXXXXXXXXXXXXXXXXXXX

root@40c0e80dce83:/# cat /opt/stackstorm/chatops/st2chatops.env | grep HUBOT_ADAPTER=slack

export HUBOT_ADAPTER=slack

root@40c0e80dce83:/# cat /opt/stackstorm/chatops/st2chatops.env | grep HUBOT_SLACK_TOKEN

export HUBOT_SLACK_TOKEN=xoxb-your-token

Make st2chatops restarted! root@40c0e80dce83:/# st2ctl reload --register-all && service st2chatops restart | grep st2chatops

Registering content...[flags = --config-file /etc/st2/st2.conf --register-all]
/opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: 
##### st2 components status #####
st2actionrunner PID: 161
....
st2chatops stop/waiting
st2chatops start/running, process 1186

Q. How do you try again? A. Just execute docker-compose down -v After that, execute docker-compose -f docker-compose-dev.yml up -d $ docker-compose down -v

Stopping st2-docker-gkz_stackstorm_1 ... done
Stopping st2-docker-gkz_redis_1      ... done
Stopping st2-docker-gkz_rabbitmq_1   ... done
Stopping st2-docker-gkz_postgres_1   ... done
Stopping st2-docker-gkz_mongo_1      ... done
Removing st2-docker-gkz_stackstorm_1 ... done
Removing st2-docker-gkz_redis_1      ... done
Removing st2-docker-gkz_rabbitmq_1   ... done
Removing st2-docker-gkz_postgres_1   ... done
Removing st2-docker-gkz_mongo_1      ... done
Removing network st2-docker-gkz_private
Removing network st2-docker-gkz_public
Removing volume st2-docker-gkz_mongo-volume
Removing volume st2-docker-gkz_mongo-configdb-volume
Removing volume st2-docker-gkz_postgres-volume
Removing volume st2-docker-gkz_rabbitmq-volume
Removing volume st2-docker-gkz_redis-volume
Removing volume st2-docker-gkz_stackstorm-packs-volume
Removing volume st2-docker-gkz_stackstorm-virtualenvs-volume
Removing volume st2-docker-gkz_stackstorm-configs-volume
Removing volume st2-docker-gkz_stackstorm-log-volume
gkzz commented 4 years ago

It may be a good idea to override built image of stackstorm depended on mongo db with "Extension fields" as I refered to this page, Compose file version 3 reference, however, the following error occured to me:

$ docker-compose -f docker-compose-dev.yml up -d

Creating st2-docker-gkz_redis_1    ... done
Creating st2-docker-gkz_postgres_1 ... done
Creating st2-docker-gkz_mongo_1    ... done
Creating st2-docker-gkz_rabbitmq_1 ... done
Creating st2hubot                  ... 
Creating st2-docker-gkz_stackstorm_1 ... error

ERROR: for st2-docker-gkz_stackstorm_1  Cannot start service stackstorm: driver failed programming external connectivity on endpoint st2-docker-Creating st2hubot                    ... done1f69a6b98f): Bind for 0.0.0.0:443 failed: port is already allocated

ERROR: for stackstorm  Cannot start service stackstorm: driver failed programming external connectivity on endpoint st2-docker-gkz_stackstorm_1 (b8390f26aaf8b68266cbc496a2d14a0c88617928c328f426273e6b1f69a6b98f): Bind for 0.0.0.0:443 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

What does it mean, "Bind for 0.0.0.0:443 failed: port is already allocated"? It is natural, because my image was extendded.

ERROR: for stackstorm Cannot start service stackstorm: driver failed programming external connectivity on endpoint st2-docker-gkz_stackstorm_1 (略): Bind for 0.0.0.0:443 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

My directory architecture is as bellow:

$ tree . -n 2 -d images/

.
├── bin
├── conf
├── docs
│   └── demo
├── images
│   └── stackstorm
│       ├── bin
│       │   └── sed-st2chatops-env.sh
│       └── config
├── runtime
│   ├── compose-1ppc
│   ├── entrypoint.d
│   └── st2.d
└── tutorial
    ├── actions
    │   └── workflows
    ├── policies
    └── rules
2 [error opening dir]
images/
└── stackstorm
    ├── bin
    │   └── sed-st2chatops-env.sh
    └── config

22 directories

cf.add params, "Extension fields"