Hi Michael, Team, One more question I am afraid - is there any way I can share templates between roles?
I tried putting my template in common/templates but it didn't work? Thanks! Mark On 24 February 2014 12:09, Mark Butler <[email protected]> wrote: > Hi Michael, > > Sorry about the SO mix-up. > > The reason I don't want to define it at the inventory or group level is it > isn't associated with them - it's associated with the role - because the > service wherever it runs will use the same jars - and because the jars > often have version numbers in that will change slowly with release - so it > doesn't make sense to pass them in every time but also it makes sense to > have them in a config so they can be changed without breaking the template. > > Actually, it turns out it's easy and I was being stupid because the "best > practice" document does say that I can create vars at the role level (as > Leucos pointed out, thanks!). My next question was going to be if roles can > share vars but I am guessing by your reply above they can via the common > task just like handlers. > > For the list and map, this is how I would do it Python - I'm just keen to > avoid duplicate config values. > > build_server_path = 'http://builderserver/path' > dest_path = '/dest/path/' > jars = {'pathA':'jarA', 'pathB': 'jarB', 'pathC': 'jarC'} > > # jars have path on build server because they come from different modules > urls = [build_server_path + k + '/' + jars[k] for k in jars] > > # but for service execution put them one directory and generate classpath > to simplify things > dest_jars = ['/dest/path/' + jars[k] for k in jars] > classpath = ':'.join(dest_jars) > > download(urls, dest_path) > set_classpath(classpath) > > Thanks, > > Mark > > > On 24 February 2014 11:55, Michael DeHaan <[email protected]> wrote: > >> >> >> >> On Mon, Feb 24, 2014 at 2:45 PM, Mark Butler >> <[email protected]>wrote: >> >>> Hello team, >>> >>> I am getting started with ansible but I have a number of questions. >>> Apologies in advance for the rather noob questions: >>> >>> >>> 1. In my inventory, is there anyway I can specify a single domain for >>> all the hosts e.g. >>> >>> [myhosts] >>> hostA >>> hostB >>> >>> rather than >>> >>> [myhosts] >>> hostA.example.com >>> hostB.example.com >>> >>> Given the requirement that I might be run tests from outside the domain? >>> >> >> >> There is not a way to set the domain name suffix on a group all together. >> >> OS mechanisms on short filenames (i.e. resolv.conf) will apply >> >> >>> >>> >>> 2. Many of my roles need to call supervisor when they have finished so >>> they all use the same handler: >>> >>> --- >>> - name: restart supervisor >>> service: name=supervisor state=restarted >>> >>> However at the moment I have the same duplicated handler file for each >>> role - how can I avoid this and have a single handler file? >>> >> >> Yes, you can define the handler in a common role and just use it once. >> >> It's ok if the role doesn't have a tasks file too. >> >> >>> >>> >>> 3. Is it possible to create strings from list? >>> >>> I need to create a classpath variable - this is how I do it currently: >>> >>> classpath: "{{ dest }}jarA.jar:{{ dest }}jarB.jar:{{ dest }}jarC.jar:{{ >>> dest }}jarD.jar" >>> >> >> Yes! See the "set_fact" module in the module docs, or just define a >> variable like so anywhere else in Ansible. >> >> Variables are lazy-evaluated at the time of use. >> >> >>> >>> In Python I could use a loop to do this. Is there any way to do this in >>> Ansible? >>> >>> >>> 4. Do map style structures exist? >>> >>> Similarly, when I am getting these jars I use a list like this - ideally >>> it would be better to use a map, then generate the list from the map to >>> avoid configuration duplication. Is there any way to achieve this? >>> >>> - name: my service | Get jars >>> action: get_url url={{ build_url }}lastSuccessfulBuild/artifact/{{ >>> item }} dest={{ dest }} mode=0440 >>> with_items: >>> - pathA/jarA >>> - pathB/jarB >>> - pathC/jarC >>> - pathD/jarD >>> >> >> So what you have above works. >> >> What would be in your map/dictionary? You can definitely iterate across >> a list of dictionaries and hopefully I can help explain further -- just >> need a bit more context. >> >> Thanks! >> >> >>> >>> Thanks in advance, >>> >>> Mark >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ansible Project" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/ansible-project/58e4fa83-8ce3-41fc-a6f6-48e8c2f52f3a%40googlegroups.com >>> . >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "Ansible Project" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/ansible-project/7N9qqACa3lI/unsubscribe >> . >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To post to this group, send email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/CAEVJ8QMT3390_okm6JZmN3tqZ5gejG7n5ufM9qXwXsnBYBauZg%40mail.gmail.com >> . >> >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAC_tV58e8%2B2ww_vcm_VEQPe-UwXE_PMZt4pMzOFnmRmhxDROoA%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.
