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

Enable workaround for using objects in config #449

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Commits on Apr 25, 2023

  1. Enable workaround for using objects in config

    The type checker is modified to make property access on 'Any' return 'Any',
    which enables workarounds for #434 using programs like below.
    
    Unblocking this sans workaround will require further implementation of these issues to support more complex structured, hierarchical config:
    - pulumi/pulumi#1052
    - pulumi/pulumi#2307
    
    The workaround program is:
    
    ```yaml
    name: tmp.0T7TLEvBj8
    runtime: yaml
    description: A minimal Pulumi YAML program
    variables:
      myObject:
        fn::secret:
          fn::std:jsondecode:
            input:
              fn::fromBase64: ${myJSON}
    outputs:
      test: ${myObject.result.test.password}
    ```
    
    In this workaround we:
    
    1. Base64 encode the JSON object we want to use in Pulumi YAML. This is
       necessary because Pulumi will attempt to JSON decode the value of config
       variables into objects on our behalf.
    
       ```sh
       pulumi config set --secret \
         myJSON \
         $(printf '{ "test": { "password": "secretpassword123" } }' | base64)
       ```
    
    2. Use `fn::fromBase64` to decode that string into its original value.
    3. Use `fn::std:jsondecode` to convert that string to an object.
    4. Use `fn::secret` to ensure the value is marked as a secret. (Experimentally, this was necessary.)
    
    The code change in the analyzer is necessary to allow indexing into the `Any` type on `${myObject.result}`.
    AaronFriel committed Apr 25, 2023
    Configuration menu
    Copy the full SHA
    395851b View commit details
    Browse the repository at this point in the history