Hi

I have recently gone through this problem.

I had initial thought to you different branches for the different 
environments.
say 
prod
uat
sim
inf
dev

But was advised best to go with production and testing.


so I have and I have used a grouping in my ENC to put machines into the 
above groups. But I am about ready to go back to more branches again.  Why 

I have setup my profiles 

my_ssh profile this handles all the general setup of ssh server and client 
- standard across all machines


so my roles just include profile::my_ssh

My issue with this is if I want to now role out a change to my ssh setup I 
can't isolate which box gets its, pot luck, wait long enough and they all 
get it.

I am not sure its the best to go to each dev/uat machine and run puppet 
--environment <mytest> is the best solution plus my ENC sets the 
environment ..  don't want pesky dev guys change environments on me.

I don't want to have to create a new profile and attach it to the roles I 
want to test on.

So I am thinking ... multiple branches is sounding good.

But im keen to see what comes out of this.


On Friday, 19 August 2016 02:24:58 UTC+10, Rob Nelson wrote:
>
> The term 'environment' is overloaded. In the context of puppet, I prefer 
> to think of it as "a set of puppet code/data representing a branch of the 
> controlrepo' (puppet environment), rather than 'an environment that nodes 
> run in' (dev/qa/prod/etc) (node environment). Since you can make the latter 
> part of your hiera hierarchy, the only puppet environment that needs to 
> live forever is 'production'. Inside it, the hieradata has ALL the data for 
> all of the node environments, so they actually all check into 'production'. 
> The hierarchy value for the node environment can be a custom fact, 
> calculated or a file on disk, so nodes can get the right node environment 
> data from the puppet environment 'production'.
>
> :hierarchy:
>   - "nodes/%{::trusted.certname}"
>   - "node_env/%{node_env}"
>   - "common"
>
> By differenting the various uses of the overloaded term 'environment' a 
> bit, you can actually streamline your workflow quite a bit. Now all your 
> data is in one place. When you create a feature branch for testing, you can 
> then point the canary nodes to that branch (`puppet agent -t --environment 
> ticket1234`, or putting `environment = ticket1234` in puppet.conf). Whether 
> you're changing roles and profiles, hiera data, or the Puppetfile, it's 
> contained in that branch, but you can actually have production, dev, qa 
> nodes check into it and get the new results, so you aren't surprised when a 
> Puppetfile change in dev trickles up to prod and suddenly things blow up. 
> Of course, you need to have some canary nodes in each node environment (or 
> place a LOT of trust in --noop mode) to get there, but I think that's a 
> reasonable goal to work toward.
>
>
>
> Aside: I know we have discussed workflows and the various types of 
> environments on this list quite a bit this Spring/Summer. Does anyone have 
> a good reference article for this already, or do we need to come up with 
> one? I think this is an important gap to fill.
>
>
> Rob Nelson
> [email protected] <javascript:>
>
> On Thu, Aug 18, 2016 at 12:07 PM, Mike Sharpton <[email protected] 
> <javascript:>> wrote:
>
>> The static branches are basically Puppet environments in which nodes are 
>> bound/pointed to them in their puppet.conf.  This way we can open CR's per 
>> set of nodes and move up the chain.  Also, I may have found another option 
>> on Gary's site.  We could r10k our hiera data and split it from our control 
>> repo.  More to come.  Thanks again for thoughts.
>>
>>
>> On Thursday, August 18, 2016 at 10:00:01 AM UTC-5, Christopher Wood wrote:
>>
>>> I'm missing why you need static branches. I'm picturing something more 
>>> like: 
>>>
>>> git checkout production 
>>> git checkout -b ticket1234 
>>> # make changes, commit, push, test, repeat 
>>> git merge production # catch up on any prod changes, retest 
>>> git tag ticket.1234 
>>> git checkout production 
>>> git merge ticket1234 
>>> git branch -d ticket1234 
>>>
>>> That way everybody's changes are working pretty close to what production 
>>> is right now. 
>>>
>>> The alternatives are curating your branches, periodically re-branching 
>>> from production, or just accepting the current state, as near as I can tell 
>>> off the cuff. If you want to maintain something it requires maintenance 
>>> work no matter the tool you pick. 
>>>
>>>
>>> On Thu, Aug 18, 2016 at 05:27:40AM -0700, Mike Sharpton wrote: 
>>> >    Thanks for your reply.  We based our initial design on shit Gary 
>>> says. 
>>> >     This may be our only option as you say, to have hiera data changes 
>>> made 
>>> >    to each static branch/puppet environment by hand and not merge.  We 
>>> need 
>>> >    the static branches for separation of Puppet environments.  Problem 
>>> with 
>>> >    this approach is humans will make errors between each branch 
>>> sometimes or 
>>> >    always.  The branches/environments will eventually become snow 
>>> flakes over 
>>> >    time as far as Hieradata.  Perhaps we can possibly merge them 
>>> weekly to 
>>> >    lower this risk.  Assuming no code changes are in flight, which 
>>> there most 
>>> >    likely always will be.  The search continues. Thanks again, 
>>> >    Mike 
>>> > 
>>> >    On Wednesday, August 17, 2016 at 3:52:31 PM UTC-5, Christopher Wood 
>>> wrote: 
>>> > 
>>> >      It sounds like these might help: 
>>> > 
>>> >      [1]https://puppet.com/blog/git-workflows-puppet-and-r10k 
>>> > 
>>> >      [2]http://garylarizza.com/blog/categories/r10k/ 
>>> > 
>>> >      Seems like you would benefit from having all teams work from 
>>> branches of 
>>> >      current production and merge back, rather than maintaining a 
>>> >      semi-permanent dev branch shared by everybody. This is usually 
>>> where I 
>>> >      suggest that people review commits and talk to each other and 
>>> figure out 
>>> >      what's good, but sometimes that's like pulling teeth. 
>>> > 
>>> >      On Wed, Aug 17, 2016 at 01:21:45PM -0700, Mike Sharpton wrote: 
>>> >      >    Hey all, 
>>> >      >    We are coming up on an issue in our environment in where we 
>>> have 
>>> >      multiple 
>>> >      >    Puppet environments that are backed by git branches in a 
>>> puppet 
>>> >      control 
>>> >      >    repo.  Our Hiera data is stored inside these branches and 
>>> changed 
>>> >      >    frequently by our Operations teams.  Of which we then have 
>>> them 
>>> >      merge 
>>> >      >    changes up the environment chain and r10k through our Puppet 
>>> >      environments. 
>>> >      >     This is all fine. 
>>> >      >    Ex, dev -> test -> production, hiera data changes are moved 
>>> up and 
>>> >      tested 
>>> >      >    each step of the way. 
>>> >      >    When things aren't fine is when we are testing code in our 
>>> dev or 
>>> >      test 
>>> >      >    branch and we have changed the tags for modules/repos inside 
>>> the 
>>> >      >    Puppetfile of those branches that we don't want in 
>>> production right 
>>> >      away 
>>> >      >    (dev/test).  This code only applies to dev environment, on 
>>> purpose. 
>>> >        
>>> >      >    Our operations team then comes along with their hiera 
>>> changes and 
>>> >      merges 
>>> >      >    the puppetfile module/repo changes up the chain along with 
>>> the 
>>> >      hiera data. 
>>> >      >     Effectively moving our Puppetfile changes up the chain when 
>>> we 
>>> >      don't want 
>>> >      >    to.  We have thought about splitting hiera data out our 
>>> puppet 
>>> >      control 
>>> >      >    module like it was before Puppet 4, but this leaves us no 
>>> room to 
>>> >      test 
>>> >      >    hiera data up our environment chain and also leaves us with 
>>> some CI 
>>> >      work 
>>> >      >    to make this feasible.  Having the hieradata in each 
>>> environment is 
>>> >      too 
>>> >      >    nice.  We also attempted to monkey with .gitignore, but this 
>>> is not 
>>> >      meant 
>>> >      >    to do what we are trying to do.  Don't merge Puppetfile 
>>> unless I 
>>> >      want to.  
>>> >      >    Has anyone ran into this and found a somewhat elegant 
>>> solution? 
>>> >      >     Everything we are coming up with is either not easy to 
>>> manage, or 
>>> >      just 
>>> >      >    doesn't make sense to do.  Perhaps we are missing something 
>>> simple 
>>> >      and are 
>>> >      >    over thinking things.  Thanks in advance. 
>>> >      >    Mike 
>>> >      > 
>>> >      >    -- 
>>> >      >    You received this message because you are subscribed to the 
>>> Google 
>>> >      Groups 
>>> >      >    "Puppet Users" group. 
>>> >      >    To unsubscribe from this group and stop receiving emails 
>>> from it, 
>>> >      send an 
>>> >      >    email to [1][3][email protected]. 
>>> >      >    To view this discussion on the web visit 
>>> >      >   
>>> >       [2][4]
>>> https://groups.google.com/d/msgid/puppet-users/9d9e18a4-a6e4-4d04-b0b3-377b848a8504%40googlegroups.com.
>>>  
>>>
>>> >      >    For more options, visit [3][5]
>>> https://groups.google.com/d/optout. 
>>> >      > 
>>> > 
>>> >    -- 
>>> >    You received this message because you are subscribed to the Google 
>>> Groups 
>>> >    "Puppet Users" group. 
>>> >    To unsubscribe from this group and stop receiving emails from it, 
>>> send an 
>>> >    email to [6][email protected]. 
>>> >    To view this discussion on the web visit 
>>> >    [7]
>>> https://groups.google.com/d/msgid/puppet-users/cfcde2dc-2904-4286-bd01-c934857c0ee5%40googlegroups.com.
>>>  
>>>
>>> >    For more options, visit [8]https://groups.google.com/d/optout. 
>>> > 
>>> > References 
>>> > 
>>> >    Visible links 
>>> >    1. https://puppet.com/blog/git-workflows-puppet-and-r10k 
>>> >    2. http://garylarizza.com/blog/categories/r10k/ 
>>> >    3. javascript: 
>>> >    4. 
>>> https://groups.google.com/d/msgid/puppet-users/9d9e18a4-a6e4-4d04-b0b3-377b848a8504%40googlegroups.com
>>>  
>>> >    5. https://groups.google.com/d/optout 
>>> >    6. mailto:[email protected] 
>>> >    7. 
>>> https://groups.google.com/d/msgid/puppet-users/cfcde2dc-2904-4286-bd01-c934857c0ee5%40googlegroups.com?utm_medium=email&utm_source=footer
>>>  
>>> >    8. https://groups.google.com/d/optout 
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/puppet-users/b4d986ee-a5e4-4c40-9e0e-2d3d32f35b18%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/puppet-users/b4d986ee-a5e4-4c40-9e0e-2d3d32f35b18%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/1527405f-dda2-4a6b-b35a-70cea5618021%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to