play_hosts

348 views
Skip to first unread message

sturban

unread,
Jul 6, 2014, 9:06:43 AM7/6/14
to ansible...@googlegroups.com
Hi,

I am a n00b and I am trying to create a CA playbook that first locally creates certs, keys etc (using easy-rsa's pkitool) and then deploys these to the different play_hosts. -I might be going about this the wrong way, but is there a way to register the play_hosts in a list that can then be used when I change play_hosts to be just localhost, and then when I do the deploy go back to the original play_hosts?  


---
- hosts: all
  sudo
: yes
  tasks
:
 
- name: register current play_hosts for later
    ping
:
   
register: play_hosts_all    # this doesn't work obviously
 
- hosts: localhost
  connection
: local
  sudo
: yes
  tasks
:
 
- name: create keys/certs
    command
: pkitool {{ item }}
    with_items: {{ play_hosts_all }}

- hosts: {{ play_hosts_all }}
  sudo
: yes
  tasks
:
 
- name: deploy key/cert/...
    copy
: src= ...  dest= ...




Xtratherm Limited is a limited company registered in Ireland. Registered number: 331130. Registered office: Kells Road, Navan, Co. Meath. Directors: D.E. Hynes, E.J. Hynes, S.K. Steenson, J. Keegan, B. Rafferty, T. Hynes. VAT Registration: IE6351130B
Xtratherm UK Limited is a limited company registered in England and Wales. Registered number: 4404208. Registered office: Holmewood Industrial Park, Park Road, Chesterfield, Derbyshire S42 5UY. VAT Registration: GB787574856
Please note that [Xtratherm Limited/Xtratherm UK Limited] may monitor e-mail traffic data and content of e-mail for the purpose of security and training.

Brian Coca

unread,
Jul 6, 2014, 11:03:38 AM7/6/14
to ansible...@googlegroups.com
you already have a play_hosts variable with the 'current active hosts' in the play​, but it will be reset every play.

In this case I would just rewrite the play to use:

  with_items: groups['all']

sturban

unread,
Jul 6, 2014, 12:46:14 PM7/6/14
to ansible...@googlegroups.com

​-The problem with 'with_items: groups['all']' is that it takes that directly from /etc/ansible/hosts rather than using whatever hosts-pattern that was supplied on the command-line - i.e. '--limit ​somehosts'

# somehosts.yml
---

- hosts: all

 sudo: yes

 vars:

   allhosts: "{{ hostvars.keys() }}"

 tasks:

 - name: all the current hosts

   debug: var=allhosts

- hosts: localhost

 connection: local

 sudo: yes

 tasks:

 - name: allhosts is reset/empty because this is a new play

  debug: var=allhosts

 - name: hosts in all-group

   debug: var="{{ item }}"

   with_items: groups['all']


$ ansible-playbook somehosts.yml --limit not-all-group


-The above playbook is apparently TWO plays and the var allhosts doesn't survive between them even though it was set in the same yml-file. -Is there a way of saving ""{{ hostvars.keys() }}""  between plays? (Other than saving it to a file). -Ideally I would like the reverse of failed_hosts as it is after first play above. 
 

sturban

unread,
Jul 7, 2014, 8:18:13 AM7/7/14
to ansible...@googlegroups.com
What should current_host be replaced with so that the below only runs for the host localhost? 

---

- hosts: all

 sudo: yes

 tasks:

 - name:play_hosts

  debug: var=play_hosts
   
when: current_host == "localhost"




Brian Coca

unread,
Jul 7, 2014, 8:21:52 AM7/7/14
to ansible...@googlegroups.com
when: inventory_hostname == 'localhost'​

Michael DeHaan

unread,
Jul 7, 2014, 3:25:00 PM7/7/14
to ansible...@googlegroups.com
"  with_items: groups['all']"

I wouldn't.   I'd use the host loop since it's already there.

- hosts: all
  tasks: 
    - local_action: ...





--
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CADn%2BHsxi1Xc2-BPmxfese12yCrWviigwXS7XsMPxbCM6ey%2BoOQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages