Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jinja variable 'config' is undefined #224

Closed
bluemalkin opened this issue Jul 22, 2019 · 11 comments · Fixed by #226
Closed

Jinja variable 'config' is undefined #224

bluemalkin opened this issue Jul 22, 2019 · 11 comments · Fixed by #226

Comments

@bluemalkin
Copy link

Hi,

I ran a state apply on this formula, docker dependencies got updated:

          ID: docker-package-dependencies
    Function: pkg.installed
      Result: True
     Comment: The following packages were installed/updated: python3-pip
              The following packages were already installed: apt-transport-https, python3-apt

However it errors out with:

----------
          ID: docker-config
    Function: file.managed
        Name: /etc/default/docker
      Result: False
     Comment: Unable to manage file: Jinja variable 'config' is undefined
     Started: 05:20:04.208177
    Duration: 149.465 ms
     Changes:
----------
          ID: docker-service
    Function: service.running
        Name: docker
      Result: False
     Comment: One or more requisite failed: docker.install.docker-config
     Started: 05:20:04.359830
    Duration: 0.022 ms
     Changes:

Looking at the source code I cannot see anywhere where config is defined.

@myii
Copy link
Member

myii commented Jul 22, 2019

@bluemalkin Just a quick response for the time being. This is almost definitely related to the changes introduced in #216. You'll also get a summary of the uses of config from this search:

It has been around in defaults.yaml for a while, it's just the usage probably requires a default value after #216. Or you could try setting a default value of [] in your pillar.

@noelmcloughlin
Copy link
Member

I replicated on Ubuntu.

          ID: docker-config
    Function: file.managed
        Name: /etc/default/docker
      Result: False
     Comment: Unable to manage file: Jinja variable 'config' is undefined

@myii
Copy link
Member

myii commented Jul 22, 2019

@noelmcloughlin Thanks for confirming the regression. Does the fix I suggested in #216 (comment) work for you?

@noelmcloughlin
Copy link
Member

Thanks for confirming the regression. Does the fix I suggested in #216 (comment) work for you?

Both of the following work-

(1)

 58     - config:
 59       - config: {{ docker.config | d([]) }}

(2)

 58     - config:
 59       - config: {{ docker.config | json }}

This file is ignored by systemd btw #74

@myii
Copy link
Member

myii commented Jul 22, 2019

@noelmcloughlin Shall we go with | json then? Would you like to do it or shall I? This fix is needed pretty quickly, to prevent other failures out there.

@noelmcloughlin
Copy link
Member

Wait there is something wrong. If you notice my comment above accidently used config parameter instead of context parameter. Restesting both context: parameter does not work.

Comment: Context must be formed as a dict

I tried a few variations of `{{ docker.config | json}}' and '{{docker.config | d([]) }}' without success.

@noelmcloughlin
Copy link
Member

noelmcloughlin commented Jul 22, 2019

58 - config:

The example above should have read ...

58 - context:

noelmcloughlin added a commit to noelmcloughlin/docker-formula that referenced this issue Jul 22, 2019
@noelmcloughlin
Copy link
Member

Got it. Raised PR #226 @myii @bluemalkin

@myii
Copy link
Member

myii commented Jul 22, 2019

@noelmcloughlin If you look at the example I gave earlier, it doesn't start with the leading hyphen -- that leads to it being evaluated as a list.

@noelmcloughlin
Copy link
Member

Yes, I raised the fixed PR.

@myii myii closed this as completed in #226 Jul 22, 2019
myii added a commit that referenced this issue Jul 22, 2019
@bluemalkin
Copy link
Author

Can confirm the fix works. Many thanks for the quick turnaround !

acalv added a commit to acalv/docker-formula that referenced this issue Apr 3, 2020
* passing the hold and allow_updated to docker pkg.installed

* accessing correct level of config

* Fix rendering error on MacOS ('oscodename')

* Docker is brew name

* No upstart/sysv on Darwin

* chore(python): use python3 apt packages

* fix(syntax): param 'refresh' replaces 'refresh_db'

* Using the tplroot method (borrowed from the ufw-formula) prevents having to set --extra-filerefs when using the formula with salt-ssh.

* Updating apt (ubuntu/debian) resulted in the following error:

Skipping acquire of configured file 'stable/binary-i386/Packages' as repository 'https://download.docker.com/linux/ubuntu bionic InRelease' doesn't support architecture 'i386'

Adding [arch=<osarch>] between deb and https solved this problem.

* Updating apt (ubuntu/debian) resulted in the following error:

Skipping acquire of configured file 'stable/binary-i386/Packages' as repository 'https://download.docker.com/linux/ubuntu bionic InRelease' doesn't support architecture 'i386'

Adding [arch=<osarch>] between deb and https solved this problem.

* Revert "Make it easier when using salt-ssh"

* Use tpldir to make imports work from e.g. salt-ssh without having to resort to --extra-filerefs=salt://docker/map.jinja,... on the cmd line.

Also added the os architecture to the apt sources.list line: deb [arch=<osarch>] http://...

* fix(sls): avoid unnecessary rendering error

* doc(clean): make remove alias for clean

* fix(merge): workaround broken map.jinja merge

* chore(template): align osmap with  template-formula

* feat(macos): docker desktop for mac support

* doc(clean): make remove alias for clean

* chore(template): align osmap with  template-formula

* feat(macos): docker desktop for mac support

* pillar.example registry-mirrors

* fix(install): resolve saltstack-formulas#224

* refactor(init): remove duplicated jinja

* Update docker/install.sls

Co-Authored-By: Imran Iqbal <myii@users.noreply.github.com>

* feat(linux): archlinux support (saltstack-formulas#229)

* feat(semantic-release): implement for this formula

* Semi-automated using myii/ssf-formula#78
* Fix (or ignore) `yamllint` errors:

```bash
docker-formula$ yamllint -s .
./pillar.example
  5:1       warning  missing document start "---"  (document-start)
  10:8      warning  missing starting space in comment  (comments)
  12:11     error    empty value in block mapping  (empty-values)
  13:89     error    line too long (92 > 88 characters)  (line-length)
  14:26     warning  truthy value should be one of [false, true]  (truthy)
  28:1      error    trailing spaces  (trailing-spaces)
  32:11     error    empty value in block mapping  (empty-values)
  36:89     error    line too long (92 > 88 characters)  (line-length)
  37:26     warning  truthy value should be one of [false, true]  (truthy)
  58:4      warning  missing starting space in comment  (comments)
  59:4      warning  missing starting space in comment  (comments)
  61:4      warning  missing starting space in comment  (comments)
  62:4      warning  missing starting space in comment  (comments)
  63:21     warning  truthy value should be one of [false, true]  (truthy)
  64:1      error    trailing spaces  (trailing-spaces)
  65:89     error    line too long (93 > 88 characters)  (line-length)
  66:4      warning  missing starting space in comment  (comments)
  76:3      warning  comment not indented like content  (comments-indentation)
  77:6      warning  missing starting space in comment  (comments)
  78:6      warning  missing starting space in comment  (comments)
  79:23     warning  truthy value should be one of [false, true]  (truthy)
  87:20     warning  truthy value should be one of [false, true]  (truthy)
  88:20     warning  truthy value should be one of [false, true]  (truthy)
  92:12     warning  truthy value should be one of [false, true]  (truthy)
  111:8     warning  missing starting space in comment  (comments)
  119:4     error    syntax error: expected <block end>, but found '<block mapping start>'
  120:8     warning  missing starting space in comment  (comments)
  121:7     error    wrong indentation: expected 5 but found 6  (indentation)
  132:8     warning  missing starting space in comment  (comments)
  145:2     warning  missing starting space in comment  (comments)
  147:5     warning  comment not indented like content  (comments-indentation)
  148:6     warning  missing starting space in comment  (comments)
  149:6     warning  missing starting space in comment  (comments)
  150:6     warning  missing starting space in comment  (comments)
  154:6     warning  missing starting space in comment  (comments)
  155:6     warning  missing starting space in comment  (comments)
  157:2     warning  missing starting space in comment  (comments)
  159:6     warning  comment not indented like content  (comments-indentation)
  169:6     warning  comment not indented like content  (comments-indentation)
  174:1     error    too many blank lines (1 > 0)  (empty-lines)

./docker/defaults.yaml
  3:1       warning  missing document start "---"  (document-start)
  5:22      warning  truthy value should be one of [false, true]  (truthy)
  7:17      warning  truthy value should be one of [false, true]  (truthy)
  14:22     warning  truthy value should be one of [false, true]  (truthy)
  15:17     warning  truthy value should be one of [false, true]  (truthy)
  16:10     warning  truthy value should be one of [false, true]  (truthy)
  27:20     warning  truthy value should be one of [false, true]  (truthy)
  28:11     warning  truthy value should be one of [false, true]  (truthy)
  29:23     warning  truthy value should be one of [false, true]  (truthy)
  29:35     warning  missing starting space in comment  (comments)
  32:23     warning  truthy value should be one of [false, true]  (truthy)
  33:14     warning  truthy value should be one of [false, true]  (truthy)
  39:20     warning  truthy value should be one of [false, true]  (truthy)
  40:20     warning  truthy value should be one of [false, true]  (truthy)
  46:1      error    too many blank lines (1 > 0)  (empty-lines)

./docker/osfamilymap.yaml
  13:2      error    syntax error: found character '%' that cannot start any token
  50:89     error    line too long (164 > 88 characters)  (line-length)

./docker/codenamemap.yaml
  3:1       warning  missing document start "---"  (document-start)
  36:1      error    too many blank lines (1 > 0)  (empty-lines)

./docker/osmap.yaml
  1:1       error    too many blank lines (1 > 0)  (empty-lines)
  2:1       warning  missing document start "---"  (document-start)

(saltstack) imran@E6530:~/Salt/formulas/docker-formula$ yamllint -s .
./docker/osfamilymap.yaml
  13:2      error    syntax error: found character '%' that cannot start any token
  51:89     error    line too long (164 > 88 characters)  (line-length)
```

* fix(compose-ng.sls): fix `salt-lint` errors

```bash
Examining docker/compose-ng.sls of type state
[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:13
{{id}}:

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:17
{{id}} image:

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:22
    - name: {{image[0]}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:23
    - tag: {{image[1]}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:25
    - name: {{container.image}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:28
{{id}} container:

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:40
    - name: {{id}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:41
    - image: {{container.image}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:43
    - command: {{container.command}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:48
        - {{variable}}: {{value}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:57
      - "{{mapping[0]}}"

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:59
      - "{{mapping[-1]}}/tcp":

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:60
            HostPort: "{{mapping[-2]}}"

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:61
            HostIp: "{{mapping[-3]|d('')}}"

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:64
      - {{port_mapping}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:71
      - {{volume}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:78
      - {{volume}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:86
        {{name}}: {{alias}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:92
        Name: {{policy[0]}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:94
        MaximumRetryCount: {{policy[1]}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:99
      - docker_image: {{id}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:101
      - docker: {{id}} image

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:106
      - docker_image: {{containerid}}

[206] Jinja variables should have spaces before and after: {{ var_name }}
docker/compose-ng.sls:108
      - docker: {{containerid}}
```

* test(testinfra): remove from the formula

* test(inspec): add tests for package, config & service

* fix(pillar.example): ensure `docker.config` is available

* docs(readme): move to `docs/` directory and modify accordingly

* ci(travis): update `salt-lint` config for `v0.0.10`

* Automated using myii/ssf-formula#82

* chore(release): 0.42.0 [skip ci]

# [0.42.0](saltstack-formulas/docker-formula@v0.41.0...v0.42.0) (2019-10-23)

### Bug Fixes

* **compose-ng.sls:** fix `salt-lint` errors ([](saltstack-formulas@9e8e1e8))
* **pillar.example:** ensure `docker.config` is available ([](saltstack-formulas@dce112a))

### Continuous Integration

* **travis:** update `salt-lint` config for `v0.0.10` ([](saltstack-formulas@3eaed1b))

### Documentation

* **readme:** move to `docs/` directory and modify accordingly ([](saltstack-formulas@222fc6d))

### Features

* **semantic-release:** implement for this formula ([](saltstack-formulas@ea6be11))

### Tests

* **inspec:** add tests for package, config & service ([](saltstack-formulas@451d76d))
* **testinfra:** remove from the formula ([](saltstack-formulas@62122d2))

* ci(kitchen): use `debian-10-master-py3` instead of `develop` [skip ci]

* Automated using myii/ssf-formula#84

* ci(kitchen+travis): upgrade matrix after `2019.2.2` release [skip ci]

* Automated using myii/ssf-formula#86

* fix(release.config.js): use full commit hash in commit link [skip ci]

* Automated using myii/ssf-formula#89

* perf(travis): improve `salt-lint` invocation [skip ci]

* Automated using myii/ssf-formula#90

* ci(kitchen): use `develop` image until `master` is ready (`amazonlinux`) [skip ci]

* Automated using myii/ssf-formula#93

* ci(travis): use build config validation (beta) [skip ci]

* Automated using myii/ssf-formula#97

* ci(travis): apply changes from build config validation [skip ci]

* Automated using myii/ssf-formula#98

* ci(travis): opt-in to `dpl v2` to complete build config validation [skip ci]

* Automated using myii/ssf-formula#100

* ci(travis): run `shellcheck` during lint job [skip ci]

* Automated using myii/ssf-formula#106

* ci(travis): quote pathspecs used with `git ls-files` [skip ci]

* Automated using myii/ssf-formula#107

* ci(gemfile): restrict `train` gem version until upstream fix [skip ci]

* Automated using myii/ssf-formula#110

* ci(travis): use `major.minor` for `semantic-release` version [skip ci]

* Automated using myii/ssf-formula#112

* feat: support optional container removal before start in upstart/systemd

* chore(release): 0.43.0 [skip ci]

# [0.43.0](saltstack-formulas/docker-formula@v0.42.0...v0.43.0) (2020-01-22)

### Bug Fixes

* **release.config.js:** use full commit hash in commit link [skip ci] ([01ece3d](saltstack-formulas@01ece3d))

### Continuous Integration

* **gemfile:** restrict `train` gem version until upstream fix [skip ci] ([734d4e3](saltstack-formulas@734d4e3))
* **kitchen:** use `debian-10-master-py3` instead of `develop` [skip ci] ([d87e787](saltstack-formulas@d87e787))
* **kitchen:** use `develop` image until `master` is ready (`amazonlinux`) [skip ci] ([71c5bcb](saltstack-formulas@71c5bcb))
* **kitchen+travis:** upgrade matrix after `2019.2.2` release [skip ci] ([2189efb](saltstack-formulas@2189efb))
* **travis:** apply changes from build config validation [skip ci] ([f0a07fc](saltstack-formulas@f0a07fc))
* **travis:** opt-in to `dpl v2` to complete build config validation [skip ci] ([340556e](saltstack-formulas@340556e))
* **travis:** quote pathspecs used with `git ls-files` [skip ci] ([12bf914](saltstack-formulas@12bf914))
* **travis:** run `shellcheck` during lint job [skip ci] ([ba127a0](saltstack-formulas@ba127a0))
* **travis:** use `major.minor` for `semantic-release` version [skip ci] ([2590d61](saltstack-formulas@2590d61))
* **travis:** use build config validation (beta) [skip ci] ([fe184e9](saltstack-formulas@fe184e9))

### Features

* support optional container removal before start in upstart/systemd ([cc10d97](saltstack-formulas@cc10d97))

### Performance Improvements

* **travis:** improve `salt-lint` invocation [skip ci] ([18fa798](saltstack-formulas@18fa798))

* fix: avoid setting multiple pre-start stanzas in upstart

* ci(kitchen): avoid using bootstrap for `master` instances [skip ci]

* Automated using myii/ssf-formula#124

* chore(rubocop): move `LineLength` cop from `Metrics` to `Layout` [skip ci]

* Automated using myii/ssf-formula#129

* chore(gitignore): update from the `template-formula` [skip ci]

* Automated using myii/ssf-formula#132

Co-authored-by: Tyler Hunt <tyler.s.hunt05@gmail.com>
Co-authored-by: N <noel.mcloughlin@gmail.com>
Co-authored-by: N <noelmcloughlin@users.noreply.github.com>
Co-authored-by: Imran Iqbal <myii@users.noreply.github.com>
Co-authored-by: RemiChristiaan <remi-christiaan.cool@vbhi.com>
Co-authored-by: Yoan Blanc <yoan@dosimple.ch>
Co-authored-by: Imran Iqbal <iqbalmy@hotmail.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Chad Bean <chad.bean@solarwinds.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants