Perl 6 - the future is here, just unevenly distributed

IRC log for #salt, 2014-05-14

| Channels | #salt index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 jab416171 that's true, and there's only 500 people in here atm
00:00 nkuttler fwiw, it looks quite bland. pisg is nice
00:01 nkuttler actually.. i guess i could just write a pisg formula and host my own stats.. ;)
00:02 jab416171 !states.file.recurse
00:02 wm-bot4 http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.recurse
00:03 lilmatt joined #salt
00:03 jab416171 that's nifty
00:05 jab416171 it's scary just how much I don't know about salt, and yet I can still write salt states without worrying too much about breaking stuff or side effects or whatever.
00:05 mgw joined #salt
00:06 faldridge joined #salt
00:06 schmutz joined #salt
00:06 jab416171 is it normal for salt-master to use 3 gigs of memory?
00:07 redondos joined #salt
00:08 whiteinge that sounds a lot high. what version are you running?
00:08 jab416171 2014.1.0
00:09 jab416171 I just restarted it and it went way down
00:10 RandalSchwartz so grains are on the minion to declare its role to the master.
00:10 RandalSchwartz how are grains normally established?
00:10 RandalSchwartz seems like you'd need something like salt to set them up. :)
00:10 RandalSchwartz but that seems like a chicken and egg problem
00:11 whiteinge RandalSchwartz: you can write your own /etc/salt/grains file in yaml format as part of boostrapping the server
00:11 whiteinge or they can go in the minion config, e.g.:  /etc/salt/minion.d/mygrains.conf
00:11 RandalSchwartz Yeah - I guess *something* has to be doing the initial provisioning
00:12 whiteinge interns
00:12 jab416171 it kind of is chicken and the egg
00:12 jab416171 lol Whissi
00:12 jab416171 whiteinge*
00:12 Whissi Buh!
00:12 jab416171 sorry Whissi
00:12 Whissi :)
00:13 nkuttler RandalSchwartz: not necessarily, you can use grains.append once the minion is running
00:13 RandalSchwartz oooh...
00:13 * RandalSchwartz looks for that.
00:13 nkuttler i set up initial grains in cloud profiles, using salt-cloud
00:14 jab416171 RandalSchwartz, assuming these are brand new VMs, you already know what the grains are going to be, and you can use one of the methods for setting them right after you install salt, but before calling a state
00:14 jab416171 and even if they're not brand new and you're just adding salt to existing nodes, you can still do pretty much the same thing
00:16 robawt so this one is giving me some hurt lately:  adding the user + the user's group is not a common thing?
00:16 robawt eyeballing the saltstack state repo for reference: https://github.com/saltstack/salt-states/blob/master/users/init.sls
00:17 robawt i get weird errors but not always about not being able to add to group, almost like a race condition
00:17 robawt is it common form to not have a user.present/group.present for users?
00:17 RandalSchwartz although if all I want is something like "hosting" or "role", I could just put that in pillar, right?
00:17 RandalSchwartz since I would know that in the central location
00:19 jab416171 robawt, I believe this is the proper/preferred way for doing that. someone please correct me if I'm wrong. https://gist.github.com/jab416171/580c514a06a5e2d9c05f
00:20 robawt jab416171: https://github.com/saltstack/salt-states/blob/master/users/init.sls <--- that lines up with this too
00:20 jab416171 with the require.group
00:20 jab416171 alright
00:20 bhosmer joined #salt
00:20 robawt it's just weird because in the ubuntu world, the user's group is auto created and added to
00:20 jab416171 the only thing that doesn't have is the require.group
00:21 whiteinge RandalSchwartz: yeah, pillar works for that too. you can use it for targeting, same as with grains
00:21 * robawt highfives whiteinge
00:21 * whiteinge highfives robawt right back
00:21 nkuttler RandalSchwartz: or you can target hosts in your top file
00:22 robawt nkuttler: RandalSchwartz i would recommend against hosts in the top file.  we had our top file grow faily large before using grains more
00:22 ashw7n joined #salt
00:22 toastedpenguin joined #salt
00:23 fragamus joined #salt
00:23 ajprog_laptop joined #salt
00:23 whiteinge robawt: might be worth eye-balling which CLI tool salt is using to create the user in the source. iirc, salt does not use the flag that auto-creates the group by default
00:23 jab416171 robawt, I can attest to that. most of our hosts don't define grains. our top file is over 100 lines as a result (not too big, but it's still pretty big)
00:23 robawt whiteinge: right, it's an ubuntu thing to automagically do it without a flag.
00:23 robawt whiteinge: i dislike automagic ;)
00:24 XenophonF left #salt
00:24 jab416171 robawt, but salt itself is pretty automagical
00:24 robawt jab416171: yeah I know
00:24 robawt and the all hail mightly salt object
00:24 robawt :P
00:24 jab416171 but it's magic that you wrote
00:24 jab416171 so it's less mysterious (but still magical)
00:24 robawt jab416171: no that's YAML
00:25 robawt (a joke)
00:27 ipalreadytaken joined #salt
00:29 forrest joined #salt
00:30 bhosmer_ joined #salt
00:30 * robawt highfives forrest
00:31 bhosmer_ joined #salt
00:31 forrest hey robawt
00:31 robawt i should've bought you a beer in Montreal forrest
00:31 forrest hah
00:31 bhosmer_ joined #salt
00:33 bhosmer joined #salt
00:37 sroegner joined #salt
00:37 Rycher007 joined #salt
00:38 schmutz joined #salt
00:38 Rycher007 anyone have syndic <—> master experience here?
00:39 Rycher007 running into an issue with processing happening on the syndic rather than happening on the master during an event fire
00:45 diegows joined #salt
00:47 ml_1 joined #salt
00:48 whiteinge Rycher007: so an event.fire_master from a minion only bubbles up to the syndic and not the master-master?
00:49 Rycher007 basically…but the weird thing is, I can see the events happening on the master via eventlisten
00:50 Rycher007 except everything actually happens on the syndic
00:50 chuffpdx joined #salt
00:51 bhosmer joined #salt
00:51 whiteinge how do you mean? what is happening on the syndic? reactor stuffs?
00:53 garthk Today, I’m stripping Puppet out of my environment because nobody else is willing to maintain it.
00:53 garthk I wasn’t expecting it to turn out that way.
00:54 Rycher007 yea, reactor junk
00:54 Rycher007 here’s the event fire:
00:55 Rycher007 [/usr/bin/salt-call event.fire_master '{"data":"$myuser"}' 'generate_ssh_keys' --skip-grains]
00:56 Rycher007 the reactor sls looks like this:
00:56 Rycher007 [generate_ssh_keys:
00:56 Rycher007 runner.ssh_keys.init:
00:56 Rycher007 - user_id: {{ data['data']['data'] }}]
00:56 Rycher007 on the master
00:57 whiteinge do you have any reactors defined in /etc/salt/master on the syndic?
00:58 Rycher007 I do in /etc/salt/master.d/reactor.conf …but not the generate_ssh_keys tag
00:58 Rycher007 it’s defined in /srv/salt/salt_master/reactor.conf on the syndic, though
01:01 whiteinge the syndic and the master-master don't share any config or files by default. the syndic shouldn't perform any actions on the generate_ssh_keys tag if it's not configured
01:02 jalbretsen joined #salt
01:02 feiming joined #salt
01:02 whiteinge but that's what you're seeing?
01:02 Rycher007 the problem is, I’m using a git_fs structure
01:02 Rycher007 and the whole /srv is shared as a gitfs
01:04 whiteinge the syndic won't load any .conf files from that dir. it would have to be in /etc/salt/master{,.d}
01:05 igmar joined #salt
01:06 stephas joined #salt
01:06 Rycher007 it should just pass through to the master, correct?
01:07 whiteinge what should?
01:09 Rycher007 the event should just be passed through the syndic to the master
01:09 whiteinge i belive so, yes. and you said you're seeing that via the eventlisten script, right?
01:10 ldlework joined #salt
01:11 whiteinge i'm not sure if the event *also* appears on the syndic. but even if it does the syndic shouldn't process any reactor files if there's nothing in the syndic's reactor config.
01:13 Rycher007 yea, it’s like a weird quantum tunneling thing going on
01:13 faldridge joined #salt
01:14 Rycher007 I suspect it has something to do with this: - user_id: {{ data['data']['data'] }}]
01:14 Rycher007 going to try the SLS with: - user_id: {{ data['data'] }}]
01:15 whiteinge i'd suggest stopping the syndic daemon, starting it in the foreground with debug logging enabled, then fire the event and see what the syndic ends up working on.
01:16 NullWagon joined #salt
01:19 meteorfox joined #salt
01:24 Rycher007 hmm…nothing going on in the syndic debug
01:24 Rycher007 plenty going on in the master log on the syndic though
01:25 Rycher007 the reason I know it’s happening on the syndic is that it executes a function that calls a python library that only exists on the master
01:25 Rycher007 and I see python death spirals happening in the master log on the syndic
01:27 Rycher007 ah dammit…ok, I gotta head out.  Thanks for your help @whiteinge
01:29 otter768 joined #salt
01:30 Rycher007 left #salt
01:32 Outlander joined #salt
01:34 jnials joined #salt
01:45 garthk joined #salt
01:45 uestra joined #salt
01:48 ckao joined #salt
01:50 Luke__ joined #salt
01:51 schimmy joined #salt
01:54 schimmy1 joined #salt
01:54 meteorfox joined #salt
02:05 vbabiy joined #salt
02:05 happytux joined #salt
02:10 acabrera joined #salt
02:11 feiming joined #salt
02:12 schimmy joined #salt
02:13 lionel joined #salt
02:16 ravibhure joined #salt
02:17 tristianc joined #salt
02:19 mr_chris Is there any way around the caching of states that the minions do when using gitfs? I have to manually delete the cache every time I make a change. Then never pull the change otherwise. I have all caching disabled in the minion config too but it still does it.
02:20 ravibhure left #salt
02:21 dangra joined #salt
02:28 otter768 joined #salt
02:28 ashw7n joined #salt
02:28 Rycher007 joined #salt
02:37 sroegner joined #salt
02:42 meteorfox joined #salt
02:51 ashw7n_ joined #salt
02:54 stephas joined #salt
02:54 Ryan_Lane joined #salt
02:57 bhosmer joined #salt
03:00 rome joined #salt
03:04 ipalreadytaken joined #salt
03:04 ccase joined #salt
03:12 mateoconfeugo joined #salt
03:12 falican joined #salt
03:15 mr_chris Looks like no. https://github.com/saltstack/salt/issues/3665
03:16 anuvrat joined #salt
03:21 mateoconfeugo joined #salt
03:22 jcockhren looks like the dnsimple python modules are old and/or simple don't work.
03:22 jcockhren looks like I'll have to roll my own
03:22 jcockhren :(
03:23 rupsky________ joined #salt
03:30 Furao joined #salt
03:30 rome joined #salt
03:33 Outlander joined #salt
03:33 ajw0100 joined #salt
03:46 garthk is there any way to enumerate the environments matched by a minion? It doesn’t seem to be in a grain.
03:46 bhosmer joined #salt
03:47 garthk salt-call state.show_top gives a hint
03:48 smcquay joined #salt
03:55 catpigger joined #salt
03:57 mgw joined #salt
04:00 travisfischer joined #salt
04:02 iShortBus joined #salt
04:05 jesusaurus there's no easy way, no. you would have to programatically analyze the show_top data structure
04:06 Furao i set env in pillar, simply :P
04:07 feiming_ joined #salt
04:10 anuvrat joined #salt
04:14 beardo joined #salt
04:14 stephas joined #salt
04:20 mfournier joined #salt
04:22 ashw7n joined #salt
04:25 ipalread_ joined #salt
04:26 forrest joined #salt
04:27 forrest left #salt
04:27 forrest joined #salt
04:32 NV joined #salt
04:35 kermit joined #salt
04:38 sroegner joined #salt
04:41 redondos joined #salt
04:41 redondos joined #salt
04:48 svs_ joined #salt
04:49 stevednd whiteinge:  should updated salt mine documentation for 12665 be added to the documentation sprint 12446?
04:49 xinkeT joined #salt
04:52 ramteid joined #salt
04:52 travisfischer joined #salt
04:53 Rycher007 joined #salt
05:03 dccc joined #salt
05:07 yurei joined #salt
05:20 meteorfox joined #salt
05:25 ndrei joined #salt
05:27 ldlework left #salt
05:37 Koala_ joined #salt
05:38 travisfischer joined #salt
05:40 jnials joined #salt
05:44 ashw7n joined #salt
05:44 adizam joined #salt
05:47 bhosmer joined #salt
05:54 ravibhure joined #salt
05:58 picker joined #salt
06:01 redondos joined #salt
06:14 n8n joined #salt
06:15 skyion joined #salt
06:21 falican joined #salt
06:25 schristensen joined #salt
06:25 schimmy joined #salt
06:27 stephas joined #salt
06:30 schimmy joined #salt
06:39 sroegner joined #salt
06:43 anuvrat joined #salt
06:58 uestra joined #salt
07:01 steveoliver joined #salt
07:02 Kenzor joined #salt
07:04 ml_1 joined #salt
07:05 linjan joined #salt
07:06 ghartz joined #salt
07:06 CeBe joined #salt
07:06 stephanbuys joined #salt
07:11 stephanbuys1 joined #salt
07:12 martoss joined #salt
07:12 stephanbuys1 left #salt
07:16 stephanbuys1 joined #salt
07:18 harobed joined #salt
07:19 harobed joined #salt
07:19 noder joined #salt
07:21 noder Hi all, Can I get the output of an sls as an input to my shell for some processing ?
07:30 schimmy1 joined #salt
07:33 noder storing that in a file will do as well
07:34 che-arne joined #salt
07:34 cast joined #salt
07:37 xmj Moin
07:38 xmj after configuring an environment in top.sls as well as on the minion in /etc/salt/minion (with restarted daemons) I can't seem to get the minion state running, " Comment: No Top file or external nodes data matches found
07:39 xmj the minion is in the salt-key accepted list, and the environment configured has its fqdn along with a (previously working) state
07:39 xmj What am I doing wrong?
07:40 Ztyx joined #salt
07:41 n8n joined #salt
07:42 jnials joined #salt
07:44 gildegoma joined #salt
07:45 anuvrat joined #salt
07:50 sheldon joined #salt
07:52 sheldon i get a minion object, then i invoke minion.prepare(), i got critical error "failed to load grains defined in grain file core.os_data error", any ideas ?
07:53 scott_w joined #salt
08:01 steveoliver joined #salt
08:02 topochan joined #salt
08:04 johanek left #salt
08:10 siciliansun joined #salt
08:10 siciliansun left #salt
08:13 ashw7n joined #salt
08:13 darkelda joined #salt
08:21 djanos joined #salt
08:21 ipalreadytaken joined #salt
08:21 TyrfingMjolnir joined #salt
08:22 bhosmer joined #salt
08:35 stephanbuys joined #salt
08:37 orbit_darren joined #salt
08:38 millz0r joined #salt
08:40 sroegner joined #salt
08:42 stephanbuys left #salt
08:49 _mel_ joined #salt
08:50 siciliansun1 joined #salt
08:52 ggoZ joined #salt
08:53 che-arne_afk joined #salt
09:00 giantlock joined #salt
09:01 steveoliver joined #salt
09:03 googolhash joined #salt
09:13 CeBe joined #salt
09:13 ashw7n joined #salt
09:16 Ztyx joined #salt
09:17 giantlock joined #salt
09:17 TyrfingMjolnir joined #salt
09:17 ravibhure drybjed: Is it possible 'when' for 'vars'
09:18 ravibhure left #salt
09:21 Ztyx1 joined #salt
09:35 N-Mi joined #salt
09:35 N-Mi joined #salt
09:36 * viq nudges kiorky
09:37 Sacro joined #salt
09:38 Sacro ah, nice to be back here
09:45 davek joined #salt
09:45 davek hi - is there a filesize limit when using source: salt://whatever ?
09:48 siciliansun1 left #salt
09:51 siciliansun joined #salt
09:54 davek anybody home?
09:55 siciliansun left #salt
10:06 wigit joined #salt
10:09 shwaiil joined #salt
10:10 shwaiil Hi
10:10 shwaiil Q: Getting a new VPS. I always heard about things like Salt. I wonder if, I should use it to setup a production web server - without previous experience using "Salt" ?
10:11 wigit Hi. I'm pretty new at Salt, and I was wondering if someone could point me in the right direction here. I want to check for the existence of a certain network interface.
10:14 TyrfingMjolnir joined #salt
10:14 ashw7n joined #salt
10:16 kedo39 joined #salt
10:20 Outlander joined #salt
10:21 cast shwaiil: do you have a non-prod host, to match it?
10:22 shwaiil cast, thanks for looking! I've got not much info how salt works, but I guess there's a master and then "slaves". I would setup a VM for that yes.
10:23 cast there can be a master and slaves, or it can be masterless
10:23 shwaiil I need to start in a couple of minutes, ubuntu 14.04, apache, mysql, php, etc.
10:23 shwaiil That's what I'll setup basically, then vhosts etc.
10:23 wigit Ah - figured it out. "{% if grains['ip_interfaces']['em1'] is defined %}
10:23 shwaiil cast: masterless ? but could I use the same configuration in future servers ?
10:24 cast shwaiil: sure.
10:24 shwaiil cast: would you recommend using Salt for the first time to create a production server ? I'm actually starting with a development server tbh
10:24 cast on my desktop, i run a masterless setup - after i update /srv/salt files, I run salt-call --local state.highstate to apply the new configuration
10:24 giantlock joined #salt
10:26 cast shwaiil: i wouldn't recommend having an important production server without a non-production server to test on, in the general case. if you go down that path...lets say full out with a dev, qa and prod VM [after all, the dev and qa VMs can be off 90% of the time], then i'd highly suggest salt, or something like it, in order to assure consistency across the environments
10:27 shwaiil Sure!
10:27 shwaiil Where can I get started ?
10:27 shwaiil http://docs.saltstack.com/en/latest/contents.html ?
10:28 shwaiil http://docs.saltstack.com/en/latest/topics/installation/ubuntu.html
10:29 cast docs are a good place to start. [i started off with the masterless quickstart]
10:30 shwaiil cast: masterless quickstart! In practice let's say I start by installing a VM / Ubuntu 14.04
10:30 cast i suppose its somewhat obvious but...you'll probably want to use revision control too
10:30 shwaiil I do all my experiments from that tutorial, can I then, use it on my other servers ?
10:31 shwaiil cast: revision control, I use Git for my web probjects. About salt. I guess that's a "configuration" file ?
10:32 babilen Hello -- Need some guidance regarding namespacing. I am currently working on a formula for xnbd and want to allow the user to install two different versions. Both need different configuration files and, naturally, different "fromrepo" statements. How would you structure this? Two SLS that define common things (e.g. service: - running) twice or many SLS that include the common bits?
10:32 cast they're your servers, its up to you to decide when you're happy pushing a technology out onto your various infrastructure
10:33 cast git will suit well for managing your salt state files :)
10:33 babilen shwaiil: http://docs.saltstack.com/en/latest/topics/tutorials/gitfs.html
10:33 shwaiil Sorry I don't know nothing about Salt yet. So, ok "state files" is the "configuration" files ?
10:33 babilen shwaiil: I would work through: http://docs.saltstack.com/en/latest/topics/index.html
10:34 shwaiil babilen: yeah, that's what I'll be doing in the next... what... 8 hours ?
10:34 cast salt states is the desired state configuration component of salt, somewhat akin to puppet / chef / cfengine
10:34 babilen (make that a few days)
10:35 shwaiil A few days [...] gosh
10:35 shwaiil Ok, I guess I'll leave this for another time then :)
10:36 XenophonF joined #salt
10:37 babilen shwaiil: I started with a master/minion setup and worked through the tutorials linked on http://docs.saltstack.com/en/latest/ (i.e. "Getting started with state", "Basic config management", ...) -- You could also just work through http://docs.saltstack.com/en/latest/topics/tutorials/index.html
10:37 XenophonF does the service state work on FreeBSD?
10:37 babilen shwaiil: A few days was meant for "Read the entire salt documentation I linked to" (which would include a *lot* of topics you don't, yet, care about)
10:37 shwaiil babilen: yeh, but I guess I'll do that in the future. I kind a need a dev server for tomorrow. installing and setting it up manually it's quite fast to be honest.
10:38 shwaiil I thought Salt would help me do this quite fast and then I could just replicate this elsewhere in the future
10:38 babilen shwaiil: Yes, it does, but you have to learn a bit about it before you can use it.
10:38 shwaiil babilen: yeah I know what you mean, it does take time to read documentation and fully understand it
10:38 babilen exactly
10:38 cast i think its well worth learning, the sooner the better
10:39 shwaiil cast: yeah
10:39 shwaiil But I'm no sysadmin. Really need this for tomorrow unfortunately :)
10:39 shwaiil Thanks guys!
10:40 sroegner joined #salt
10:43 DarkLinkXXXX joined #salt
10:43 DarkLinkXXXX joined #salt
10:43 XenophonF left #salt
10:53 babilen Hello -- Need some guidance regarding namespacing. I am currently working on a formula for xnbd and want to allow the user to install two different versions. Both need different configuration files and, naturally, different "fromrepo" statements. How would you structure this? Two SLS that define common things (e.g. service: - running) twice or many SLS that include the common bits?
11:00 chuffpdx_ joined #salt
11:02 faulkner joined #salt
11:02 steveoliver joined #salt
11:05 diegows joined #salt
11:10 raw joined #salt
11:11 Guest38345 left #salt
11:12 Guest38345 joined #salt
11:15 ashw7n joined #salt
11:15 babilen How do I remove rejected keys? (wrong minion id)
11:17 Ztyx1 `salt-key -L` lists all keys. `salt-key -d <minionid>` removed the key.
11:22 thehaven joined #salt
11:22 ekristen joined #salt
11:25 anuvrat joined #salt
11:30 xt joined #salt
11:33 gothix joined #salt
11:33 gothix joined #salt
11:36 babilen Ztyx1: Merci! For some reason I did not see it in the manpage (no idea why). :)
11:36 jrdx joined #salt
11:41 DelPede joined #salt
11:44 marnom joined #salt
11:45 marnom How can I validly reference {{ grains['domain'] }} within this for loop in a Salt state? {% for host in salt['publish.runner']('loadbalancer.get_php_backends', {{ grains['domain'] }} ) %} It's invalid (Rendering SLS "dev:loadbalancer" failed: Jinja syntax error: expected token ':', got '}'; line 15)
11:46 babilen marnom: Just remove the {{ ... }} around grains['domain']
11:48 marnom babilen: omg nice... I thought I tested that syntax but you are totally right it's working now, thanks a lot!
11:48 babilen marnom: I spend some quality time working on exactly this issue .. the final result was: Name = {{ filedaemon.get('name', "%s-fd"|format(grains['host'])) }}
11:49 babilen marnom: So I know it well -- In the end I asked myself: Why on earth did I expect it to be more complicated than that?
11:49 babilen It is, however, not very well documented how this works (neither in the jinja nor the saltstack docs)
11:49 marnom babilen: hmm yeah it's still a bit vague to me and I can't find a lot of examples
11:50 marnom I'm trying to dynamically update my loadbalancers if I add backend webservers
11:50 babilen Are you using reactors for that?
11:50 marnom my Salt reactor config is also very... unmodular
11:50 marnom https://gist.github.com/targetx007/40bed64fc871edb5f559
11:51 babilen I've just started playing with reactors, but some of my colleagues don't like the whole "and this is when salt became self-aware" aspect of the setup
11:51 marnom especially the static definition for each environment makes me sad
11:51 marnom babilen: yeah that's true.. but when used correctly it can be so extremely powerfull
11:53 robinsmidsrod joined #salt
11:53 marnom but it does sometimes feel non-UNIXy, to have 1 tool do all these things. It does do them very clean however so I can live with it for now :)
11:53 babilen marnom: yeah, I love it and it will make a lot of things easier (e.g. adding minions to monitoring, failover, ...) -- Right now I am playing with a reactor that uses presence (cf. http://docs.saltstack.com/en/latest/topics/event/master_events.html#presence-events ) to add/remove minions to certain services.
11:54 marnom ahh nice that looks like a better event match than my current setup
11:55 babilen You have to enable them explicitly on the salt master though, but it sounded as if you are looking for *exactly* that.
11:55 marnom currently listening on 'salt/minion/name*/start' to add backend servers and 'salt/key' to pick up removals
11:55 picker Hi All, Is there any callback that we could get on master from minion reporting status of state execution and based on that perform modifications on all minions?
11:55 marnom but this page looks very good, especially the presence part. Thanks a lot will look into this!
11:56 babilen marnom: The main problem is that "presence" was misspelled "presense" and that is still used in the currently deployed versions
11:57 Outlander joined #salt
11:57 marnom hehe that seems suboptimal
11:58 eliasp whiteinge: thanks for the no-op hint (salt.states.test.succeed_without_changes)… gonna try this one…
11:59 babilen marnom: yeah - I refuse to push that into production :)
11:59 steveoliver joined #salt
11:59 picker Like based on new deployment on new minion have to update the config on existing ones
12:00 babilen marnom: So, you want to set "presence_events: True
12:01 garthk joined #salt
12:02 marnom thanks :)
12:02 marnom picker: that sounds a lot like what we're discussing, using a salt reactor / runner combination
12:03 to_json joined #salt
12:04 babilen marnom: In your salt master config and you can then use the eventlisten.py script to show you incoming events (make sure you get the version that corresponds to your master version) ... That gets you events such as: http://paste.debian.net/99458/
12:05 babilen marnom: Not the ugly "presense" in there .. but that allows you to take specific actions when a minion becomes available. Unfortunately I haven't yet figured out to restrict some actions to the event when a minion is present *for the first time*
12:05 babilen *Note
12:06 marnom babilen: yeah I used the eventlisten.py script initially but I need to finetune the events I'm listening on
12:06 marnom might do that later today
12:06 marnom first I want to modularize the reactor & the runner
12:07 marnom because that's preventing me to do full DTAP
12:07 babilen yeah, back to that. Sorry for distracting you from that topic
12:07 Ztyx1 picker: Have a look at the Job Events here: http://docs.saltstack.com/en/latest/topics/event/master_events.html#job-events They could probably do the job combined with the Reactor system.
12:07 Ztyx1 left #salt
12:07 marnom babilen: no no problem at all very interesting!
12:07 raw joined #salt
12:07 harobed_ joined #salt
12:07 Ztyx1 joined #salt
12:09 babilen marnom: Any particular reason why you use both minion id's *and* grains? I would only use one (to prevent problems when they get out of sync)
12:09 marnom babilen: at this point it's really just a proof of concept and I got it working this way
12:09 marnom so yeah there's definately room for improvement there :)
12:11 babilen marnom: I am no fan of using grains to assign roles (IMHO that should be done exclusively on and by the master), but if you have unique IDs I wouldn't necessarily rely on grains too. What is your problem with that file exactly? I don't quite see a way to make it any easier.
12:11 babilen s/easier/simpler
12:11 marnom well it's a bit repetitive
12:12 marnom {% if data['id'].startswith('web') or data['id'].startswith('php') %} <-- could I do an if grains['tags'] (for example) as well there?
12:12 babilen marnom: Sure
12:12 topochan joined #salt
12:13 marnom gonna tweak it a bit more brb
12:13 babilen marnom: You can also nest your logic
12:13 nliadm joined #salt
12:14 marnom yeah but that didn't really feel clean either
12:15 babilen marnom: Well, it would at least allow you to say "startswith web OR php OR ..." in the ".apm.test" block
12:15 marnom yeah would be slight improvement
12:15 marnom but ideally I don't depend on hostnames anymore just like you said
12:15 ashw7n joined #salt
12:16 babilen marnom: But then the only difference is that you target either those in environment:dev or environment:test
12:18 tristianc joined #salt
12:18 babilen marnom: I personally don't like relying on grains for role assignment so I handle it via minions IDs for now. An improvement would be to match values defined in a pillar ...
12:19 marnom babilen: that will not work for me as I have a lot of webservers and they can have different roles
12:19 marnom but I don't want to all give them very specific names..
12:19 picker Ztyx1: Certainly it could be, only concern is how to trigger on successful execution on  minion?
12:19 marnom now getting [ERROR   ] Failed to render "/srv/salt/reactor/update_loadbalancer.sls"
12:19 marnom so it seems invalid
12:20 Ztyx1 picker: The reactor system could trigger an exeuction on your minions from the master.
12:21 marnom I'd say this is valid but I'm obviously missing something https://gist.github.com/targetx007/5b755cb82fafeca45de1
12:22 eliasp whiteinge: thanks a lot for the test.succeed_without_changes hint… works great now this way: http://pastebin.kde.org/pbx1rwpce … now I "just" need to fix https://github.com/saltstack/salt/issues/9028 to get rid of this ugly file.recurse block to manually sync the files required by the installer…
12:22 marnom babilen: though I agree on your pillar point, way more secure to specify on master.
12:22 marnom screen -ls
12:22 marnom woops
12:22 babilen marnom: You have to use something like me before: 'G@tags:webserver and G@tags:loadbalancer and G@environment:%s'|format(grains['environment'])
12:22 babilen marnom: And switch to tmux ;)
12:23 marnom hehehe my colleague agrees on your tmux point :)
12:23 eliasp tmux > screen
12:24 marnom babilen: ahh now I understand what you meant with that syntax
12:24 babilen marnom: It's essentially "....".format(...) in Python -- http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters
12:26 sinh joined #salt
12:26 picker Ztyx1:Not sure you got my query. Say  new service is deployed on X minion and Y is already in service. So on successful deployment on X need to update Y
12:26 marnom babilen: thanks for that reference, you're supplying me with some great URLs :)
12:27 picker So I was checking if I could get certain callback from minion with status
12:27 babilen marnom: You are welcome
12:27 babilen marnom: And as we seem to be going down similar routes: I already filed https://github.com/saltstack/salt/issues/12761 if the built-in filters are not enough for you
12:28 Ztyx1 picker: I see. Sorry, no I didn't. One way would be to expose whether your service is running through a Salt Mine.
12:29 Ztyx1 picker: Your changes would obviously not propagate instantly, but on the other hand I'm not sure I want to use Salt for that kind of propagation.
12:29 marnom Ztyx1: I tried to implement this using a mine, but when I removed a minion the data didn't get purged from the mine
12:30 babilen picker: http://docs.saltstack.com/en/latest/ref/peer.html ?
12:30 Ztyx1 marnom: Yeah, it takes a while (default 5 min, I think) before mine is getting purged. How long did you wait?
12:30 Ztyx1 babilen: good idea.
12:31 marnom Ztyx1: 5 min is like an eternity for these changes to propagate (for our environment at least) so I ended up using a reactor
12:31 marnom en then a publish.runner thing to retrieve the currently available backend webservers for that loadbalancer
12:32 marnom babilen: +1 on that bugreport, looks nice
12:33 babilen Ztyx1, picker: I have not yet started to play with peer communication, but it seems to be the feature to use in this case
12:37 jslatts joined #salt
12:39 picker Yep, peer could be possible solution
12:41 sroegner joined #salt
12:44 elfixit joined #salt
12:45 swissknife joined #salt
12:45 swissknife left #salt
12:45 toastedpenguin joined #salt
12:47 Ztyx joined #salt
12:47 bhosmer joined #salt
12:49 rome joined #salt
12:50 cpowell joined #salt
12:51 sgviking joined #salt
12:51 cpowell joined #salt
12:51 picker marnom: Really mine takes to time to spread info?
12:52 jnials joined #salt
12:52 elfixit joined #salt
12:53 Ztyx picker: I guess a custom event also would work. You could then use a reactor to trigger updates elsewhere.
12:53 gwmngilfen joined #salt
12:54 rome joined #salt
12:55 marnom picker: it takes time to populate and afterwards some time for the data to get purged. It was not 'live enough' for our needs
12:56 XenophonF joined #salt
12:56 XenophonF hey all - i can't seem to get a multi-line file.append state to work
12:57 XenophonF i get parser errors when applying the state
12:57 picker marnom: mine seems to be feasible as not 5 mins is manageable our env
12:57 XenophonF is this feature available in 2014.1.4 or is it only in the development branch?
12:57 babilen What conventions do you guys use to ensure that unique state IDs are used? I essentially gave up and would use foo-bar-quux-some-package in foo/bar/quux/init.sls and foo-bar-quux-/etc/some-package.conf
12:57 babilen I don't really like that, but can't think of a better way
12:58 babilen XenophonF: What are you trying to do exactly and what do you use right now? (paste it to, for example, http://paste.debian.net )
12:59 marnom XenophonF: make sure to note the extra indentation (2 extra spaces)
13:00 gwmngilfen joined #salt
13:01 XenophonF just a sec i'm putting a test example together so i can give you the exact error message
13:02 babilen +1
13:02 rojem joined #salt
13:03 topochan joined #salt
13:05 gwmngilfen joined #salt
13:05 babilen So, how do *you* ensure unique state IDs ?
13:06 Eugene Trial and error.
13:06 XenophonF the multi-line append worked on my linux test server
13:06 XenophonF let me try it on FreeBSD
13:07 babilen Eugene: heh, that is, unfortunately, not good enough :)
13:07 Eugene Careful design? :-p
13:08 XenophonF state IDs have to be unique across all states?
13:08 dangra joined #salt
13:09 babilen XenophonF: yeah
13:09 babilen Eugene: Yes, I am in the "careful design" step. The lack of namespacing in salt makes this quite hard though and I was simply interested in different approaches.
13:10 Eugene You can namespace just fine with _
13:10 dude051 joined #salt
13:11 patrek joined #salt
13:12 XenophonF ok babilen and marnom, file.append works just fine on freebsd now
13:12 XenophonF i upgraded from 2014.1.3 to 2014.1.4 earlier this week, so maybe that fixed it
13:12 XenophonF so never mind :)
13:12 babilen Eugene: So, say you want to have a pkg: - installed state in foo/bar/baz/init.sls -- what would you call that state?
13:13 babilen XenophonF: fair enough :)
13:16 ashw7n joined #salt
13:17 marnom babilen: would you mind looking at a %s'|format( issue I'm still having in my reactor? It keeps saying 'failed to render' when it's trigger'd..
13:18 babilen marnom: I really need more information about that. Please paste your *exact* SLS file and error to http://paste.debian.net (% sensitive data)
13:19 marnom babilen: yeah didn't want to bother you directly, you already helped me so much :) but here it is: https://gist.github.com/targetx007/8bece9ead6ea06600446
13:20 jas- joined #salt
13:20 funzo joined #salt
13:20 GradysGhost joined #salt
13:20 babilen marnom: That looks about alright ... what is it? And what is the error?
13:21 marnom The error in salt master log is: "2014-05-14 15:15:32,885 [salt.utils.event                         ][ERROR   ] Failed to render "/srv/salt/reactor/update_loadbalancer.sls""
13:21 marnom babilen: I'm not sure how I can troubleshoot the issue in this file, if I mess something up in a salt state I get better error output
13:21 resmike joined #salt
13:21 marnom but this is a reactor
13:22 babilen marnom: Does it work if you use, say, "- tgt: 'G@tags:webserver and G@tags:loadbalancer and G@environment:foo'" ?
13:22 babilen Or is it the "if grains['tags'] == 'webserver' (and don't you want "in" there rather than "==" ?
13:22 faldridge joined #salt
13:23 marnom yes that's what I used before
13:23 wigit joined #salt
13:23 racooper joined #salt
13:24 marnom babilen: my old, working reactor: https://gist.github.com/targetx007/701db6c46935d3646aa1
13:24 jmccree joined #salt
13:24 noder Does anyone have an idea whether "Peer" is available for Windows minions as well
13:25 resmike joined #salt
13:28 faldridge joined #salt
13:28 vbabiy joined #salt
13:28 marnom babilen: just changed the environment reference to 'G@environment:foo' and this also gives a render error... perhaps it's in another part of the file
13:29 babilen marnom: That seems to be the case then
13:30 kiorky viq: https://github.com/makinacorpus/makina-states/blob/master/mc_states/modules/mc_cloud_controller.py#L126
13:30 marnom but I pasted the full reactor so it's only 6 basic lines... unable to spot other issue at the moment. I'll keep testing :)
13:32 Rojematic joined #salt
13:32 faldridg_ joined #salt
13:33 rome_ joined #salt
13:33 Networkn3rd joined #salt
13:34 wigit I'm looking to do something like https://gist.github.com/sollie/ef58d9043b323b9996d2 - is this possible, and if so, can anyone point me in the right direction?
13:34 babilen marnom: grains['tags'] is probably a list not a string isn't it?
13:36 babilen wigit: {% set webinterface = pillar['network'][host]['web'] %} ?
13:36 marnom babilen: yeah do I need to use in instead of ==?
13:36 rojem joined #salt
13:37 abe_music joined #salt
13:40 babilen marnom: Well, I am sure that it doesn't cause the render error, but I think that you want that semantically.
13:41 babilen wigit: Does that work?
13:41 wigit babilen: Just got to test it, yeah it works. Thanks :)
13:42 babilen wigit: Wonderful :)
13:43 scott_w joined #salt
13:43 ipmb joined #salt
13:44 rome joined #salt
13:44 jaycedars joined #salt
13:46 pass_by_value joined #salt
13:47 quickdry21_ joined #salt
13:47 bhosmer_ joined #salt
13:49 tristianc joined #salt
13:53 ndrei joined #salt
13:56 N-Mi_ joined #salt
13:56 N-Mi_ joined #salt
13:59 steveoliver joined #salt
14:00 rome joined #salt
14:00 XenophonF left #salt
14:03 failed_array joined #salt
14:03 failed_array How can I make a cmd.run dependent on a package install?
14:03 manfred require:
14:03 RandalSchwartz - require: \n - pkg: foo
14:03 RandalSchwartz with appropriate indents :)
14:03 dude051 joined #salt
14:04 rojem joined #salt
14:04 RandalSchwartz and be sure you have "foo: pkg.installed" somewhere
14:04 RandalSchwartz that second part tripped me up a few times
14:05 failed_array Sorry - I meant the reverse
14:05 manfred same thing
14:05 failed_array I need a package depending on a cmd.run for an "rmp -Uvh"
14:05 manfred just in the revesre
14:05 failed_array How do I specify the file though
14:05 failed_array Or the cmd I mean
14:05 manfred just require: \n - cmd: state-id
14:05 RandalSchwartz change -require to -required_by
14:05 RandalSchwartz or that :)
14:06 kaptk2 joined #salt
14:06 failed_array thanks!
14:07 manfred failed_array: http://ix.io/cjJ
14:07 manfred http://ix.io/cjK
14:10 babilen manfred: Why don't you use pkg: - installed ... - sources: - http://epel.something/release.rpm" ?
14:11 manfred he wanted to use cmd? that was what he asked about...
14:11 babilen (cf. http://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkg.html#salt.states.pkg.installed )
14:11 manfred i don't know his life!
14:11 manfred i would chalk it up to him not being success_array
14:12 babilen failed_array: What are you trying to do?
14:13 babilen failed_array: Would pkg.installed: - sources: - http://epel.something/release.rpm work for you?
14:14 patrek_ joined #salt
14:15 viq kiorky: I may be blind, but I can figure out from that how to use subjectAltName
14:15 viq oh, lower *reading*
14:16 Eugene babilen - bar_baz_pkgname, probably
14:17 babilen Eugene: sure
14:17 ashw7n joined #salt
14:18 viq kiorky: so salt somehost tls.create_csr TEST CN='test.example.com' subjectAltName='DNS:test1.example.com' or if I want to be fancy subjectAltName="DNS:test1.example.com,DNS:test2.example.com" ?
14:19 happytux__ joined #salt
14:21 happytux___ joined #salt
14:22 bhosmer_ joined #salt
14:23 vbabiy joined #salt
14:24 dude051 joined #salt
14:24 happytux joined #salt
14:25 eykd joined #salt
14:26 scott_w joined #salt
14:31 KennethWilke joined #salt
14:32 mateoconfeugo joined #salt
14:34 rome joined #salt
14:35 jaimed joined #salt
14:35 miqui joined #salt
14:36 Ztyx joined #salt
14:39 XenophonF joined #salt
14:39 ashw7n joined #salt
14:39 eriko joined #salt
14:42 sroegner joined #salt
14:43 XenophonF so what's the best way to go about composing states?
14:43 XenophonF like, i want to have a common config that goes out to all my minions
14:43 XenophonF but i need to selectively override parts of it
14:44 mgw joined #salt
14:44 XenophonF for example, all of my Linux and FreeBSD computers should have Postfix installed, with a config that relays mail through a central hub
14:44 XenophonF that requires modifying /etc/postfix/main.cf a/k/a /usr/local/etc/postfix/main.cf
14:45 XenophonF but on the mail hub itself, i need to use a completely different Postfix configuration
14:45 XenophonF one that totally overrides main.cf
14:46 KennethWilke XenophonF, I'd create one state for the hub and one for the others that has some jinja magic to do things a little different based on OS
14:46 gildegoma joined #salt
14:46 resmike joined #salt
14:48 XenophonF KennethWilke: my base state looks like
14:48 XenophonF base:
14:48 XenophonF '*':
14:48 XenophonF - common.mail
14:48 XenophonF but on the mail relay, i'd need to override the settings in common/mail.sls
14:49 XenophonF maybe i shouldn't use a wildcard for the base config
14:50 KennethWilke yeah, you'd want to target by something else for those states, not sure whats best for that part
14:50 babilen XenophonF: I would use pillars to target different values to different minions and generate the postfix config from that -- essentially write a formula for postfix http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html
14:50 KennethWilke babilen's suggestion sounds good
14:50 big_area joined #salt
14:51 XenophonF i have this object-oriented mental model, where I can define server roles in ways that let me inherit settings from a common based config but override them as needed
14:51 XenophonF s/based/base/ whoops
14:51 babilen XenophonF: Unfortunately there isn't a postfix formula yet that allows you to do that, but that is the approach I try to adhere to.
14:51 XenophonF OK let me look at the formulas doc
14:52 babilen XenophonF: You cannot use the object oriented model as you can *only* extend an existing state *once*
14:52 XenophonF gotcha
14:52 babilen XenophonF: I went for that in the beginning too (essentially "include: - common.foo .... "extend: commonfoo-package: - source: ..." but that doesn't scale
14:54 babilen I would recommend to read through some of the formulas and look into pillars to get a feeling for the way that works. It is more work upfront (as developing a "proper" formula is harder than just saying "ah, hell .. just use this configuration file")
14:54 babilen XenophonF: In the end you end up with much nicer and easier to understand blocks of configuration though.
14:54 XenophonF that's really my end goal
14:55 KennethWilke pfft who want's nice and easy
14:55 babilen https://github.com/saltstack-formulas/users-formula/blob/master/pillar.example is the configuration to create arbitrary users with the "users-formula"
14:56 babilen XenophonF: http://paste.debian.net/99496/ is what I've just written for xnbd
14:56 KennethWilke XenophonF, on that note, if you make something nice that you can share you can update the stuff thats at https://github.com/saltstack-formulas/postfix-formula
14:56 big_area anyone use vagrant? The Vagrant openstack plugin doesn't seem to like using provisioners for me
14:56 babilen XenophonF: And so on (have a look around)
14:57 Ztyx1 joined #salt
14:57 babilen XenophonF: The only thing that is missing for *super* awesomeness is: https://github.com/saltstack/salt/issues/3991
14:58 alunduil joined #salt
14:59 XenophonF wait
15:00 XenophonF so can i define two states named /usr/local/etc/postfix/main.cf in two different sls files, and have one override the other?
15:00 XenophonF like, in mail/client.sls and mail/relay.sls
15:00 XenophonF and then have
15:00 Ztyx1 babilen: dito
15:01 XenophonF base: '*': - mail.client (imagine spaces and line feeds)
15:01 XenophonF mailrelay: '*mx*': - mail.relay
15:01 XenophonF in top.sls
15:01 resmike joined #salt
15:02 marnom how long should restarting the salt-master take (I have dmi/gpu disabled already)
15:03 Ztyx1 Mine takes less than 10 seconds or so.
15:03 Ztyx1 marnom: it should be pretty quick, that is.
15:03 marnom around 17 sec here...
15:04 marnom I just don't get what it's doing at that time because with an -l debug it just sits there after reading the config and then suddenly moves on, like it's waiting for some network timeout or something
15:04 Ztyx1 marnom: But is that really an issue? How often to you actually restart it?
15:04 marnom restart now took 40 sec
15:04 Ztyx1 How many minions do you have?
15:04 marnom well I guess it's not really an issue, it's more that I think something is wrong/misconfigured perhaps and that it shouldn't be taking this long. Around 50 minions
15:05 Ztyx1 marnom: maybe you could strace it?
15:06 whiteinge stevednd: (re: #12665) sure! you going to join us for the sprint?
15:07 marnom Ztyx1: yeah I'll strace it
15:07 Ztyx1 marnom: disclaimer: I've never done that on the master ;), but it shouldn't hurt.
15:07 Sacro Is there no state for chocolatey ?
15:08 big_area left #salt
15:08 big_area joined #salt
15:08 marnom ah... it seems to be reading /var/cache/salt/master/jobs/* stuff
15:08 marnom which is odd, as I don't expect many jobs are running/scheduled. Let's see how I can clear that cache
15:09 stevednd whiteinge: I may try, just have to see what kind of time I can carve out.
15:09 * whiteinge nods
15:09 Ztyx1 marnom: maybe that's where it stores old jobs? In that case, you could lower `keep_jobs`.
15:10 stevednd Is the sprint for any documentation? Because there's also some stuff like the 'gem' module and state that indicate it only works with rvm, but it was updated some months ago to also support rbenv. I was going to create an issue for that, but didn't get a chance.
15:10 marnom it's currently set to the default, so I wouldn't expect, with only 50 minions, to be hitting any limits
15:11 Ztyx1 marnom: true
15:11 marnom Ztyx1: well it's not an issue like you said, how often do you restart the master. At least now I know what it's doing
15:11 marnom Ztyx1: thanks for your advice/help
15:12 [diecast] joined #salt
15:12 lilmatt joined #salt
15:13 jas- I am curious to know about line #178 in salt/crypt.py (https://github.com/saltstack/salt/blob/develop/salt/crypt.py#L178). It seems to get called from satl/master.py when shared secrets do not exist between minions and the master (based on evaluation of code flow only at this point). Can anyone shed some light on this process?
15:16 resmike joined #salt
15:17 claytonk joined #salt
15:18 dude051 joined #salt
15:19 jimklo joined #salt
15:21 jimklo joined #salt
15:21 pass_by_value left #salt
15:25 alekibango_ joined #salt
15:25 occaton joined #salt
15:25 jbub_ joined #salt
15:26 ggoZ joined #salt
15:26 JPaul joined #salt
15:26 nrgaway joined #salt
15:27 micko joined #salt
15:27 resmike joined #salt
15:28 ChrisD joined #salt
15:30 ccase joined #salt
15:32 kermit joined #salt
15:32 Guest39355 Hi Chaps, quick question: To provision LXC containers from Salt Cloud (using v2014.1.3), does the Salt Master need LXC installed? Or can it connect to a minion/provider running LXC, which then provisions the container?
15:33 Guest39355 I was following this guide: http://makina-corpus.com/blog/metier/2014/salt-cloud-can-now-spawn-lxc-containers-or-how-saltstack-made-lxc-containers-managment-easy/
15:35 timoguin Guest39355: the master does not need LXC installed
15:35 timoguin the modules will run on the minion
15:36 mgw joined #salt
15:38 hunter joined #salt
15:39 darkelda joined #salt
15:39 redondos joined #salt
15:39 redondos joined #salt
15:39 Guest39355 Thanks Tim, thats how I expected it to work.
15:41 hunter joined #salt
15:42 zain_ joined #salt
15:44 ana_07 joined #salt
15:45 jgarr test
15:45 jgarr sorry
15:46 ana_07 .
15:48 ana_07 :
15:51 ana_07 joined #salt
15:51 mateoconfeugo joined #salt
15:51 zirpu joined #salt
15:51 jalbretsen joined #salt
15:51 wendall911 joined #salt
15:51 ana_07 left #salt
15:53 jnials joined #salt
15:54 mateocon_ joined #salt
15:54 bhosmer joined #salt
15:55 TheRealBill joined #salt
15:55 tligda joined #salt
15:56 ipalread_ joined #salt
15:56 smcquay joined #salt
15:57 lilmatt joined #salt
15:58 tyler-baker joined #salt
15:58 ccase_ joined #salt
15:59 whiteinge wq!
15:59 druonysuse joined #salt
15:59 druonysuse joined #salt
16:00 steveoliver joined #salt
16:01 shwaiil What's wrong with my state file ? http://pastie.org/private/kujjfcvc0attbmembvnyka I get a Data failed to compile:
16:01 whiteinge stevednd: the sprint has a focus on improving the docs for new users so I wouldn't link it to the main sprint ticket, but please do file a ticket for it and also feel free to scratch your own itch during the sprint. we're very happy for any and all improvements
16:01 shwaiil Rendering SLS "base:taste" failed: Illegal tab character; line 7
16:02 whiteinge shwaiil: try two-space indents instead of tabs.
16:02 lilmatt joined #salt
16:02 whiteinge http://yamllint.com/
16:02 whiteinge ^^ nice sanity checker
16:03 shwaiil That's nice! thank you!
16:03 n8n joined #salt
16:03 jnials joined #salt
16:04 darkelda joined #salt
16:04 darkelda joined #salt
16:04 conan_the_destro joined #salt
16:04 joehillen joined #salt
16:06 jhulten joined #salt
16:09 Richard joined #salt
16:09 schimmy1 joined #salt
16:10 Guest90935 hello...
16:10 shwaiil Q: So, I'm following this tutorial that's introduces me to Salt. I've created state, grain, really basic and pushed to my minions from my master.
16:11 Guest90935 Do you have to use Python?
16:11 shwaiil if I'm doing something really common, like installing LAMP, is there a website where I can get states or something like it ? maybe
16:11 shwaiil with better conventions etc, good templates to start with, etc ?
16:11 shwaiil just wondering..
16:11 Guest90935 Are you using Python?
16:11 timoguin Guest90935: you don't have to use Python
16:11 RandalSchwartz https://github.com/saltstack-formulas
16:11 shwaiil RandalSchwartz: thanks!
16:12 timoguin Guest90935: by default configuration is YAML
16:12 Guest90935 So you don't have to use Python in order to use Salt?
16:12 timoguin no
16:12 RandalSchwartz I don't know python, using salt just fine
16:12 RandalSchwartz well, hate YAML, but tolerable
16:13 RandalSchwartz better than puppet or chef (ruby)
16:13 Guest90935 But there is a salt API and I can call from my Python script?
16:13 timoguin correct
16:13 timoguin you have the full power of python in many ways if you want to use it
16:13 Guest90935 There is also a Salt API I can call from my bash script too?
16:14 timoguin you can shell out to the CLI commands, or you can use the salt-api REST api
16:14 Guest90935 I have a bunch of bash script that I wrote, I would like to convert them to use Salt.
16:15 Guest90935 Can bash use salt-api REST api?
16:15 Topic for #salt is now Welcome to #salt | 2014.1.4 is the latest | SaltStack trainings coming up in SLC/London: http://www.saltstack.com/training | Please be patient when asking questions as we are volunteers and may not have immediate answers | Channel logs are available at http://irclog.perlgeek.de/salt/
16:16 timoguin Guest90935: sure. i don't know if that's what you really need to do or not though
16:17 whiteinge you can use Salt to call your existing bash scripts and phase them out as you rewrite them as Salt states. it doesn't need to be a monumental migration effort. incremental is safer and easier. :)
16:17 Guest90935 That's a great idea!! thanks. I gotta go. be back later!!
16:17 Sacro I'm so glad to be back using Salt
16:18 __hudson__ joined #salt
16:18 jgarr I'm trying to get current pillar data from a minion. pillar.items isn't fetching the new data. but when I run pillar.raw.pillar.items I get an error that it "is not available" any other way to get list of pillar items?
16:19 timoguin jgarr: pillar.get will return what the minion actually has
16:20 shwaiil this yaml thing sucks
16:20 timoguin jgarr: if you have a new pillar you've defined on the master, you need to sync it down with saltutils.refresh_pillar
16:20 jgarr timoguin: but pillar.get requires an argument when run from the salt command
16:21 jgarr timoguin: saltutils.refresh_pillar is not available :-/
16:21 jgarr running minion 2014.1.4 (same with master)
16:21 timoguin sorry, saltutil.refresh_pillar
16:23 jgarr timoguin: that returns "none" and pillar.items still doesn't have the custom pillar data I set about the minion. I'm sure I'm doing something wrong
16:23 jgarr I'm still unfamiliar with pillar
16:25 timoguin jgarr: pillar.raw should give you a list of the current pillars on the minion. pillar.get is if you want to look at a single key-value
16:25 timoguin and none is the normal return when you refresh pillars. not sure why
16:25 forrest joined #salt
16:25 forrest__ joined #salt
16:25 timoguin ah if it's not showing in pillar.items on the master then you probably have set the pillar wrong
16:25 timoguin or it's not getting loaded for whatever reason
16:26 meteorfox joined #salt
16:27 ajolo_ joined #salt
16:27 jgarr timoguin: OK thanks, I'll keep playing with it. Do you know if there's a way to just view loaded pillar sls files instead of all the values? would be helpful just to see a list of loaded "extra" items
16:29 ivogonzalvez joined #salt
16:30 ivogonzalvez hi there you folks!
16:31 timoguin jgarr: not sure. i'd run the master in the foreground with -l debug and see if it's loading your extra pillars or giving an error
16:34 swissknife joined #salt
16:37 hunter joined #salt
16:40 ramteid joined #salt
16:43 swissknife joined #salt
16:43 sroegner joined #salt
16:45 XenophonF FreeBSD and CentOS have different names for the group with GID 0; on FreeBSD that's "wheel", while on Centos it's "root".
16:46 XenophonF On CentOS, wheel has GID 10.
16:46 stephas joined #salt
16:47 XenophonF so if I want to push files down to minions and ensure they have the same GIDs, should I just use jinja + grains to pick the group owner?
16:47 XenophonF or is there a better way?
16:47 rupsky________ joined #salt
16:47 XenophonF or can i just specify the group by GID instead of by name in the file.managed state?
16:48 schmutz joined #salt
16:49 iShortBus_ joined #salt
16:50 big_area joined #salt
16:54 jgarr what's the best way to specify an environment for a node? pillar? how about just for testing? is there a salt_environment variable?
16:55 big_area joined #salt
16:56 Eugene XenophonF - never tried it, but I'd think that a GID would work. Try it ;-)
16:56 stephas joined #salt
16:57 possibilities joined #salt
16:57 jas- I am curious to know about line #178 in salt/crypt.py (https://github.com/saltstack/salt/blob/develop/salt/crypt.py#L178). It seems to get called from satl/master.py when shared secrets do not exist between minions and the master (based on evaluation of code flow only at this point). Can anyone shed some light on this process?
16:58 ashw7n joined #salt
16:59 faldridge joined #salt
17:01 resmike joined #salt
17:03 rojem joined #salt
17:04 viq Hm, can I do in states do something like {% if salt['network.in_subnet']('1.2.3.4/24') %} ?
17:04 ze- jas-: called by line 156. anytime MasterKeys is initiated.
17:04 msil joined #salt
17:08 XenophonF hey KennethWilke or babilen? i'm trying to understand the ntp-formula before i start writing something for postfix
17:09 XenophonF it looks simple enough to fiddle with
17:09 [diecast] joined #salt
17:09 XenophonF so my question has to do with getting the formula to work on FreeBSD
17:10 possibilities joined #salt
17:10 XenophonF ntp is included in the base OS, but i'm not sure how to no-op the ntp: pkg.installed state
17:10 vbabiy joined #salt
17:11 whiteinge !states.file.managed
17:11 wm-bot4 http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.managed
17:11 viq XenophonF: wrap it in {% if grains['os'] != 'FreeBSD' %} for example
17:12 ml_1 joined #salt
17:12 babilen I typically prefer os_family over os, but that's exactly the right approach.
17:12 XenophonF ah gotcha
17:13 XenophonF then i should add a 'FreeBSD' clause to ntp-formula/ntp/map.jinja, as well, right?
17:13 viq Probably. Let me have a look
17:13 XenophonF https://github.com/saltstack-formulas/ntp-formula
17:13 lnxnut joined #salt
17:13 XenophonF to spare you the google search :)
17:14 viq yeah, you'd need to add stuff there
17:14 jas- ze-: Thanks, do you have any other insight into its primary purpose?
17:14 jeffasinger joined #salt
17:15 XenophonF thanks
17:15 resmike joined #salt
17:18 faldridge joined #salt
17:20 n8n joined #salt
17:20 viq oooh, awesome, you can do that!
17:20 viq < viq> Hm, can I do in states do something like {% if salt['network.in_subnet']('1.2.3.4/24') %} ?
17:23 gothix joined #salt
17:26 kermit joined #salt
17:28 conan_the_destro joined #salt
17:29 shwaiil the grains['host'] === hostname ?
17:29 Ryan_Lane joined #salt
17:30 pkumar joined #salt
17:30 tedski shwaiil: yeah, short hostname
17:30 tedski shwaiil: grains['fqdn'] gives fully qualified
17:30 XenophonF do grains['fqdn'] if you want the whole thing
17:30 shwaiil tedski: thanks for looking. short hostname ?
17:31 tedski shwaiil: see salt 'target' grains.items
17:31 shwaiil sorry I'm starting to learn, how to run that command to check the grains I have ?
17:31 shwaiil ok salt 'target' grains.items
17:32 uestra joined #salt
17:33 mortis shwaiil: yeah and you can get one grain by doing salt "target" grains.item itemname
17:33 AdamSewell joined #salt
17:33 shwaiil mortis: I see
17:33 shwaiil So, what should we do if we require to change the hostname ? there's a typo in one I did :P
17:34 tedski shwaiil: you want to change the grain or change the actual hostname?
17:34 rgarcia_ joined #salt
17:34 shwaiil I want to match the hostname when I do grains['host'] == hostname
17:34 tedski where is the typo?
17:34 shwaiil grains['host'] == 'foo' , I've got it has grains['host'] == 'fooo'
17:34 shwaiil :P
17:35 shwaiil one of my host is fooo and not foo, as I expected
17:35 shwaiil or should've done
17:35 tedski so, you've corrected the hostname on the host already?
17:35 tedski and you want the grain to be accurate?
17:35 pssblts joined #salt
17:36 jgarr joined #salt
17:36 shwaiil yeah, I changed the hostname on the host already :)
17:36 Bplotnick joined #salt
17:36 tedski most simply is to restart the minion
17:36 shwaiil oh I see
17:36 shwaiil ok thanks
17:37 tedski however
17:37 [diecast] joined #salt
17:37 tedski sudo salt 'fooo' saltutil.refresh_modules
17:37 tedski that will rerun the grains (grains are just python programs that gather information)
17:37 Bplotnick If I have a master and a syndic, is there a way to easily replicate the entire file root?
17:38 Bplotnick And keep them in sync?
17:38 timoguin Bplotnick: put it in version control and push it out to all masters at once is one way
17:38 timoguin I've heard of people using a replicated filesystem like GlusterFS as well
17:39 viq Bplotnick: gitfs
17:39 viq hah, serve from ceph or something, that'd be interesting
17:39 Bplotnick Unfortunately these are two separate firewalled environments with only salt bridging them
17:40 Bplotnick So I wanted a native replication. I tried to do something like file.recurse with a source of "salt://" but that doesn't work
17:40 timoguin well gitfs will let you back the entire state tree with the same git repo(s)
17:41 bastion1704 joined #salt
17:41 viq Bplotnick: for something similiar I use a git server, which has a commit hook that pushes to one of the salt servers, as it wouldn't be able to connect to git
17:41 hunter joined #salt
17:46 Bplotnick Hmm. I guess that would be possible. But I would actually rather have salt itself control the replication
17:47 pkumar I have an issue with syndic delivery of an event fire to the salt master
17:47 shwaiil Learning here, can someone experienced have a look on my state for creating a user and group ? http://pastie.org/private/105pvhrpzaedexnuk9rklw
17:48 timoguin Bplotnick: yea it's not possible currently, but it's being worked on
17:48 tedski shwaiil: you have extra newlines before groups, group, and require
17:48 tedski shwaiil: merge lines 8/9, 11/12, 13/14
17:50 Bplotnick timoguin: is there an issue for it? I'd be willing to help out with development
17:50 shwaiil tedski: I used yaml lint, that's why I did it that way :S
17:50 smcquay joined #salt
17:50 pkumar syndic - OrderedDict([('generate_user_sshkeys', OrderedDict([('runner.sshkeys.init', [OrderedDict([('user_id', 'myusername')])])]))])
17:50 shwaiil the error I'm getting is Rendering SLS "base:taste" failed: Conflicting ID "kitty"
17:50 pkumar master - OrderedDict([('generate_user_sshkeys', OrderedDict([('runner.sshkeys.init', [OrderedDict([('user_id', OrderedDict([('data', 'myusername')]))])])]))])
17:50 tedski shwaiil: oh, i didn't even catch that because of the newlines
17:51 tedski shwaiil: yes, 'kitty' is your id.. ids must be unique
17:51 tedski shwaiil: let me pastebin a better way
17:51 shwaiil tedski: sorry about taking your time
17:51 hunter joined #salt
17:51 __hudson__ joined #salt
17:51 Ryan_Lane I don't know what happened in the develop branch, but someone broke something pretty badly
17:51 Ryan_Lane simple states are taking 27 seconds to run
17:52 Ryan_Lane performance tests should really be added to the normal tests. if a change results in a major increase of simple state runs it should fail
17:52 Ryan_Lane this is an increase of like 21 seconds
17:53 tedski shwaiil: http://pastie.org/9175761
17:53 pdayton joined #salt
17:53 shwaiil tedski: thank you! just wondering why http://yamllint.com/ change it so much
17:53 tedski shwaiil: an id can have more than one state, as long as the states are unique.  i.e. you can't have 2 user states under teh same id
17:54 anuvrat joined #salt
17:54 shwaiil ok : )
17:54 tedski shwaiil: checkout salt-vim
17:54 tedski check out that is
17:54 diegows joined #salt
17:54 tedski it's not a linter by any means, but it helps
17:55 shwaiil Thank you!
17:55 tedski no prob
17:55 rupsky________ joined #salt
17:56 aw110f joined #salt
17:58 big_area joined #salt
18:00 moos3 can anyone tell me why this doesn't work in a .sls {% else if grains.get('location') == 'us-dev' and grains.get('role') == 'web' %}
18:02 Rojematic joined #salt
18:02 shwaiil hum, so we could actually deploy an app with salt too ? with this file feature and stuff ? I just changed in the master and updated everywhere
18:02 shwaiil I know this is not a deployment tool..but.
18:02 jimklo joined #salt
18:03 timoguin shwaiil: Salt is actually very popular for deployments
18:03 ashw7n joined #salt
18:03 shwaiil timoguin: yeah, I don't know anything yet..just learning the very basics
18:04 XenophonF dealing with software deployment is what got me looking at salt in the first place :)
18:04 forrest bretep, are you around?
18:04 shwaiil XenophonF: yeah. Makes your life easier now ?
18:04 shwaiil I've been using git-deploy
18:04 rojem joined #salt
18:04 shwaiil I do git push remote branch
18:04 shwaiil basically
18:04 XenophonF salt and poudrier
18:05 XenophonF I have RandalSchwartz to thank for cluing me into poudrier
18:05 XenophonF er, poudriere i mean
18:06 timoguin wikimedia has a deployment system built on Salt and Git: https://wikitech.wikimedia.org/wiki/Trebuchet/Design
18:07 Ryan_Lane upstreamed, as well: https://github.com/trebuchet-deploy
18:08 timoguin Ryan_Lane: I wanna see the web UI demo, but the page seems down: http://trebuchet.wmflabs.org/
18:08 forrest timoguin, there's also the vid
18:08 forrest https://www.youtube.com/watch?v=RhQsHEB4Fuc
18:08 Ryan_Lane ah. whoops
18:08 Ryan_Lane I should really not point to the dev instance :D
18:09 XenophonF hey viq - any idea why ntp-formula doesn't include service states?
18:09 RandalSchwartz yeah poudriere
18:09 timoguin that's some energetic music...
18:09 RandalSchwartz the word I can never spell until someone else does :)
18:10 XenophonF like, after configuring something like NTP from a salt state, is there a different way one is supposed to restart the service to apply the config?
18:10 XenophonF because i was using service.running + watch to do that
18:11 timoguin XenophonF: it should be added to the formula
18:11 XenophonF OK
18:11 timoguin assuming you're talking about the ntp client?
18:11 XenophonF yes
18:12 timoguin yea the formula needs that.
18:12 timoguin it's there for ntpd, just not the client
18:12 RandalSchwartz today is a salty day
18:12 RandalSchwartz I have to try to capture the rest of the configs and required packages for all my $client's servers
18:12 XenophonF ah thanks timoguin - i haven't looked at the server config yet
18:13 RandalSchwartz so that if I get hit by a bus, he can reproduce them
18:14 babilen joined #salt
18:16 resmike joined #salt
18:18 babilen joined #salt
18:18 shwaiil Learning the very basics here. Just wondering, on my minions I've run the command salt-minion -l debug, to "listen" the master. I'm right now with the console open. if I close this, I assume the "daemon" stops right ? How does this work ?
18:19 shwaiil actually I'm going to close the terminal window and try to run the "taste"
18:19 rupsky________ joined #salt
18:20 timoguin shwaiil: yea if you're running it in the foreground like that it'll close with you ctrl+c or close the term.
18:20 timoguin otherwise you can start the service
18:20 shwaiil timoguin: oh right. where can I find info about that on the docs ? I should've seen that :P
18:20 ashw7n joined #salt
18:22 timoguin check the walkthrough: http://docs.saltstack.com/en/latest/topics/tutorials/walkthrough.html
18:23 ashw7n joined #salt
18:23 shwaiil thank you : )
18:23 timoguin hmm that only has the -d option listed for the minion, but you can use your distro's service manager for the minion service just like the master examples
18:24 shaggy_surfer joined #salt
18:25 cheus joined #salt
18:25 shaggy_surfer anyone know how to watch:  timezone  ,  under a service and have the service restart if the time-zone changes.?
18:25 shwaiil Btw, can I then use my "state" with vagrant for example ? I didn't learned vagrant yet but [...] I want to learn it next.
18:25 shaggy_surfer I want to be able to have the log time stamps change on an amazon system for mongo when the time-zone changes.
18:26 cheus G'day. Is there a way to retrieve the full list of states included in a state run from inside a particular state?
18:26 jgarr ok, I'm using this salt-formula to configure the master and minion https://github.com/saltstack-formulas/salt-formula
18:26 jgarr but it's adding extra indent to my file_roots and pillar_roots sections
18:27 jgarr the first entry is indented properly, but all the extra ones (configured via pillar) are indented
18:27 shaggy_surfer I tried this but it doesn't seem to work:  https://gist.github.com/mf-collinhayden/1a851cb5bdf153cca56c
18:27 sroegner joined #salt
18:28 shwaiil From my master can I check if my minions are listening or available ? Let's say I forgot to start the salt-minion service in one box.
18:28 cheus shwaiil, Salt-key -L
18:28 timoguin salt-run manage.status is a good one
18:28 jgarr shwaiil: salt '*' manage.status
18:29 XenophonF left #salt
18:29 shwaiil super : )
18:29 jgarr doh, timoguin beat me
18:29 shwaiil 'manage.status' is not available.
18:29 timoguin the manage runner just wraps test.ping and compares the returns to all the available keys
18:29 shwaiil I need to run the manager in the minion ?
18:30 timoguin shwaiil: no, do salt-run manage.status
18:30 timoguin runners are scripts intended only to run on the master
18:30 shwaiil oh super : D
18:30 shwaiil Ok cool! I see how this stuff works. Looking forward to install LAMP tomorrow
18:30 jgarr shwaiil: my fault :)
18:30 shwaiil jgarr: it's ok man! Thanks a lot for your help!
18:31 to_json joined #salt
18:31 resmike joined #salt
18:31 shwaiil sorry, re-post, but since no one talk about it: Btw, can I then use my "state" with vagrant for example ? I didn't learned vagrant yet but [...] I want to learn it next.
18:32 shwaiil and also, is there a website like https://puphpet.com/ ? that would be neat
18:32 shwaiil I know about the formulas on github
18:32 shwaiil by the way..way is it called formulas and not state ? isn't state the formulas ?!
18:33 jgarr trying to add additional environments with pillar https://gist.github.com/rothgar/a75550264dde81147dd8 copying the example for this formula https://github.com/saltstack-formulas/salt-formula/blob/master/pillar.example but it doesn't indent the directories properly
18:34 ghartz joined #salt
18:34 timoguin shwaiil: yea, vagrant has a built-in salt provisioner.
18:35 timoguin it's very useful for testing states, especially with a masterless setup. it'll mount your states, bootstrap salt, and then run the states
18:35 RandalSchwartz yeah - using vagrant with salt now
18:35 jgarr the jinja template it's running is here https://gist.github.com/rothgar/322ebb64ad165db30802 (snippet taken from formula)
18:35 shwaiil timoguin: I didn't yet tried a masterless setup. Is it too different ?
18:35 RandalSchwartz unfortunately, it gets the NFS mounts in the wrong order
18:35 RandalSchwartz so I can't use it.
18:36 RandalSchwartz have to invoke salt manually after boot
18:36 timoguin shwaiil: it's not much different. basically just a config option in the minion config that tell the minion to look on its local filesystem for hte states
18:37 shwaiil timoguin: oh ok. humm...why is people calling states ... formulas ? Or I understood wrong, a state is a bunch of formulas ?!
18:37 jnials joined #salt
18:38 pmcg joined #salt
18:38 timoguin terminology has changed a bit over time. i think State Formula or SLS Formula is the settled-on terminology
18:38 timoguin the saltstack-formulas are supposed to be a best practice kind of reference
18:39 shwaiil so, when someone mentions "Formula", we're talking about the State or SLS file ?
18:39 timoguin usually when i say formula i'm talking about a specific formula on saltstack-formulas
18:39 timoguin which can be thought of as a collection of states
18:39 Eugene .sls as a file extension is just generically SaLtStack(I believe...?). "formula" means something that can be caled by the state module
18:40 shwaiil Ok
18:40 picker Is it corect way  to check roles in grain?> dev: 'G@roles:webserver':   - match: grain   - webserver.deploy
18:40 kermit joined #salt
18:40 saurabhs joined #salt
18:40 timoguin picker: looks right
18:42 shwaiil Thanks guys :) Have a nice day!
18:43 shaggy_surfer anyone know how to watch:  timezone  ,  under a service and have the service restart if the time-zone changes.?
18:43 big_area joined #salt
18:44 rupsky_________ joined #salt
18:44 bhosmer_ joined #salt
18:46 resmike joined #salt
18:49 AdamSewell joined #salt
18:52 picker Please take a look. Surely something small is missed. http://pastebin.com/mA9MmDvV
18:52 kermit joined #salt
18:52 gothix joined #salt
18:52 gothix joined #salt
18:52 tedski if i have pillar data in a list format, is there a way to do the equiv of ' '.join(pillar_list) in a state?
18:54 tedski found it {{ pillar_list|join(' ') }}
18:55 manfred tedski: you could also use the yaml pipe to put a multiline object in
18:55 tedski yeah, i need a comma separated list actually
18:55 manfred ahh ok
18:55 tedski so, - comps: {{ repo_comps|join(', ') }}
18:56 tedski that's how i'll use it with pkgrepo.managed
18:56 manfred yar
18:57 timoguin picker: you might want to try cmd.script rather than cmd.run
18:57 picker Will give a try
18:58 forrest what the hell
18:58 forrest this guy wrote some stuff to automate read the docs installations
18:58 forrest and he left it in the read the docs repo??
18:58 forrest hmm
19:01 resmike joined #salt
19:04 possibilities joined #salt
19:06 claytonk is it possible to call salt['mine.get']() in a pillar?
19:08 Rog joined #salt
19:08 picker timoguin: cmd.run Worked. Wondering how it finds the script to be run on minion? I guess script copies file to minion and then executes
19:08 picker I mean* cmd.script
19:09 sverrest joined #salt
19:09 timoguin yea i think that's how it works
19:12 bhosmer joined #salt
19:14 picker Other thing seems to be with matching grains. On running state.highstate with above config I got Comment: No Top file or external nodes data matches found
19:15 forrest picker, does it actually match something?
19:16 forrest you should confirm that grain is equal to what you think it is on the target machines
19:16 resmike joined #salt
19:17 picker In minion conf: grains:  roles:   - webserver
19:18 patarr joined #salt
19:19 forrest viq, huzzah
19:19 timoguin picker: i told you wrong about the top file. you don't need teh G@ portion
19:19 timoguin only the CLI needs that
19:19 picker Ok
19:20 uestra joined #salt
19:20 to_json joined #salt
19:21 viq forrest: :)
19:21 picker that worked
19:21 viq forrest: I really should find some time and finish that formula...
19:21 forrest hah yea
19:23 forrest viq, you aren't using read the docs internally are you?
19:24 ndrei joined #salt
19:26 resmike joined #salt
19:27 viq forrest: no, why?
19:27 sgviking joined #salt
19:27 viq forrest: it never crossed my mind that one could do that ;)
19:27 forrest I'm trying to find someone who has a package of it built
19:28 to_json joined #salt
19:29 viq forrest: you're looking for package or build instructions?
19:30 forrest a package
19:30 forrest I already manually installed it easily enough
19:31 forrest but I confirmed with the readthedocs guys they don't have a package for it
19:31 viq fpm to the rescue? Or are you looking for something more "standard"
19:31 forrest fpm doesn't work because there's no makefile
19:31 forrest I'd need to write one up
19:32 viq You can package a directory
19:32 forrest yea it doesn't work
19:32 forrest because it doesn't install the python deps properly
19:33 KyleG joined #salt
19:33 KyleG joined #salt
19:33 viq Oh. How fun
19:33 viq Maybe it's worth checking on ##infra-talk ?
19:33 bhosmer joined #salt
19:33 jcockhren python packaging eh?
19:33 patarr has anyone run a set up with a DNS alias of a server for the hostname 'salt'
19:33 forrest ehh not yet, I am gonna mess with it some more first, there's already some salt stuff for deploying it straight from git
19:33 jcockhren dh-virtualenv
19:34 forrest but apparently it isn't finished
19:34 forrest jcockhren, yea that is the plan
19:34 patarr I have an existing administration box, and i just want to alias it to salt. But I'm wondering if that will break things in saltstack...
19:34 jcockhren that and the usage of wheels
19:34 forrest patarr, that sounds.. dangerous
19:34 viq CNAME? I think it should work
19:35 forrest jcockhren, yea, it's more of a 'did anyone already do this work so I can avoid this work?'
19:35 forrest type thing
19:35 viq salt doesn't seem to do much fancy stuff with DNS
19:35 timoguin i can't think of any reason a CNAME wouldn't work
19:35 jcockhren forrest: right. packaging is a mess
19:35 forrest jcockhren, of course
19:37 jcockhren The closest I've gotten to sane and flexible is wheel
19:37 jcockhren though I wish there was a wheel2deb type of thing
19:37 jcockhren and I don't want to write it
19:37 MTecknology https://gist.github.com/MTecknology/7493dab0c6ecba296963 <-- I'm getting '''Passed invalid arguments: 'NoneType' object is not iterable''' This is right after the line '''Fetching file from saltenv 'base', ** skipped ** latest already in cache 'salt://moses/init.sls''' during state.highstate. The gist is that init.sls file.
19:38 picker How does master distinguishes the minion's env? like is it dev or prod.
19:38 MTecknology Any ideas what's wrong?
19:39 viq picker: you specify it in top.sls
19:39 dangra joined #salt
19:39 smcquay joined #salt
19:39 picker viq: and in minion?
19:40 viq picker: hm?
19:40 MTecknology You just do it in top.sls, not at the minion. If you want, look at my gist and you'll see how we use a grain for that.
19:40 picker The environment parameter?
19:40 MTecknology we create an environment grain, yes
19:41 viq MTecknology: does any of the grains match what you have there?
19:41 MTecknology It's not the best way, but it lets me give complete and total control of these boxes to the developers.
19:41 forrest MTecknology, can you do two if statements before an endif?
19:41 forrest where it isn't an elif
19:41 Ryan_Lane joined #salt
19:41 to_json joined #salt
19:42 MTecknology forrest: there... you found the cookie!
19:42 forrest wooo
19:42 MTecknology I lied
19:43 MTecknology forrest: line 10 has an endif
19:43 forrest yea, but it's after 2 if statements
19:43 forrest that's why I was asking
19:43 stanchan joined #salt
19:43 forrest can you do 2 if statements, before a single endif?
19:43 MTecknology oh, ya, I've done that before
19:43 forrest ok, then I'd say comment out all the statements
19:43 forrest see if it works then on a test
19:44 MTecknology I just got roped into this because our devs are having issues
19:44 forrest then start adding each loop in
19:44 forrest also
19:44 allanparsons joined #salt
19:44 forrest how does that first elif work?
19:44 cheus Is there a way to pass kwargs from a watch_in statement to the target state? (eg, if I wanted to pass a service.running "- reload")
19:44 forrest does it consider it as part of the first if statement?
19:45 allanparsons has anyone gotten this error on a cmd.run state?
19:45 allanparsons UnicodeEncodeError: 'ascii' codec can't encode character u'\u2002' in position 0: ordinal not in range(128)
19:45 forrest I don't get why they crammed it in the middle
19:45 picker It doesn't seems feasible to decide states using if else ? So first env and then roles and then other stuffs comes in
19:45 allanparsons http://pastebin.com/QE4Ld810
19:45 viq MTecknology: why not move that dev check to the end, pull it out of the web?
19:46 forrest allanparsons, does the terminal support unicode?
19:46 forrest viq, yea I am wondering the same thing
19:46 forrest it just makes it more confusing
19:47 allanparsons i dont believe so...
19:49 forrest allanparsons,  u' ' is what I see as the unicode text for that character
19:49 kiorky joined #salt
19:49 forrest so basically a space?
19:49 allanparsons yeah
19:49 allanparsons but where
19:49 forrest allanparsons, I don't know, I'd go through each space, and 'delete' it, then re-add it
19:50 forrest especially if you're pasting the command from somewhere else
19:50 allanparsons lol
19:50 allanparsons amazing
19:50 forrest ?
19:50 MTecknology viq: because that's what the developers decided... :(
19:50 forrest MTecknology, you need to change it for 'testing' purposes
19:50 viq MTecknology: they created this file?
19:50 forrest if they don't like it, let them troubleshoot it
19:51 MTecknology I'll -l trace is much more interesting
19:51 MTecknology viq: yup, I gave them a git repo and for the most part they've been doing very well at leaving me alone but building states that deploy the system
19:51 picker no one agrees with env thing?
19:52 MTecknology much more interesting - http://dpaste.com/1TEJ03A/
19:52 aw110f joined #salt
19:52 forrest I still say rip the if statements out, and give it a shot
19:52 forrest see if it still errors
19:54 stevednd whiteinge: thanks, I'll try to contribute some if I can find some time. I submitted pull request 12785 for the gem module and states documentation update. It was just a simple find/replace
19:55 MTecknology forrest: will do; I think this worked until I told them to add the check of 'var' in grains
19:55 MTecknology I'm gonna take a break first
19:56 forrest cool
19:56 allanparsons @forrest - that was it.. thanks!
19:58 forrest allanparsons, yea np.
20:02 danielbachhuber joined #salt
20:04 rupsky_________ joined #salt
20:04 cheus Is there a way to pass kwargs from a watch_in statement to the target state? (eg, if I wanted to pass a service.running "- reload")
20:05 Rojematic joined #salt
20:07 allanparsons lets say i have a list and need to construct json
20:07 allanparsons how do i omit the last "," ?
20:08 allanparsons i.e.:  [ { only: 1, element: 1}, ]
20:08 allanparsons I'm looping over a yaml pillar file
20:09 Ryan_Lane joined #salt
20:10 kermit joined #salt
20:11 allanparsons i.e:  http://pastebin.com/ZRU9LJA9
20:13 fragamus joined #salt
20:14 allanparsons OH SWEEET.  loop.last works
20:14 allanparsons {% if loop.last %}
20:15 moos3 in jinja {% elif grains.get('location') == 'us-dev' and grains.get('role') == 'gp' %}¬ this is correct syntax right ?
20:16 rjc joined #salt
20:17 allanparsons anyone know if this is complete?
20:17 allanparsons https://github.com/saltstack/salt/issues/6691
20:17 allanparsons or if work has been slated on it?
20:19 schmutz joined #salt
20:24 jrdx joined #salt
20:31 MTecknology forrest: viq: They found their oopsy
20:33 Ryan_Lane joined #salt
20:39 jhulten joined #salt
20:42 n8n joined #salt
20:45 stevednd does anyone know what's up with salt-jenkins? The links it gives are just returning 404. For instance my PR just failed and I got the link http://cookingwithsalt.org/job/salt/job/pr/job/build/47075/
20:45 jimklo joined #salt
20:46 jhulten_ joined #salt
20:47 jhulten_ joined #salt
20:47 JeroenH_ joined #salt
20:53 ipmb joined #salt
20:54 harobed joined #salt
20:55 dfinn1 joined #salt
20:57 dfinn1 we are seeing some random issues after upgrading our minions to salt-2014.1.3-1.el5.  at first I noticed that pkg.version was not returning correctly when querying from the salt master.  looking into it a little more, a large amount of our states are failing also on these same servers that are having problems with pkg.version.
20:57 dfinn1 http://pastebin.com/mPL6nQkQ
20:57 dfinn1 http://pastebin.com/78ggFEEP
20:58 dfinn1 it looks like all the states that are failing are ones that are trying to do something with packages
20:58 btorch when we tell a salt state to include an sls and then place that sls into a require .. that means that all the states on that sls will run right?
20:59 timoguin btorch: they should, yea
21:01 btorch ok so is there a point on doing this ? http://goo.gl/YLnuxa
21:01 btorch do I really need those pkg requires ?
21:02 btorch since they are already on the base and proxy sls
21:02 schimmy joined #salt
21:02 timoguin hmm maybe not. i wasn't aware there was an sls: require
21:02 timoguin goin' home
21:02 patarr can i run a master and minion on the same machine?
21:02 btorch patarr: sure
21:03 frasergraham joined #salt
21:04 hunter joined #salt
21:06 hunter joined #salt
21:06 ashw7n joined #salt
21:07 schimmy joined #salt
21:10 martoss joined #salt
21:11 sealibora joined #salt
21:11 garthk joined #salt
21:14 Ryan_Lane joined #salt
21:14 viq MTecknology: what was it?
21:14 possibilities joined #salt
21:18 faldridge joined #salt
21:21 sealibora joined #salt
21:21 forrest viq, ++ let us know what it was MTecknology
21:22 sgviking joined #salt
21:26 schimmy1 joined #salt
21:26 possibilities joined #salt
21:26 toastedpenguin1 joined #salt
21:29 acu joined #salt
21:34 schimmy joined #salt
21:37 possibilities joined #salt
21:37 frasergr_ joined #salt
21:50 tedski Using gitfs, I keep a topfile in each branch (environment).  One of those branches is our playground environment which has its own master and minions.  I'm trying to include a formula in the topfile in the "test" branch.
21:50 tedski formulae only have master (base) branch, though
21:50 tedski i tried: test:\n  '*'\n    - base: core
21:50 tedski using the syntax from include:
21:50 tedski that doesn't seem to be valid in the topfile
21:56 londo_ joined #salt
21:56 babilen tedski: You would require multiple branches (which map to environments) in that case.
21:56 tedski babilen: i have that
21:57 tedski babilen: and there's a topfile in each branch
21:57 tedski babilen: the way we have it setup is that we have base, stage, qa, test as our branches
21:57 babilen tedski: So, why do your formula only have a base environment then if you have multiple branches?
21:57 tedski babilen: think upstream formulas
21:57 kermit joined #salt
21:58 tedski babilen: which are intended to be included in fileserver_backend
21:58 tedski babilen: as whole git repos
21:58 babilen I *never* include formulas directly from github, but always clone them locally and then create branches as needed.
21:58 tedski we mirror them to our github enterprise then include, per the documentation :)
21:58 babilen Think about it, that would give everybody with access to that git repo root access to your systems
21:58 tedski how?
21:58 tedski sure, to the repo
21:58 tedski we lock that down
21:58 tedski because we mirror
21:59 tedski we promote changes via a coordinated pull from upstream and push to origin
21:59 babilen So, create the branches you need in your repos and you are done
21:59 TyrfingMjolnir joined #salt
21:59 tedski the include directive supports this already with "- env: state"
21:59 tedski which works fine... it's just this edge case
22:00 tedski branches, by convention, should differ from each other... else you'd merge them
22:00 tedski i might just call this edge case unsupported
22:00 aw110f in a state file I'm trying to set a variable with a list as a value
22:00 aw110f {% set DFS_NAME_DIRS = ['/home/hadoop', '/home/hadoop/image', '/mnt/hadoop-namenode'] %}
22:01 aw110f I want to iterate through each value
22:01 tedski {% for dir in DFS_NAME_DIRS}
22:01 tedski - {{ dir }}
22:01 tedski {% endfor %}
22:02 aw110f {% for DIR in {{ DFS_NAME_DIRS }} %}
22:02 aw110f {{ DIR }}/dfs/nn:
22:02 aw110f file.directory:
22:02 aw110f - user: hdfs
22:02 aw110f - group: hadoop
22:02 aw110f - mode: 775
22:02 aw110f - makedirs: True
22:02 aw110f {% endfor %}
22:02 aw110f oh so remove {{ }} when referencing it in the loop?
22:02 tedski aw110f: yup
22:02 possibilities joined #salt
22:03 patarr anyone using halite? Does it and salt inform you of when a state is uh.. misstated? Not sure what word to use. But it would be cool to have a dashboard to alert me of when someone makes some sort of config file tweak on a server and is then in an inconsistent state.
22:04 hunter joined #salt
22:06 frasergraham joined #salt
22:10 [diecast] joined #salt
22:10 fllr joined #salt
22:11 RandalSchwartz is grains['id'] the minion name?
22:11 to_json joined #salt
22:11 carmony basepi: wheres Utah_Dave these days:?
22:12 nkuttler RandalSchwartz: well, yeah, it's id. you can target it with the id
22:13 RandalSchwartz I'm thinking of having my pillar/top.shs have "base:\n - all\n {{ grains['id'] }}
22:13 RandalSchwartz so that way each of my five nodes would have a common, and also a specific
22:13 RandalSchwartz and the specific could include the more general
22:13 whiteinge that's a fairly common pattern
22:13 RandalSchwartz oh wait, can pillar files include others?
22:13 rojem joined #salt
22:14 whiteinge yes
22:14 RandalSchwartz can chris.insightcruises.com.sls include webserver ?
22:14 whiteinge they can also extend (to a degree)
22:14 RandalSchwartz this gets me around having to put grains files on each machine
22:15 schimmy joined #salt
22:16 schimmy joined #salt
22:17 aw110f tedski: thanks, seems to work but now running into other unrelated syntax error
22:17 frasergraham joined #salt
22:17 RandalSchwartz do I have to run some sync after modifying pillar?
22:17 lz-dylan hm. if I want to create a user using salt.states.user and include a password hash, how should I generate that?
22:17 lz-dylan n.b. this isn't on a production server (yet -- and I'm presuming there's a better way to do this on prod)
22:18 rgarcia_ joined #salt
22:18 whiteinge RandalSchwartz: saltutil.refresh_pillar
22:18 possibilities joined #salt
22:18 whiteinge er. i mean to say...
22:18 whiteinge !modules.saltutil.refresh_pillar
22:18 wm-bot4 http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.saltutil.html#salt.modules.saltutil.refresh_pillar
22:18 whiteinge \o/
22:18 schimmy1 joined #salt
22:19 fllr joined #salt
22:20 nkuttler lz-dylan: iirc same as http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.shadow.html#salt.modules.shadow.set_password
22:20 lz-dylan nkuttler: sweet deal, thanks. probably I should just do that from the commandline and not a state, huh?
22:21 nkuttler lz-dylan: yeah, i keep my hashes in pillars
22:21 lz-dylan nkuttler: which I haven't really explored yet. #newbie
22:21 schimmy joined #salt
22:21 Luke__ joined #salt
22:22 RandalSchwartz Ugh.  this isn't working
22:23 RandalSchwartz lemme see if I can find a way to pastebin this
22:23 basepi carmony: traveling
22:23 carmony basepi: ahhh
22:23 basepi carmony: openstack summit right now, methinks
22:23 carmony basepi: we're re-evaluating our physical load balancer setup
22:25 basepi sounds like fun!
22:25 carmony and looking at maybe moving to physical machines w/ a software load balancer like HAproxy
22:25 carmony wanted to get some opinions from peeps
22:25 diegows joined #salt
22:25 carmony on what they're doing or have seen being successful
22:26 whiteinge HAproxy is the shiz
22:26 n8n joined #salt
22:26 RandalSchwartz here's my pillars... why isn't it giving me "hosting" any more?
22:26 RandalSchwartz ... http://pastebin.com/rbRsVbU4
22:26 cewood joined #salt
22:26 patarr whiteinge: watcha using it for?
22:27 jab416171 lz-dylan, we keep our password hashes in states
22:27 RandalSchwartz that's "grep . *" in pillar
22:28 RandalSchwartz salt \* grains.items isn't showing any of my pillar data
22:28 whiteinge patarr: we're moving the docs servers behind haproxy...at some point
22:29 jgarr is there a globally available variable {{ hostname }} that I can inject into pillar or use in a state? I don't see anything in pillar.items
22:29 possibilities joined #salt
22:29 RandalSchwartz jgarr perhaps grains['fqdn']
22:29 RandalSchwartz or grains['id']
22:30 patarr whiteinge: for what purpose?
22:30 RandalSchwartz Oh wait... pillar = (their) grains + my (pillar) ?
22:30 workingcats joined #salt
22:30 jgarr the hostname isn't working for the id (not sure why) so I'm trying to inject the hostname into the id: field
22:31 RandalSchwartz any ideas on mine?
22:31 jgarr ahh, grains['nodename'] looks like it'll work
22:32 jgarr where does grains['host'] get pulled from? because that always shows localhost for my nodes
22:32 jgarr but grains['localhost'] is correct
22:33 RandalSchwartz ahh... getting this error . Specified SLS 'chris.insightcruises.com' in environment 'base' is not\
22:33 RandalSchwartz available on the salt master
22:33 RandalSchwartz and yet I have a chris.insightcruises.com.sls
22:33 RandalSchwartz what's up with that?
22:34 nkuttler RandalSchwartz: could it be a rendering error in that file? i think i've seen that happen, instead of getting a real error
22:34 nkuttler or maybe it was a yaml error, something like that anyway
22:34 RandalSchwartz can you look at my pastebin and tell me?
22:34 RandalSchwartz ... http://pastebin.com/rbRsVbU4
22:35 whiteinge RandalSchwartz: that may be a pathing issue. salt is looking for /srv/pillar/chris/insightcruises/com.sls
22:35 RandalSchwartz Oh ewww
22:35 RandalSchwartz and I don't have regex manip at that point, do I?
22:36 RandalSchwartz since jinja doesn't believe in regex!
22:36 whiteinge you do have access to string methods you could do a grains['id'].replace('.', '_')
22:36 RandalSchwartz Oh - that'd work
22:37 RandalSchwartz is that a python method?
22:37 whiteinge yeah
22:37 RandalSchwartz or does jinja have that?
22:37 whiteinge jinja isn't python but objects in jinja have access to the python methods on those objects
22:38 RandalSchwartz ahh
22:38 RandalSchwartz so you *can* likely do regex and crap on them?
22:38 whiteinge some crap, yes. i think for regex you'd have to make a wrapper execution module though
22:39 whiteinge to import the 're' module
22:39 patarr i just installed salt-master from epel and keep getting this error Unable to bind socket, error: [Errno 98] Address already in use
22:39 patarr And I see that the salt ports are being used by python, presumably the salt-master service thats running.
22:40 patarr oh. I see. Never mind.
22:40 delkins _statename.py FTW
22:41 delkins wait .py? I also yearned for straight regex
22:41 delkins split? how!
22:41 delkins _modules/statename.py that was the action
22:43 shwaiil joined #salt
22:43 lz-dylan jab416171: is that something that ever concerns you? my instinct is not to keep 'em in states so that states can be relatively public
22:43 shwaiil Hi
22:44 shwaiil Q: Today I installed Salt Master and Minions. Now, I'd like to do it Masterless. I'm checking the docs ( http://docs.saltstack.com/en/latest/ref/configuration/index.html ) didn't found. Where to find that ?
22:44 rojem joined #salt
22:45 n8n joined #salt
22:45 manfred shwaiil: http://docs.saltstack.com/en/latest/topics/tutorials/standalone_minion.html
22:47 shwaiil manfred, thanks for looking! so, do I still need to do the master configuration and minion configuration suggested here ? http://docs.saltstack.com/en/latest/ref/configuration/index.html
22:48 manfred you would just need the minion config iirc
22:50 shwaiil manfred, cool :) Thanks!
22:50 shwaiil I guess to learn I should just follow the tutorial section after the initial install
22:50 jab416171 lz-dylan, everyone can see my password hash in /etc/shadow anyway
22:50 shwaiil then use the docs for reference in the future and whenever needed.
22:50 jgarr anyone know how grains get the domain and host values? my fqdn always shows localhost.localdomain even though the hostname command and /etc/sysconfig/network are set up correctly
22:50 jab416171 lz-dylan, if you have access to our salt states, you have access to a salted server anyway, so it's not a security risk
22:52 jgarr nvm, I'm guessing it's reading the first entry from /etc/hosts
22:52 hunter joined #salt
22:53 TyrfingMjolnir joined #salt
22:54 patarr what is the @runners group in relation to salt/halite?
22:54 Ryan_Lane joined #salt
22:56 jgarr yep, looks like it only reads from the first entry in /etc/hosts
22:57 garthk joined #salt
23:01 lz-dylan jab416171: makes sense. cool, I'll keep that in mind.
23:02 jab416171 lz-dylan, at first when a sysadmin asked for my hash I was skeptical, but I figured since everyone else is doing it it must not be too bad, then I realized everyone's hash is in /etc/shadow anyway.
23:03 lz-dylan jab416171: the thing is, I'd like to be able to redistribute the more useful/stable of my work publicly, and so extracting user-specific info to a pillar/elsewhere is appealing. but just to get started...
23:04 ashw7n joined #salt
23:04 rojem joined #salt
23:05 JeroenH_ joined #salt
23:07 lz-dylan wrong channel but does anyone know how to properly generate salted sha512 pw hashes on mac os? using the perl or python one-liners suggested everywhere (including salt docs) just gives me eight or nine characters that start with $6$
23:07 RandalSchwartz how often do I need to sync the pillar?  Every time I change things?
23:07 RandalSchwartz would it pick it up eventually?
23:08 elfixit joined #salt
23:08 rojem joined #salt
23:09 whiteinge RandalSchwartz: pillar is refreshed as part of some normal operations, like running a highstate. i don't have the full list (we should get that documented). i don't *think* there's anything that happens on a timer
23:09 shwaiil Following the masterless tutorial. I found that after installing the minion, I don't have /srv/salt directory. Not sure if that's a sign that something went wrong, or If I can just do it myself (that's what I'm going to do). http://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html
23:09 andrej basepi - are you here?  Just wondering about https://github.com/saltstack/salt/issues/12396 and "something is holding on to some of those files" ...
23:10 forrest Your foot looks necrotic andrej
23:11 whiteinge RandalSchwartz: running pillar.items also causes a refresh
23:11 andrej What happens to a job when one or several of the minions it was meant for doesn't come on-line for a while?
23:11 andrej thanks forrest :P
23:11 andrej let me asure you it's in mint condition ;}
23:12 andrej handles around 50-70km of running a week just fine, with a weekly average distance spent on foot of ~ 130km
23:13 forrest yea I saw you were wearing a real shoe when I clicked on the icon
23:13 forrest but from the issue page
23:13 forrest all I saw was this necrotic foot
23:13 whiteinge shwaiil: that dir isn't created by default, so you did the right thing
23:14 andrej Heh.  Those are vibram fivefingers, in this case the seeya model :)
23:14 shwaiil Q: Sorry, what does state.highstate actually means ? Context: salt-call --local state.highstate -l debug
23:14 shwaiil "highstate"
23:14 shwaiil The only thing left is to provision our minion using the highstate command. To initiate a highstate run, use the salt-call command:
23:15 shwaiil highstate :T
23:22 fllr joined #salt
23:24 fllr joined #salt
23:30 SaveTheRbtz joined #salt
23:32 ashw7n_ joined #salt
23:35 jab416171 lz-dylan, that's the correct salted password (the $6$ and then the rest of the line)
23:35 RandalSchwartz cool... got my pillars the way I want them
23:35 jab416171 lz-dylan, if you're not comfortable with publically distributing your passwords, then yeah, I would put it in a pillar
23:35 RandalSchwartz invididual hostnames now include more general files, so I can DRY
23:35 RandalSchwartz then use those to influence my states
23:36 shwaiil Comment: The following packages failed to install/update: apache
23:36 shwaiil * http://docs.saltstack.com/en/latest/topics/tutorials/standalone_minion.html
23:36 shwaiil I just got that error
23:36 uestra joined #salt
23:37 shwaiil my state http://pastie.org/private/v945p5k8o0xan6eszfnucg
23:38 shwaiil basically I got that from http://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html
23:38 shwaiil my os is ubuntu 12.04
23:39 smcquay joined #salt
23:40 shwaiil I changed it to apache2
23:47 fllr joined #salt
23:47 jimklo joined #salt
23:52 cruatta joined #salt
23:52 failed_array joined #salt
23:53 RandalSchwartz so now that I have enough info in my pillar to distinguish various roles, I no longer need to match against a hostname in my states/top.sls, I suspect
23:53 jimklo joined #salt
23:56 JordanRinke How would I do 2 replacement operations on the same file, in the same sls?
23:56 RandalSchwartz use name:
23:56 RandalSchwartz as in fix_1: \n - name: /the/file \n [other things]
23:57 RandalSchwartz and fix_2: \n - name: /the/file \n [other things]
23:57 JordanRinke ah
23:57 RandalSchwartz name them globally though
23:57 OffTheRails joined #salt
23:57 RandalSchwartz so I tend to have a pretty long ID
23:57 RandalSchwartz nice - I'm actually able to answer questions here now from ... (drumroll) experience!
23:58 hunter joined #salt
23:58 otter768 joined #salt

| Channels | #salt index | Today | | Search | Google Search | Plain-Text | summary