For any one interested, here is the playbook
---
- hosts: localhost
gather_facts: False
vars_prompt:
- name: range
prompt: Enter range of EPCs (e.g. 1..5)
private: False
default: "1"
pre_tasks:
- name: Set node id variables
set_fact:
start: "{{ range.split('..')[0] }}"
stop: "{{ range.split('..')[-1] }}"
- name: "Add hosts:"
add_host: name="vm{{item|int +1}}" groups=just_created
with_sequence: "start={{start}} end={{stop}} "
- hosts: just_created
gather_facts: False
tasks:
- name: echo sequence
shell: echo "cmd"
On Sunday, August 17, 2014 1:42:48 PM UTC-7, Imran Khan wrote:
>
> I am liitle new to ansible so bear with me if my questions are a bit basic.
>
> Scenario:
>
> I have a few group of Remote hosts such as [EPCs] [Clients] and [Testers]
> I am able to configure them just the way I want them to be.
>
> Problem:
>
> I need to write a playbook, which when runs, asks the user for the
> inventory at run time. As an example when a playbook is run the user should
> be prompted in the following way: "Enter the number of EPCs you want to
> configure" "Enter the number of clients you want to configure" "Enter the
> number of testers you want to configure"
>
> What should happen:
>
> Now for instance the user enters 2,5 and 8 respectively. Now the playbook
> should only address the first 2 nodes in the group [EPCs], the first 5
> nodes in group [Clients] and the first 7 nodes in the group [Testers] . I
> don't want to create a large number of sub-groups, for instance if I have
> 20 EPCs, then I don't want to define 20 groups for my EPCs, I want somewhat
> of a dynamic inventory, which should automatically configure the machines
> according to the user input at run time using the *vars_prompt* option or
> something similar to that
>
> Let me post a partial part of my playbook for better understanding of what
> is to happen:
>
> ---
> - hosts: epcs # Now this is the part where I need a lot of flexibility
>
> vars_prompt:
> name: "what is your name?"
> quest: "what is your quest?"
>
> gather_facts: no
>
> tasks:
>
> - name: Check if path exists
> stat: path=/home/khan/Desktop/tobefetched/file1.txt
> register: st
>
> - name: It exists
> debug: msg='Path existence verified!'
> when: st.stat.exists
>
> - name: It doesn't exist
> debug: msg="Path does not exist"
> when: st.stat.exists == false
>
> - name: Copy file2 if it exists
> fetch: src=/home/khan/Desktop/tobefetched/file2.txt
> dest=/home/khan/Desktop/fetched/ flat=yes
> when: st.stat.exists
>
> - name: Run remotescript.sh and save the output of script to output.txt on
> the Desktop
> shell: cd /home/imran/Desktop; ./remotescript.sh > output.txt
>
> - name: Find and replace a word in a file placed on the remote node using
> variables
> shell: cd /home/imran/Desktop/tobefetched; sed -i
> 's/{{name}}/{{quest}}/g' file1.txt
>
> tags:
> - replace
>
>
--
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/e9b4b576-e3ad-482c-97c0-e3a9fcaf2ba3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.