Skip to content
This repository has been archived by the owner on Sep 6, 2019. It is now read-only.

manifest changes aren't deployed #17

Open
afeld opened this issue Aug 24, 2015 · 5 comments
Open

manifest changes aren't deployed #17

afeld opened this issue Aug 24, 2015 · 5 comments

Comments

@afeld
Copy link
Contributor

afeld commented Aug 24, 2015

Since the manifest is pulled from the running application, any changes to the local manifest aren't actually included in the push.

Have a note in the README, but should really figure this out.

/cc #6

@Snugug
Copy link

Snugug commented Sep 22, 2015

Why can't you use the manifest file in the repo?

Maybe check to see if manifest.yml exists and, if it doesn't, pull from the application?

@afeld
Copy link
Contributor Author

afeld commented Sep 23, 2015

For the main application I work on, for example, the manifest isn't complete, so (as it stands) we couldn't use that approach. While maybe not ideal, I imagine this is the reality for many applications deployed to CF.

Opened an issue with an idea around this in a related project: contraband/autopilot#11

@jmcarp
Copy link

jmcarp commented Oct 31, 2015

@afeld: why isn't the manifest for that project complete? Are there settings that can't be specified in the manifest? I think the approach that autopilot takes--treating the manifest as the source of truth for desired application state--is the way to go:

  • It guarantees reproducible deploys
  • It requires developers to store configuration in one place
  • It prevents anti-patterns like storing secrets in environment variables (prefer user-provided services)

I would actually argue that supporting deploys without a complete manifest does more harm than good--why not require users to configure applications properly?

@afeld
Copy link
Contributor Author

afeld commented Nov 1, 2015

The only things that aren't in the manifest are sensitive environment variables. While we can/should move those to user provided service instances, some gems (like New Relic's) read directly from specially-named environment variables, and I haven't tried to figure out a workaround.

@jmcarp
Copy link

jmcarp commented Nov 1, 2015

I've tried two approaches for passing credentials from user-provided services into tools that expect to find their configuration in environment variables:

Either approach could be documented or extracted for reuse. There's also a nice helper library for node for inspecting CF environment variables, including services: https://github.com/cloudfoundry-community/node-cfenv. If analogous tools don't already exist for ruby, python, etc., we can port the node version ourselves.

Point being: it's worth figuring out a few details about user-provided services if it buys us reproducible builds and helps avoid brittle string parsing.

cc @dhcole, since you've posted some issues on this repo. If we're willing to treat the manifest as the ground truth for configuration, lots of issues get fixed for free. This is also exactly what https://github.com/concourse/autopilot does, so we wouldn't have to maintain our own zero-downtime deploy tool.

jmcarp added a commit to cloud-gov/cg-site that referenced this issue Nov 1, 2015
Link to autopilot, an alternative zero-downtime plugin that relies on manifests rather than live application state for configuration. As I've been arguing [elsewhere](cloud-gov/cf-blue-green#17), I think this is the way to go, but am happy to be convinced otherwise.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants