ChaosToolkit --var-file option is fails with error Error: no such option: --var-file /tmp/token.env

37 Views Asked by At

We are trying to run a chaos experiment and running into this error:

ubuntu@ip-x-x-x-x:~$ kubectl logs -f  pod/chaos-testing-hn8c5 -n <ns>
[2022-12-08 16:05:22 DEBUG] [cli:70] ###############################################################################
[2022-12-08 16:05:22 DEBUG] [cli:71] Running command 'run'
[2022-12-08 16:05:22 DEBUG] [cli:75] Using settings file '/root/.chaostoolkit/settings.yaml'
Usage: chaos run [OPTIONS] SOURCE
Try 'chaos run --help' for help.

Error: no such option: --var-file /tmp/token.env

Here is the spec file:

spec:
      serviceAccountName: {{ .Values.serviceAccount.name }}
      restartPolicy: Never
      initContainers:
        - name: {{ .Values.initContainer.name }}
          image: "{{ .Values.initContainer.image.name }}:{{ .Values.initContainer.image.tag }}"
          imagePullPolicy: {{ .Values.initContainer.image.pullPolicy }}
          command: ["sh", "-c", "curl -X POST https://<url> -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_id=<client_id&client_secret=<client_secret>'| jq -r --arg prefix 'ACCESS_TOKEN=' '$prefix + (.access_token)' > /tmp/token.env;"]
          volumeMounts: 
            - name: token-path
              mountPath: /tmp
            - name: config
              mountPath: /experiment
              readOnly: true
      containers:
      - name: {{ .Values.image.name }}
        securityContext:
          privileged: true
          capabilities:
            add: ["SYS_ADMIN"]
          allowPrivilegeEscalation: true
        image: {{ .Values.image.repository }}
        args:
        - --verbose
        - run
        - --var-file /tmp/token.env
        - /experiment/terminate-all-pods.yaml
        env:
        - name: CHAOSTOOLKIT_IN_POD
          value: "true"
        volumeMounts:
        - name: token-path
          mountPath: /tmp
        - name: config
          mountPath: /experiment
          readOnly: true
        resources:
          limits:
            cpu: 20m
            memory: 64Mi
          requests:
            cpu: 20m
            memory: 64Mi
      volumes:
      - name: token-path
        emptyDir: {}
      - name: config
        configMap:
          name: {{ .Values.experiments.name }}

We have also tried using the --var "KEY=VALUE" which also failed with the same error. Any help with this is appreciated. We have hit the wall at this point in time

Docker image being used is: https://hub.docker.com/r/chaostoolkit/chaostoolkit/tags

1

There are 1 best solutions below

0
Praveen Tata On

The kubernetes manifest is slight incorrect. The environment variable injection worked when passing it like this:

args:
        - --verbose
        - run
        - --var-file
        - /tmp/token.env
        - /experiment/terminate-all-pods.yaml

The option flag and its value needed to be on two separate lines