This site is in read only mode. Please continue to browse, but replying, likes, and other actions are disabled for now.

⚠️ We've moved!

Hi there!

To reduce project dependency on 3rd party paid services the StackStorm TSC has decided to move the Q/A from this forum to Github Discussions. This will make user experience better integrated with the native Github flow, as well as the questions closer to the community where they can provide answers.

Use 🔗 Github Discussions to ask your questions.

Custom Stackstorm Image

Hi all, We are planning on making a custom image of Stackstorm(for deploying with docker) inclusive of certain packs such as Kafka and Ansible, etc, then we wish to bake the image- We want to modify the image specified in this link: GitHub - StackStorm/st2-docker: Official docker container for StackStorm.. Is there any example code - where I can include a pack on entrypoint.sh or are there examples of modified docker files to enable an addition of a pack, request your help on this, thanks! Apart from the Github stackstorm docker pages, I have gone through the following links:
st2-docker/runtime/entrypoint.d at master · StackStorm/st2-docker · GitHub

From Slack:

probably not an example of exactly what you want to do with that, but there’s a lot of ways to peel that onion from a Docker perspective. One way is to bake it in, which would require you to place the pack files into the container that you wish to have access to.

I suggest you follow st2-dockerfiles and stackstorm-ha for inspiration.

Since a lot of that work has been done for you

Thanks Lindsay for taking interest in my post, I have found a Github page-written by Shu Sugimoto, link: st2-docker-pack-prebuild-example/Dockerfile at master · shusugmt/st2-docker-pack-prebuild-example · GitHub
This is very similar to what I was looking for- I could build the image of the Dockerfile in the link as well, however am not able to build the dockerfile when I try to modify it- my goal is to include the Kafka Pack into the - to be created StackStorm image, Request help with this, here is the Dockerfile that I tried to build :

FROM stackstorm/stackstorm:latest AS base

COPY setup-pack-virtualenv.py /setup-pack-virtualenv.py


FROM base AS st2-examples

RUN cd /opt/stackstorm/packs \
 && git clone https://github.com/shusugmt/st2-pack-examples examples \
 && /setup-pack-virtualenv.py --pack examples


FROM base AS st2-napalm

RUN cd /opt/stackstorm/packs \
 && git clone https://github.com/stackstorm-exchange/stackstorm-napalm napalm \
 && /setup-pack-virtualenv.py --pack napalm

FROM base

RUN /setup-pack-virtualenv.py --pack core \
 && /setup-pack-virtualenv.py --pack packs \
 && /setup-pack-virtualenv.py --pack linux \
 && /setup-pack-virtualenv.py --pack chatops \
 && /setup-pack-virtualenv.py --pack kafka
 

COPY --from=st2-examples /opt/stackstorm/packs/examples /opt/stackstorm/packs/examples
COPY --from=st2-examples /opt/stackstorm/virtualenvs/examples /opt/stackstorm/virtualenvs/examples

COPY --from=st2-napalm /opt/stackstorm/packs/napalm /opt/stackstorm/packs/napalm
COPY --from=st2-napalm /opt/stackstorm/virtualenvs/napalm /opt/stackstorm/virtualenvs/napalm

The output that I got was :

Sending build context to Docker daemon  66.05kB
    Step 1/12 : FROM stackstorm/stackstorm:latest AS base
     ---> 28432a1994dc
    Step 2/12 : COPY setup-pack-virtualenv.py /setup-pack-virtualenv.py
     ---> Using cache
     ---> dba4337a6d11
    Step 3/12 : FROM base AS st2-examples
     ---> dba4337a6d11
    Step 4/12 : RUN cd /opt/stackstorm/packs  && git clone https://github.com/shusugmt/st2-pack-examples examples  && /setup-pack-virtualenv.py --pack examples
     ---> Using cache
     ---> cabb31dd60ee
    Step 5/12 : FROM base AS st2-napalm
     ---> dba4337a6d11
    Step 6/12 : RUN cd /opt/stackstorm/packs  && git clone https://github.com/stackstorm-exchange/stackstorm-napalm napalm  && /setup-pack-virtualenv.py --pack napalm
     ---> Using cache
     ---> 393ae69e7913
    Step 7/12 : FROM base
     ---> dba4337a6d11
    Step 8/12 : RUN /setup-pack-virtualenv.py --pack core  && /setup-pack-virtualenv.py --pack packs  && /setup-pack-virtualenv.py --pack linux  && /setup-pack-virtualenv.py --pack chatops  && /setup-pack-virtualenv.py --pack kafka
     ---> Running in f6aa9ccb09fd
    /opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
      utils.DeprecatedIn23,
    2019-03-19 16:00:19,860 INFO [-] Virtualenv path "/opt/stackstorm/virtualenvs/core" doesn't exist
    /opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
      utils.DeprecatedIn23,
    2019-03-19 16:00:23,284 INFO [-] Virtualenv path "/opt/stackstorm/virtualenvs/packs" doesn't exist
    /opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
      utils.DeprecatedIn23,
    2019-03-19 16:00:26,165 INFO [-] Virtualenv path "/opt/stackstorm/virtualenvs/linux" doesn't exist
    /opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
      utils.DeprecatedIn23,
    2019-03-19 16:00:39,616 INFO [-] Virtualenv path "/opt/stackstorm/virtualenvs/chatops" doesn't exist
    /opt/stackstorm/st2/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
      utils.DeprecatedIn23,
    Traceback (most recent call last):
      File "/setup-pack-virtualenv.py", line 41, in <module>
        sys.exit(main())
      File "/setup-pack-virtualenv.py", line 37, in main
        setup_pack_virtualenv(cfg.CONF.pack, logger=LOG)
      File "/opt/stackstorm/st2/local/lib/python2.7/site-packages/st2common/util/virtualenvs.py", line 85, in setup_pack_virtualenv
        raise Exception(msg)
    Exception: Pack "kafka" is not installed. Looked in: /opt/stackstorm/packs
    The command '/bin/sh -c /setup-pack-virtualenv.py --pack core  && /setup-pack-virtualenv.py --pack packs  && /setup-pack-virtualenv.py --pack linux  && /setup-pack-virtualenv.py --pack chatops  && /setup-pack-virtualenv.py --pack kafka' returned a non-zero code: 1

@vivekrmk See the following descriptions to build a Docker image with custom packs: GitHub - StackStorm/stackstorm-ha: K8s Helm Chart (βeta!) that codifies StackStorm High Availability fleet as a simple to use reproducible infrastructure-as-code app. and StackStorm HA Cluster in Kubernetes - BETA — StackStorm 2.10.4 documentation

And Helper Docker images to bootstrap custom packs https://hub.docker.com/r/stackstorm/st2packs/

This is however all supported only by our K8s deployment (StackStorm HA Cluster in Kubernetes - BETA — StackStorm 2.10.4 documentation)