From c5d2f6b0d32b958bcd0365dbc341bb98a3aa3257 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Fri, 12 Oct 2012 20:07:05 -0400 Subject: [PATCH] implement lookup plugins for arbitrary enumeration over arbitrary things. See the mailing list for some cool examples. --- CHANGELOG.md | 2 ++ docsite/searchindex.js | 2 +- lib/ansible/playbook/__init__.py | 9 +++-- lib/ansible/playbook/task.py | 32 ++++++++++++++--- lib/ansible/runner/__init__.py | 34 ++++++++++++++----- lib/ansible/runner/action_plugins/copy.py | 13 ++++++- lib/ansible/runner/action_plugins/template.py | 5 +++ lib/ansible/runner/lookup_plugins/__init__.py | 0 lib/ansible/runner/lookup_plugins/fileglob.py | 30 ++++++++++++++++ lib/ansible/utils.py | 8 +++-- library/copy | 4 +-- library/file | 12 +++++-- library/fireball | 1 - test/TestRunner.py | 11 ++++-- 14 files changed, 135 insertions(+), 28 deletions(-) create mode 100644 lib/ansible/runner/lookup_plugins/__init__.py create mode 100644 lib/ansible/runner/lookup_plugins/fileglob.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 976e4eb467..27cb65b176 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Highlighted Core Changes: * fireball mode -- ansible can bootstrap a ephemeral 0mq (zeromq) daemon that runs as a given user and expires after X period of time. It is very fast. * playbooks with errors now return 2 on failure. 1 indicates a more fatal syntax error. Similar for /usr/bin/ansible * server side action code (template, etc) are now fully pluggable +* ability to write lookup plugins, like the code powering "with_fileglob" (see below) Other Core Changes: @@ -44,6 +45,7 @@ Highlighted playbook changes: * when using a $list variable with $var or ${var} syntax it will automatically join with commas * setup is not run more than once when we know it is has already been run in a play that included another play, etc * can set/override sudo and sudo_user on individual tasks in a play, defaults to what is set in the play if not present +* ability to use with_fileglob to iterate over local file patterns Other playbook changes: diff --git a/docsite/searchindex.js b/docsite/searchindex.js index 0b06fe71a7..5dc4084f0c 100644 --- a/docsite/searchindex.js +++ b/docsite/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{facter_operatingsystem:9,kickstart:9,comprimis:[],poorli:[],four:7,prefix:[9,8,4,6],sleep:9,forget:9,whose:9,tweet:[],ansible_default_ipv4:4,ebuild:0,ansible_default_ipv6:[],aur:0,under:[9,6],spec:6,no_boot:[],everi:[1,2,4,6,9,10],risk:9,vastli:6,ansible_virtualization_rol:[],redact:[],upstream:[],affect:[5,4,6],virbr0:[],macaddress:[],ansible_config:10,showcas:5,cmd:[],supervisorctl:4,ansible_librari:[],shlex:5,vars_prompt:[9,1],saltstack:[],x86_64:8,"675315501dac":[],awwxvv:[],seper:[7,9,4,6],direct:[4,6],chef:4,consequ:[],second:[9,8,4,10],tag_key_valu:8,blue:9,hide:9,thunder:[],children:7,constrast:[],"new":[5,4],net:[0,2,4,5,7,8,10],ever:[7,8,5,6],told:6,elimin:[9,10],unpars:5,abov:[9,8,5,6,10],controlmast:0,eckersberg:2,hera:[],never:[5,8,4],here:[0,1,4,5,6,8,9,10],herd:[],met:4,"malm\u00f6":[],path:[1,4,5,6,7,8,9,10],interpret:7,datetim:5,permit:[],aka:[9,4],ansible_ssh_arg:0,somethingels:9,cfengin:[],brought:[],substr:4,unix:[],cobblerd:8,ec2_:8,total:6,univ:[],unit:5,highli:5,describ:[5,1,6],would:[0,1,4,5,6,7,8,9,10],h3d850bdf:[],ansible_memtotal_mb:[],noarch:0,program:[5,9,4,6,2],overhead:[],until:[9,4],typo:5,recommend:[5,4,1],type:[5,9,8,4],tell:[7,4,10],notif:[],notic:[],warn:5,phone:[],exce:[],ec2_architectur:8,relai:6,ansible_transport:0,must:[5,9,8,4,6],join:[],restor:4,setup:[0,1,4,5,6,8,9],work:[0,1,4,6,7,8,9,10],anotherdb:4,erb:[],virttyp:4,ansible_ssh_host_key_rsa_publ:[],root:[0,1,4,6,9,10],scpnmy8rks7fyk8ulx0pei:4,os_default:9,give:2,rpath:[],indic:[4,6],app_serv:9,somefil:6,caution:4,want:[0,1,2,4,5,6,8,9,10],end:[5,4,6],hoc:[4,6,10],quot:[9,10],song:[],how:[1,2,4,5,6,7,8,9,10],hop:[],yum:[0,1,4,5,6,9,10],perspect:8,updat:[9,4,10],dialect:[],recogn:[6,10],passwordless:10,after:[1,4,5,6,7,8,10],lab:[],diagram:[],befor:[0,4,5,6,9,10],wrong:[],ohai_:[4,6],hw_uuid:[],ilo_login:[],ec2_image_id:8,arch:0,parallel:[9,4,6,10],attempt:[0,4,6],addresstyp:[],interpol:9,ansible_product_seri:[],bootstrap:4,credenti:[4,10],exclud:7,greek:[],unpaus:4,maintain:[0,8,5],environ:[0,9,8,4,10],enter:9,exclus:9,idontknow:[],order:[9,4,6,10],origin:4,frontend:9,softwar:[9,8,4,1,10],over:[0,4,7,8,9,10],failur:[5,9,8,4,6],orang:2,becaus:[1,2,4,5,8,9],fifo:4,ec2_previous_st:8,rpmbuild:0,ansible_interfac:[],privileg:4,zeu:[],gather_fact:[9,4],vari:9,myfil:4,streamlin:9,exit_json:5,cli:[8,10],img:[],fix:0,better:[0,4,10],offic:[],persist:4,mydb:4,easier:[5,1,2,10],them:[0,1,2,4,5,6,7,9],thei:[4,5,6,7,8,9,10],fragment:4,etc_acme_conf_acm:1,safe:6,ec2_ten:8,"break":6,band:[],glorifi:[],jinja2:[0,9,4,6],ec2_ip_address:8,mgmt:8,httpd_sys_content_t:[],ec2_region:8,choic:[0,5,4],vidal:[],bonu:8,timeout:[9,4],each:[1,2,4,5,6,7,8,9],debug:[4,2],side:[],mean:[2,4,5,6,8,9],list:[0,1,2,4,5,6,7,8,9,10],saturdai:4,group:[0,1,2,4,5,6,7,8,9,10],playbooks2:4,logo:[],ommit:4,some_password:9,contend:[],network:9,dss:4,content:[0,1,3,4,5,6,7,8,9,10],dsl:[],adapt:[8,4],got:[],forth:6,smart:[4,10],a1b1c1d1:8,site_fact:[9,5],ntp:[7,4],nightmar:[],situat:4,free:[0,9,8,4],standard:[5,4,7],dotnet:2,fixm:[],"_to":[],hw_product_nam:[],md5:5,reconfigur:[9,1],openssh:0,traceback:5,isv:[],iso:[],isn:[],rang:[7,4,10],render:4,clariti:[],wast:[],restrict:5,hook:[],instruct:[0,5],alreadi:[0,4,5,6,8,9],van_halen_port:6,apt_repositori:4,massiv:[],primari:4,rewritten:[],top:[9,5,1,6],sometim:[9,4],destination_vari:8,master:8,too:[8,5,2],hw_eth_ilo:[],similarli:[8,9],john:2,outag:9,listen:4,servi:[],iptabl:[],ansible_memfree_mb:[],tool:[0,8,9,10],took:[],"80ghz":[],somewhat:8,technic:[0,8,4],freemem:4,basho:[],target:[10,7,4,1,6],keyword:[9,4],provid:[1,2,4,5,6,8,9],older:4,tree:[5,8,4],project:[0,1,2,5,6,9],matter:10,ansible_distribution_releas:[],minut:[4,10],uses_cv:2,recheck:5,provis:4,fashion:[],yesno:[],"_authorized_kei":[],runner:8,ram:[],mind:5,mine:4,raw:[0,4],aforement:7,seem:[9,6],seek:4,someapp:4,vga:[],ec2_spot_instance_request_id:8,contact:[0,8,4],even:[0,8,9,6,7],"40ff":[],though:[0,1,4,5,6,8,9],bruce:0,limitless:9,what:[0,1,2,4,5,6,8,9,10],regular:[4,6],motd_cont:9,bsd:0,boxsubscrib:[],simplic:[],don:[0,1,4,5,6,7,9,10],doc:[5,8,4],doe:[0,4,5,6,7,8,9,10],declar:6,wildcard:7,libpq:4,came:8,cobbler_external_inventori:[],abl:[9,4],random:6,syntax:[3,1,2,5,6,9,10],kerber:0,pkg:[9,4,6,10],radic:[],identifi:4,pki:[],bail:4,ec2_private_ip_address:8,priv:4,involv:5,absolut:[4,10],northeast:7,acquir:[],menu:[],explain:5,configur:[0,1,2,4,6,7,8,9,10],apach:[9,4,6,10],ec2_instance_typ:8,ec2_state_reason:8,ldap:8,folder:4,stop:[0,1,2,4,5,6,7,8,9,10],amazon:8,report:4,saturn:[],cellspac:[],bar:[7,8,6],host_var:7,excel:[7,9],method:[8,10],reload:4,bad:5,thessaloniki:[],richer:[],resist:1,result:[5,9,8,4,6],respons:4,fail:[5,9,8,4,6],hash:[7,9,8,5,2],load_balanc:6,hammer:[],best:[3,1,4,5,6,8,9],subject:[9,4],brazil:[],said:4,heterogen:1,databas:[9,8,4,6],discoveri:4,figur:[],simplest:[8,5],awai:9,irc:[0,2,4,5,7,8,10],approach:[9,8,4],attribut:[9,4],login_us:4,manpag:5,extens:[],unabl:[],kitchen:[],accident:[],easi:[0,1,4,5,7,9,10],ilo:[],howev:[0,5,10,7],against:[7,9,6],logic:[],somelist:9,login:[4,6],com:[0,5,8,4,7],compromis:[],assur:[9,6],foobar:4,height:[],guid:[],assum:[7,8,4],ether:[],speak:4,recomand:4,sucessfulli:4,multiplay:[],ansible_library_path:5,three:[7,4],been:[8,4,10],much:[2,4,6,8,9,10],interest:[0,8],basic:[0,1,2,4,5,6,7,8,9,10],httpsusernam:[],ansible_bios_d:[],tini:9,quickli:10,life:[],recomend:5,nobodi:5,ani:[0,1,4,5,6,8,9,10],add_back_to_pool:9,mysql_us:4,dave:[],enterprisei:8,child:[],cdrom:[],emploi:2,ugli:9,exception:[],east:8,servic:[1,4,5,6,7,8,9,10],properti:4,ec2_security_group_id:8,vars_fil:[9,1,6],aim:[],ain:[],p68:[],tabl:[7,8,4],contributor:[],cmdline:[],conf:[9,8,4,1,6],module_nam:[7,8],somekei:5,sever:[8,4,6,2],weekdai:4,inventori:[0,1,3,4,6,7,8,9,10],incorrectli:4,perform:[0,9,4,6],suggest:4,make:[0,1,4,5,6,7,8,9,10],mayb:[],complex:[9,4,6],split:[7,5],complet:[1,2,5,6,8,9],wheel:[9,4],ansible_arch2:[],fragil:[],selevel:4,rail:[],hand:9,rais:[9,5],ownership:10,refin:[],tune:[9,10],speakerdeck:[],kept:6,scenario:8,thu:4,ansible_:9,hypothet:[],deal:[5,4],tho:[],client:4,"_concatenated_valu":[],thi:[0,1,2,4,5,6,7,8,9,10],endif:9,programm:8,everyth:[0,9],left:[],protocol:4,just:[0,1,2,4,5,6,8,9,10],photo:[],laptop:8,human:[6,2],braces_syntax:[],yet:[0,8,4,10],languag:[0,2,4,5,6,7,8,9],reboot:[4,6,10],expos:1,had:9,spread:[],board:8,els:[0,5,9,4,6],ffffff:5,save:[5,9,4,6],hat:[],gave:[],opt:4,applic:[9,8,4,6],hw_guest_full_nam:[],supervisord:4,quirk:2,wai:[0,1,4,5,6,7,8,9],fusion:[],background:10,measur:[],daemon:4,specic:5,specif:[1,4,5,6,7,8,9,10],arbitrari:9,manual:6,remind:[5,9,4,1],unstabl:[],el6:[],unnecessari:[],groups_logo_sm:[],www:[7,4],right:[],old:4,ansible_form_factor:[],maxim:[],dead:[],born:[],intern:[8,5],heritag:[],successfulli:[8,4],txt:[4,10],forcibl:[],bottom:6,cnf:4,tracker:0,somelog:4,foo:[4,6,7,8,9,10],localhost:4,core:[5,4,10],plu:[],sensibl:0,web2:8,web1:8,promot:[],repositori:[5,8,4,1],peer:[],post:4,"super":[],plug:8,sshd:[],postgresql:4,eat:10,surround:[],simul:9,"2ydx8":4,commit:1,produc:[5,4],duke:[],ppa:[0,4],xyz:10,encod:4,down:[8,4,6],slurp:4,wrap:[],seboolean:4,rhel6_64guest:[],install_recommend:4,storag:7,eth0:[],ec2_vpc_id:8,git:[0,1,4,5,7,9,10],fabric:[],suffici:9,support:[0,1,4,5,6,8,9,10],nova:8,happi:[],avail:[0,1,2,4,5,6,7,8,9,10],gif:[],reli:9,gid:4,wordpress:6,editor:5,call:[2,4,5,6,7,8,9],war:[],fork:[8,9,10],head:[4,10],python26:0,form:[5,9,4,6,2],offer:[],forc:4,batman:0,forg:[],somehow:4,groupfil:7,safeguard:[],"true":[5,9,4,6,2],freenod:[0,2,4,5,7,8,10],absent:[5,4,1,10],inquir:5,bargain:4,mtu:[],ansible_fqdn:[],rerun:6,ansible_bios_vers:[],featur:[0,1,4,6,7,8,9],"abstract":[],fedoraproject:[],cobbler:8,door:[],ship:[5,8,4],check:[5,9,4,10],assembl:4,self_destruct_countdown:7,encrypt:4,meanwhil:[],tip:[7,9,5,1,6],role:[9,4,1,6],test:[0,5,8,4,9],tie:8,unlimit:[],maxrequestsperchild:7,assmebl:4,relat:[],intend:5,phoenix:7,devop:[],intent:[],consid:[5,1,6],sql:4,doubl:10,receiv:[],faster:[9,5],hw_memtotal_mb:[],anywher:[],ignor:[5,9,4,6],time:[0,2,4,5,6,7,8,9,10],push:[9,6],concept:[8,9,1,10],ansible_hostnam:[9,4],vpc:8,chain:[],"5rxgmiicbrh":4,skip:[9,6],consum:5,invent:[],snip:5,skim:[],fail_json:5,operatingsystem:9,decid:[9,8,5,6,10],middl:[],depend:[0,5,9,4],lemonad:4,zone:8,pem:0,flask:4,graph:[],readabl:[1,6],decis:9,downtim:4,southwest:7,sourc:[0,1,2,4,5,6,8,9,10],string:[5,4,6],condit:[9,4,6,10],word:[9,8,5],brows:5,ansible_virbr0:[],jdk:4,administr:[],level:[4,6,2],did:[9,8,5],passno:4,item:[8,9,2],team:4,quick:0,ansible_product_nam:[],prevent:5,slower:0,trend:4,ec2_platform:8,anaconda:9,port:[7,4,10],"123456abc78901d2":[],appear:5,favcolor:[9,8,5],ansible_distribution_vers:[],current:[0,5,9,4,10],suspect:[],no_bootpoweroff:[],ceec4eif7ya:4,deriv:[],gener:[0,4,5,6,8,9],httpd_can_network_connect:4,address:[1,4,5,7,8,9,10],along:[5,6],wait:[9,4],box:[4,10],precursor:[],alta:[],extrem:[0,9,5],bob:[4,6],bof:4,ourselv:6,overrid:[0,8,9],love:[],extra:[9,1],tweak:1,modul:[0,1,3,4,5,6,8,9,10],userdel:4,prefer:[7,9,5,10],mzdywqlw:4,baisc:[],filenameprotocol:[],instal:[0,4,5,6,9,10],mobil:[],httpd:[7,9,4,6,10],hyperspac:[],yamllint:2,priv2:4,prove:9,is_cento:9,univers:[],visit:[],perl:10,live:[0,9,10],handler:[10,4,1,6],criteria:9,msg:[5,8,4],initramf:[],checkout:[0,5,9,4],ntpserver:8,chapter:[4,6],idempot:[5,4,6,10],share:[0,9,8,5],claus:9,enhanc:8,templat:[1,4,5,6,8,9,10],easiest:[0,8,9],get_xml:4,ibm:[],module_arg:8,prepar:[],uniqu:8,cat:9,insertaft:4,whatev:[9,5],purpos:[7,4,1,6],boilerpl:5,claim:1,hostvar:9,argument_spec:5,pkgbuild:0,optionalport:[],chip:[],agent:[0,10],critic:[],abort:4,occur:6,alwai:[5,4,1,6],sundai:4,multipl:[1,4,6,7,8,9,10],ping:[0,8,4],modulenam:5,uptim:8,write:[1,2,4,5,6,8,9],purg:4,pure:[],somevalu:[9,5],parameter:[9,6],opt2:5,map:[8,6],product:[9,4],mar:[],max:10,clone:[0,5],usabl:6,membership:[9,10],mai:[0,1,2,4,5,6,8,9,10],underscor:8,data:[2,4,5,6,7,8,9],man:5,poseidon:[],practic:[3,1,2,4,6,9],seuser:4,explicit:[],predic:4,inform:[9,8,4,6,10],"switch":[],preced:[9,4],combin:2,talk:[10,0,8,6,7],notthereafterboot_alwai:[],ender:[],ec2_statu:8,nbsp:[],ec2_id:8,cold:4,still:[0,9,8,5,6],pointer:5,ec2_virtualization_typ:8,facter_:[4,6],jid:[4,10],overlord:[],disconnect:[],monitor:8,polici:4,yaml:[3,1,2,5,6,7,9],window:9,curli:[],intl:[],mail:[0,1,2,4,5,6,7,8,9,10],job_statu:[],main:[9,5,1,6],basenam:4,security_group_pete_s_fancy_group:8,non:[5,4,6,7],env:[0,5],contriv:[],ansible_all_ipv4_address:[],initi:[],l6pmiam1a8ywep:4,half:[],now:[0,4,5,6,8,9,10],discuss:[],setyp:4,introduct:[4,6],halon_system_timeout:7,term:[5,10],name:[0,1,2,4,5,6,7,8,9,10],config:[8,4,6,10],didn:10,crypto:[],separ:[8,4,1,6],rock:[],boot_alwai:[],domain:[],arg1:[5,4],laserllama:[],ngnix:4,yeah:[],contrib:[5,4],backport:[0,4],facter:[9,4,6],year:4,happen:[5,8,4],likes_emac:2,subnet:8,shown:5,space:4,infrar:[],profil:[8,4],intermix:[],skylin:[],internet:[],correct:[8,9,6,2],ksmeta:8,lag:4,state:[1,4,5,6,7,9,10],migrat:[],argv:5,args_fil:5,theori:6,org:[0,4,10,7],ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:4,card:[],care:[4,6],reusabl:5,couldn:[],frequenc:9,synchron:[9,6],refus:[],thing:[0,1,2,5,6,7,9,10],place:[5,9,4],raleigh:[7,10],cmdb_statu:4,router:4,think:[9,5,1],frequent:[8,9],first:[0,4,5,7,9,10],oper:[0,9,4,6,10],directli:[4,5,6,7,8,10],onc:[1,4,5,6,7,9],arrai:9,yourself:6,fast:0,oppos:10,open:[5,9,4,6],tomorrow:[],somegroup:4,given:[9,4,1,10],args_data:5,convent:[8,5],width:[],lap:4,fierc:[],silenc:4,necessarili:4,white:5,friend:[],includ:[1,4,5,6,7,8,9,10],especi:[9,1],copi:[0,4,5,8,9,10],specifi:[0,2,4,5,6,8,9,10],retyp:0,netmask:[],"short":[0,9],mostli:1,floppi:[],than:[0,1,2,4,5,6,7,8,9,10],cmdb:[8,4],serv:[],wide:[],ec2_private_dns_nam:8,firebal:4,balanc:9,were:[9,4,6,10],pre:4,sai:[0,9,4,6,10],nicer:[],id_webservergroup:8,argument:[5,8,4,6,7],dash:[8,2],loki:[],sat:[],engin:[],squar:[],alias:5,destroi:4,southeast:7,note:[0,4,5,6,8,9,10],altogeth:[],ideal:9,includedir:[],take:[5,9,4,6,10],wonder:4,noth:[4,6,2],channel:[0,2,4,5,7,8,10],begin:[4,10,2],sure:[9,8,4,6,10],normal:[8,10],track:[7,9,10],beta:[],pair:[8,5,2],adopt:[],take_out_of_pool:9,runtim:9,mysql_db:4,hw_processor_count:[],show:[9,5,6,10],cheat:[],aggregr:5,geographi:1,poweroff:[],permiss:[0,4,10],hack:[0,5],help:[0,1,2,4,5,6,7,8,9,10],xml:2,onli:[0,4,5,6,8,9,10],explicitli:[4,6],transact:9,activ:4,enough:[7,10],dict:5,analyz:9,analyt:[],startswith:[],nearli:[4,2],variou:[9,8,4,6,10],get:[0,2,3,4,5,6,8,9,10],mission:[],repo:[5,4,10,7],ssl:[],cannot:[9,4,6],ssh:[0,4,7,8,9,10],requir:[0,1,4,5,8,9,10],some_file_path_foo:1,scott:[],where:[0,1,4,5,8,9],summari:6,wiki:4,kernel:[],hierachi:[],maximum:[9,4],hierarchi:[],ansible_product_vers:[],hell:[],ansible_distribut:9,concern:6,detect:4,kei:[0,2,4,5,6,8,9,10],innov:[],review:[9,4,1,6],enumer:9,label:[],estat:[],ansible_system_vendor:[],between:[0,9,1,6],my_app:4,"import":[4,5,6,8,9,10],across:8,fundament:4,guitar:[],cycl:0,come:[5,6],timmi:6,uuid:4,region:[8,10],contract:8,tutori:5,ef50bac8:[],abc123:8,mani:[4,5,6,8,9,10],setenforc:6,among:9,color:[9,5],overview:2,inspir:[],period:9,colon:[7,6],inventory_hostnam:[9,4],webapp:[4,10],typic:[6,10],poll:[9,4,10],other_vari:9,coupl:[],west:8,rebuild:[],tue:4,esxlogin:[],pyspher:[],rubi:[5,9,4,10,2],those:[8,9,6,10],"case":[4,5,6,8,9,10],mount:4,md5sum:[],straighten:[],trick:6,cast:5,invok:[],hdd:[],hdc:[],is_set:4,invoc:4,default_releas:4,newhost:4,advantag:[9,10],stdout:[8,9],canon:4,worri:9,destin:[8,4],cluster:4,myapp:[9,4,10],rktgjk2httvs6gigvsuwwfod7:4,chkconfig:[],trival:5,http_port:[7,6],develop:[0,1,2,3,4,5,6,8,9],ansible_architectur:[],author:[5,4,1],media:[],econom:[],same:[0,1,2,4,6,7,8,9,10],binari:0,html:[5,4],pad:[],timestamp:4,pai:10,document:[1,2,4,5,6,8,9,10],hpilo_fact:[],week:4,webserv:[1,4,6,7,8,9,10],closest:[],ec2_subnet_id:8,nest:[5,9,4],someon:4,driven:[],capabl:1,fruit:2,interventori:[],hpilo:[],improv:5,extern:[8,9,1],appropri:[5,9,8,4],markup:[],clobber:4,without:[0,5,4],promis:[],model:[],roughli:0,execut:[0,4,5,6,8,9,10],ilo_fact:[],when:[1,4,5,6,8,9,10],harddisk:[],rest:5,kill:6,speed:[0,4],aws_access_key_id:8,versu:[0,1],europ:[],miscellan:1,trigger:[4,6],except:[5,8,4],littl:[],otherus:10,blob:4,notori:[],vulner:[],real:[0,9,6],ignore_error:9,around:4,ohai:[9,4,6],read:[0,2,4,5,8,10],dark:8,temperatur:4,grid:[],mon:4,world:[0,9,4,6],rear:[],intel:[],vsphere_fact:[],whitespac:1,realtim:[],ak123:8,integ:[],server:[4,6,7,8,9,10],rycsbf1d8e5ptxesxhqs4iq:4,output:[5,8,4,6],ilo_password:[],manag:[0,2,4,6,7,8,9,10],ec2_kernel:8,node:[0,4,6,8,9,10],sneaker:[],foooverload:4,jquery_directori:[],titan:[],altalang:[],server01:[],loopback:4,ansible_processor:[],noon:[],definit:[],legal:[5,1],moon:[],sr0:4,exit:[8,5,6],complic:[],refer:[9,8,4,6,10],ansible_swaptotal_mb:[],power:[0,1,5,6,8,9],broken:1,fulli:[0,4],regexp:4,"throw":5,earlier:[0,4,6],src:[9,8,4,6,10],stone:5,central:9,greatli:[],get_url:4,acm:[7,9,4,1,10],wolf:8,stand:4,act:4,industri:[],mytempl:4,backup:4,other:[0,2,4,5,6,7,8,9,10],esxserv:[],effici:9,terminolog:8,anothert:4,somescript:4,multinod:[],puppetmast:[],your:[0,1,4,5,6,7,8,9,10],charli:4,stare:5,log:[5,9,8,4,6],area:[],aren:[],catn:[],privileged_us:[],start:[0,1,2,3,4,5,6,8,10],interfac:[8,4],low:4,lot:[7,9,5,1,10],ipv6:[],hw_product_uuid:[],ansible_all_ipv6_address:[],bundl:1,vpc_destination_vari:8,denomin:1,congratul:0,longer:[5,4],strawberri:2,dirti:[0,4],possibl:[1,4,5,6,7,8,9,10],"default":[0,4,5,7,8,9,10],ansible_fact:5,stacktrac:5,connect:[0,9,8,4],iso_url:[],tasti:2,uid:4,creat:[0,4,6,8,9,10],certain:[9,4,6],deep:6,strongli:1,mainli:9,deferenc:[],file:[0,1,2,4,5,6,7,8,9,10],my_custom_fact_can_be_used_now:9,again:[8,5,6],beyond:9,googl:[0,1,2,4,5,6,7,8,9,10],compel:[],repositor:4,orient:6,valid:5,anotherconf:4,global_var:1,you:[0,1,2,4,5,6,7,8,9,10],external_var:9,poor:5,regardless:[6,2],sequenc:[],symbol:4,signficantli:0,briefli:6,"60k":[],postgresql_us:4,directori:[1,2,4,5,6,8,9,10],invest:[],descript:[5,4,1,6],chown:4,potenti:9,archrear:[],qeuz:4,cpu:[],all:[0,1,2,4,5,6,7,8,9,10],consider:[8,4],alh:4,selinux:[4,6],lack:4,mnt:4,month:[0,4],scalar:5,abil:6,follow:[0,4,5,7,8,9,10],alt:[],disk:4,scp:10,nors:[],articl:[5,4],init:4,dehaan:[],mcollect:[],arbitari:2,introduc:[],sound:8,liter:4,tag_name_redi:8,"1pm":[],fals:[5,9,4,2],faq:[],fav:4,util:[],mechan:[],fall:[9,4],veri:[0,1,4,5,6,8,9,10],condition:6,database_serv:7,colleagu:[],pbx:[],sane:[],stderr:5,plain:[],small:[9,8,4,2],boot_alwaysdisconnect:[],testuser2:9,testuser1:9,enterpris:0,yetanotherdb:4,strung:10,zero:[7,5,6],design:[7,4,10],pass:[0,4,5,6,8,9,10],further:[9,10,2],sudo_us:6,deleg:9,sub:[],section:[0,1,4,6,7,8,9,10],ffff:[],delet:[4,6,10],abbrevi:2,version:[0,1,4,6,7,9,10],"public":[9,8,4],php:10,movement:[],macaddress_dash:[],hasn:[],full:[9,4,6],themselv:[],esxpassword:[],filelinkdirectoryabs:[],shouldn:9,version_ad:5,cmdb_hwmodel:[],first_available_fil:9,strong:[],modifi:[5,8,4],fail_on_us:4,valu:[2,4,5,6,8,9,10],search:4,ahead:[0,6],likin:[],memcach:[9,6],prior:[9,4],amount:[8,4],agvsbg8gqw5zawjszsb3b3jszao:4,pick:10,action:[9,8,4,6],devserv:4,via:[0,9,8,4],shorthand:[5,9,4],factnam:9,ec2_state_cod:8,managememnt:[],href:4,hw_guest_id:[],select:[1,4,5,6,7,9,10],distinct:[],ec2_stat:8,regist:9,two:[7,8,4,6],rhel:0,virt:4,taken:[4,6],kick:[9,10],toggl:4,more:[0,1,4,5,6,7,8,9,10],flat:6,desir:[5,4,6,7],hundr:[],flag:[0,4,6,10],particular:[4,6,7,8,9,10],known:4,compani:5,cach:[8,4],none:[0,8,4],hour:4,hous:[],launch:[9,4,6],dev:4,ilo_address:[],remain:[],learn:[0,1,2,5,6,7,9],deb:4,nagio:4,instantan:[],prompt:[9,4,6,10],useabl:4,moduledev:[],accept:[5,4],minimum:[9,5,6],explor:[0,8],pong:4,cygat:[],cours:[9,4,1],newlin:[],secur:[9,8,4],rather:[7,9,5],anoth:[1,2,4,6,9,10],scienc:[],simpl:[1,2,4,5,6,8,9,10],css:[],distro:8,resourc:[5,9,4,6],referenc:[7,9,6],vlan:[],variant:0,fstype:4,ff0000:5,neccesssari:[],unlink:4,associ:[8,4,2],signfic:5,github:[0,1,2,4,5,6,8,9],django:4,caus:0,callback:8,opscod:4,rotat:6,xmpp:[],soon:[],uvh:0,commonli:[10,2],through:[0,4,10],testserv:[],fff:[],suffer:[],paramet:[0,1,4,5,6,9,10],style:[5,9,4],psycopg2:4,cowsai:[9,6],pend:[],rapidli:[8,9],might:[4,5,6,7,8,9],wouldn:8,good:[0,9,8,5,6],"return":[5,9,8,4,6],lineinfil:4,food:2,sentenc:5,framework:8,botnet:[],odin:[],hw_bios_dat:[],neccessari:9,troubleshoot:[],unlik:6,authent:4,mysteri:9,easili:[0,8,9,10],achiev:5,found:[5,9,8,4],only_if:[9,4,6],id_rsa:[0,4,10],subsystem:4,harm:[],mental:[],hard:5,idea:[0,1,2,4,5,6,7,8,9,10],crontab:[9,4],realli:[5,8,4,6,2],initrd:[],expect:[8,9,6],variablenam:[],halen:[],event:[5,8,4,6],ftp:4,agre:4,safeti:[],pigeon:8,research:[],bubbl:[9,4,6],print:[5,8,4],yaml_to_ini:7,qualifi:4,postgr:[4,6],proxi:[7,9,4],advanc:[0,1,3,4,6,8,9],pub:[4,10],reason:[9,8,5,6],base:[9,4,1],believ:[],dire:[],ask:[0,6,10],bash:[0,5,10],basi:6,thrown:[],pyyaml:0,sytem:[],daisi:[],drupal:[],omit:[4,1],american:[],dir:4,ansible_system:[],ansible_async:4,assign:[7,9,4,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:4,notifi:[10,5,4,1,6],obviou:[],feel:[8,9,2],exchang:9,number:[7,9,4],placehold:[9,6],done:[0,9,4,1,7],least:[9,1],blank:[],stabl:[0,4],fiction:[],miss:4,differ:[0,1,4,6,7,8,9,10],list_vm:4,guest:4,script:[4,5,7,8,9,10],interact:[8,10],construct:[8,9,6],"81d9":[],camelot:9,make_databas:4,statement:[5,9,4,6],natur:[],zeromq:4,banana:[],store:[7,9,4],schema:5,option:[0,1,4,5,6,7,8,9,10],behind:[],selector:10,part:[5,9,4],ec2_key_nam:8,consult:[],reinstal:[],cron:[9,4],kind:5,grep:4,whenev:5,remot:[0,4,6,8,9,10],gotten:[],remov:[7,9,4,10],jqueri:[],reus:[9,6],architect:[],str:5,jvmdhw:[],toward:9,cleaner:9,comput:8,seth:[],group_var:7,biggest:[],packag:[0,1,4,5,6,9,10],expir:4,"null":[5,4],imagin:[],createhom:4,equival:[9,4],self:5,"123i":[],also:[0,1,2,4,5,6,7,8,9,10],build:[0,5,8,4],brace:[],distribut:[0,5,1],passwd:[],english:[],reach:1,most:[0,1,2,6,8,9,10],plai:[9,4,6],plan:[],alpha:4,filesystem:9,clear:1,cover:[8,9],dereferenc:[],clojur:5,clean:4,pars:5,latest:[0,9,4,6,10],awesom:5,commerc:[],ansible_processor_count:[],tri:4,alphanumer:8,devolv:[],mpd_ring:[],particularli:[8,9,6],fine:[0,5],find:[4,5,6,8,9,10],impact:[],firewal:9,nosql:[],copyright:5,solut:[],security_group_default:8,factor:5,olympu:[],ansible_selinux:[],yml:[9,1,6],remedi:9,long_running_oper:10,financ:[],nativ:[0,8,9],silli:[],him:4,restart:[10,7,4,1,6],mdehaan:10,puppetlab:4,dollar_sign_syntax:[],common:[1,2,4,5,8,9],wrote:5,set:[0,1,4,5,6,7,8,9,10],dump:[5,4],creator:[],security_group_webserv:8,see:[0,1,2,4,5,6,7,8,9,10],sec:9,arg:5,transpar:0,disadvantag:[],setsebool:6,analog:[],proliant:[],expert:[],someth:[9,8,5,1,6],restructur:6,hold:9,experi:[],altern:[9,10],solo:[],numer:[],aserv:0,solv:[],tag_aws_cloudformation_log:8,foo_port:[],popul:8,both:[0,4,5,8,9,10],last:0,delimit:4,boto:8,thor:[],uncrypt:6,context:4,whole:4,ec2_root_device_nam:8,load:[9,4],simpli:[8,4,1,6],point:[5,9,4,1],instanti:5,schedul:4,etc_other_conf_oth:1,header:[7,5],shutdown:[9,4],linux:0,asdf:[],backend:[],unsuccess:6,java:4,instrument:[],devic:4,due:[0,5],empti:[8,5],ran:[],enable_alert:4,escape_pod:7,strategi:[],wish:[0,2,4,6,8,9],fire:9,imag:[],great:[9,5,1,6],gap:[],understand:[9,6],func:[],educ:5,convers:7,look:[4,5,6,7,8,9,10],straight:10,batch:10,"while":[9,4,1,6],unifi:[],ought:[],facter_hostnam:6,error:[5,9,4],everyon:4,loop:[9,6],pack:8,earli:4,gimm:[],pragmat:[],motd:[8,9,6],max_client:6,readi:4,readm:[],jpg:[],itself:[0,8,4],cento:[0,9],wait_for:4,fedora:0,grant:4,login_usernam:4,belong:8,shorter:5,higher:[0,9],"10gen":4,optim:1,painless:[],alert:4,moment:8,temporari:[],user:[0,1,4,5,6,8,9,10],yesterdai:[],recent:[],lower:[],task:[10,9,4,1,6],lib:5,eleg:4,entri:[4,10],lizenzfrei:[],spent:[],expens:8,endfor:9,hw_eth2:[],hw_eth3:[],hw_eth0:[],hw_eth1:[],spend:[],explan:5,ec2_monitor:8,mysql:4,openstack:8,centos6:8,shortcut:5,async_wrapp:5,win:[],input:[9,5],subsequ:4,bin:[0,4,5,6,7,8,9,10],march:5,format:[2,4,5,6,7,8],folk:[0,10],judgement:4,nginx:4,game:[],quest:9,bobdata:4,insert:4,bit:[9,4,6],abduct:[],ec2_ownerid:8,like:[0,1,2,4,5,6,7,8,9,10],name_of_fact:[],knock:[],capital_of_assyria:[],signal:[8,4],"98dbcgqw5hme89cjgzro5ktkc5yu":4,manifest:[],api:[3,5,8,4],popular:[],cmdfile:4,postgresql_db:4,encount:4,vsphere:[],deviceboot_onc:[],often:[9,8,4,1],simplifi:10,acknowledg:4,creation:10,some:[0,1,4,5,6,7,8,9,10],back:[0,9,4,6,10],sampl:10,rebootedconnect:[],mirror:[],virtualenv:4,scale:9,ec2_tag_kei:8,per:[9,8,4],option_nam:5,substitut:6,mathemat:[],larg:9,either:[9,8,4],machin:[0,1,4,5,6,8,9,10],previou:9,run:[0,2,4,5,6,7,8,9,10],step:[0,3,4,6,7,9,10],squeez:4,meantim:[],major:8,impor:[],ec2_launch_tim:8,priv1:4,othervar:[],ansible_eth0:9,dl360:[],block:[9,4],fulfil:6,steelhous:[],primarili:4,unreach:6,pythonpath:[],within:[7,8,9,6],serveri:[],ensur:[0,9,4,6,10],subvers:4,bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:4,inclus:7,span:4,few:[8,4],group_nam:9,question:[0,1,2,4,5,6,7,8,9,10],"long":[0,9,10],custom:[9,4],pocoo:4,suit:6,forward:[],datastructur:8,host5:8,foosbal:[7,4],virt_boot:[],lint:[5,2],link:[5,4],translat:[],newer:0,scope:[],line:[0,2,3,4,5,6,7,8,9,10],info:[8,4,10],concaten:4,consist:5,caller:4,planet:[],schmooz:[],ec2_dns_nam:8,highlight:5,similar:[7,9,8,4,10],curv:[],module_common:5,constant:1,parser:5,doesn:[2,4,5,8,9,10],repres:[8,6,2],chat:[0,2,4,5,7,8,10],behavior:[0,9,4,10],short_descript:5,coder:[],crypt:[4,10],chgrp:[],disable_alert:4,bracket:7,librari:[5,4,1,2],peopl:[9,4],nice:6,draw:[],boot_onc:[],mongodb:4,asciidoc:[],elsewher:[],meaning:[],svn:4,happier:[],dvd:4,bofeof:[],depth:8,far:[10,2],hello:[0,4],jupit:[],login_host:4,local_act:[9,4],pluggabl:[],code:[1,4,5,6,8,9,10],alien:[],update_cach:4,async_statu:[4,10],privat:[0,8,9],exist:[4,6,7,8,9,10],sensit:9,base64:4,friendli:[],send:[9,8,4],autostart:4,sens:[0,8,4,6],fatal:[5,6],blindingli:[],sent:[5,4],sensic:[],logtre:4,whichev:[],spool:[],implicitli:[],ec2_root_device_typ:8,relev:[9,5],recip:0,magic:[9,5,6],roll:[9,4],ansible_kernel:[],michael:[],fewer:9,"try":[0,4,5,6,8,9],p2xkxaczh6fc:4,pleas:[0,8,4],malici:[],impli:[],cfg:10,focu:[],jump:0,docsit:5,gmbh:[],mysqldb:4,download:[0,4],ansible_python_interpret:7,append:4,index:[8,4],turn:[5,9,4],compar:[],bootmenu:[],access:[0,9,8,4],experiment:9,can:[0,1,2,4,5,6,7,8,9,10],chose:[],bodi:4,let:[0,2,4,5,6,8,10],ubuntu:[0,8,4],becom:9,sinc:[8,4,1,10],convert:[8,5],pretti:[8,9],hypervisor:[],technolog:[],"_some_str":6,later:[0,4,5,6,7,9,10],unsil:4,hpilo_boot:[],chang:[1,4,5,6,7,9,10],maker:[],hardi:4,fstab:4,heart:8,appli:[5,9,4,6,7],app:[9,4],gatewai:4,apt:[9,4,1,10],austria:[],"boolean":[5,4,2],cloud:[],fed:[4,6],from:[0,1,2,4,5,6,7,8,9,10],usb:[],usa:7,commun:[8,4,6],"8b3satjxmpgbfbueebwubk5ejl":4,frob:4,upgrad:[4,6,10],next:[0,3,4,6,7,9,10],websit:5,ansible_python_vers:[],usr:[0,4,5,6,7,8,9,10],simpler:[],remaind:8,sort:4,"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":4,dbserver:[10,7,9,1,6],impress:9,about:[0,1,2,4,5,6,8,9,10],trail:1,train:[],login_password:4,ansible_nocolor:9,starter:[5,6],account:[0,4,6,10],chdir:4,retriev:[9,4],scalabl:[],tunnel:[],alia:[5,4,7],openjdk:4,alic:6,obvious:9,hw_bios_vers:[],ec2_ramdisk:8,fetch:[9,4],proof:5,employe:2,tab:6,tar:0,process:[4,6,10],lock:9,sudo:[0,4,6,10],high:[5,4,10],knows_oop:2,tag:[0,9,8,4,6],thirsti:4,tarbal:[],onlin:2,serial:[9,4],delai:4,surfac:[],orson:[],lame:2,mysql_root_password:[],"_assembl":[],lepton:5,swear:[],subdirectori:4,srv:[9,8,4,6,10],panic:9,stock:[],express:[2,4,5,6,8,9],gentoo:0,watch:[],attent:10,tier:[],philosophi:[],ansible_host:0,physic:[],orchestr:6,correspond:4,element:[9,8,5],issu:[0,4],allow:[0,1,4,5,6,8,9,10],aws_secret_access_kei:8,move:[9,6],elit:2,comma:[8,4],loginpass:[],release_vers:9,bunch:[],somecommand:6,taboot:[],abc12345d6:[],infrastructur:[0,7,1,6],anyon:[],therefor:9,ansible_product_uuid:4,dag:[],greater:7,python:[0,2,4,5,7,8,9,10],auto:[5,8,4],dai:4,auth:4,devel:[],mention:[10,9,5,1,6],rubygem:[],instead:[0,9,4,1,10],surviv:4,strive:5,multiprocess:[],somewher:9,anyth:[5,8,4],edit:[0,8],opt1:5,slide:[],mode:[0,9,4,6,10],subset:[],grok:[],bump:[],strip:4,usernam:[4,10],ec2:8,our:[10,2],patch:[],some_serv:7,special:[8,4],out:[1,4,5,6,7,8,9,10],variabl:[0,1,4,5,6,7,8,9,10],twice:[],presentabs:[],security_group_:8,rel:[7,4,1],inaccess:[],hardwar:[],"_default":4,merg:5,ref:[],reg:[],red:[8,5],clarifi:[],insid:[9,8,5,6],manipul:10,ansible_machin:[],control:[1,4,5,6,7,8,9,10],dictionari:[9,8,5,2],releas:[0,9,4,6],include_ansible_module_common:5,indent:2,could:[5,9,8,4,6],put:[0,1,4,5,6,7,9],fqdn:9,keep:[0,1,4,5,7,8,9],enforc:4,outsid:[8,5],adrian:[],retain:[],stuck:6,localdomain:[],delegate_to:[9,4],respond:[8,4,6],qualiti:5,scene:[],echo:[0,8,9,6,10],exact:[],date:[0,5],puppet:[8,4],submit:5,owner:[4,10],facil:[],prioriti:[9,4],ansible_lo:[],perfectli:[],mkdir:10,system:[0,1,4,5,6,7,8,9,10],messag:[5,8,4],attach:[],attack:[],pattern_goes_her:7,termin:[4,10],"final":4,ipv4:9,shell:[4,5,6,8,9,10],ec2_descript:8,"var":[7,9,4,1,6],rst:[],exactli:[5,9,4],blind:4,priveledg:[],dive:6,daemonless:[],intervert:9,charact:[8,2],sweden:[],favorit:9,deprec:7,sysadmin:[],ansible_processor_cor:[],have:[0,1,2,4,5,6,7,8,9,10],close:[5,4],need:[0,1,2,4,5,6,7,8,9,10],asdf1234l:4,border:[],paramiko:[0,8],simplejson:[0,4],min:[],mix:[7,9,6],mango:2,tag_name_web:8,which:[0,1,2,4,5,6,7,8,9,10],datacent:[7,1,10],with_item:9,divers:[],singl:[9,8,4,6,10],ec2_security_group_nam:8,unless:[9,4,6],clash:[],deploy:[0,6,10],who:[8,4,6],salli:4,discov:[9,6],deploi:[9,4,6,10],comparison:[],why:[4,1],serol:4,urg:1,inventory_hostname_short:9,url:4,gather:[9,4,6],request:[8,4],pipe:[4,10],snapshot:4,determin:9,built:[0,4,5,8,9,10],constrain:10,fact:[5,9,4,6],hw_name:[],text:4,verbos:[5,4,6],bring:6,playbook:[0,1,2,3,4,5,6,7,8,9,10],trivial:[0,5,8,4,9],anywai:7,varnam:6,redirect:10,locat:[7,9,4,6],launchpad:4,tire:[],should:[0,1,2,4,5,6,8,9],ansible_swapfree_mb:[],won:[6,10],suppos:[7,9,5,6,10],"5px":[],local:[9,8,4],something_els:5,contribut:[0,5,4,10],notat:[],familiar:8,pave:[],autom:[4,1,10],somevar:9,increas:9,ansible_ssh_port:[],ohaidata:4,enabl:[5,4],organ:[4,1],bounc:[4,6],sudoer:4,sha:4,stuff:10,integr:[3,8,4],contain:[0,1,4,5,6,8,9],module_formatt:5,grab:[],view:[],conform:5,legaci:4,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:4,nodeinfo:4,accord:4,skynet:[],stack:9,gmail:[],statu:[5,9,4,10],wire:[],extend:[8,9,1,6],correctli:5,pattern:[0,1,3,4,6,7,8,9,10],ram0:[],written:[0,9,8,5,6],viper:9,closed:[],progress:4,email:[4,1],verifi:4,ansible_ssh_host_key_dsa_publ:[],homedir:[],tempfil:6,job:[4,10,2],entir:[4,5,6,7,8,9],homebrew:0,"2pm":[],addit:[1,4,5,6,7,8,9],revers:4,instant:[],plugin:8,admin:8,goal:[6,10],equal:[5,4,10],ohai_foo:[],etc:[0,4,6,7,8,9,10],instanc:[7,9,8,4,6],hw_system_seri:[],comment:[5,8,4,1],venv:4,iso9660:4,guidelin:5,chmod:[8,5,6],structur:[9,4],distil:[],aristotl:[],rpm:[0,5,10],ini_fil:4,mailto:[],quit:[5,1],pin:4,platform:[9,5],addition:[9,6,10],decent:[],compos:6,compon:8,json:[5,9,8,4,2],besid:5,treat:[5,1],is_unset:4,ungroup:[],immedi:[9,4,6],"2677m":[],yournam:6,capistrano:[],presenc:4,vmware:[],togeth:[4,1,10],minim:[0,5],ador:[],atlanta:[7,8,10],present:[5,9,4,1,10],authorized_kei:[0,4],multi:6,cmdb_serialno:[],align:[],ansible_virtualization_typ:[],defin:[5,9,8,4,6],glossari:[],ultra:[],layer:8,almost:4,demo:10,site:[9,1],archiv:4,lightweight:8,partner:4,revis:[],michaeldehaan:[],surprisingli:[],halt:4,welcom:8,parti:4,cross:[],member:2,handl:[5,9,4],probabl:[0,5,1,6],ansibl:[0,1,2,3,4,5,6,7,8,9,10],difficult:[],policyv:[],http:4,hostnam:[7,9,8,4,6],denot:7,drink:4,upon:[],effect:8,libvirt:4,collat:4,distutil:0,pull:[8,9],audit:[9,1],off:[9,4,1],center:[],well:[0,1,4,5,6,7,8,9,10],object:5,exampl:[0,1,2,3,4,5,6,7,8,9,10],command:[0,3,4,5,6,7,8,9,10],choos:[0,4,6],undefin:4,usual:[6,10],lest:[],tunabl:1,distanc:[],paus:4,less:0,additon:0,obtain:4,tcp:4,detail:[8,5,6,10],heavili:[],skill:2,simultan:10,web:[9,8,4,10],jinja:4,add:[0,1,4,5,8,9,10],host4:8,host3:[7,8],host2:[7,8],host1:[7,8],shoudl:[],match:[5,4,6],knob:1,ctrl:4,rememb:[6,10],xmlrpc:8,dest:[9,8,4,6,10],piec:8,know:[2,4,5,7,8,9],nor:[],press:4,password:[0,9,4,6,10],recurs:[4,10],python3:0,python2:0,loss:[],motorola:[],xaby9ud5brbfvkedu:4,success:[5,4,6],amazonaw:8,necessari:[4,10],lose:10,async:[9,4],architectur:9,page:[0,10,2],eucalyptu:8,shed:[],drop:[8,5],captur:5,twitter:[],suppli:[],"export":[0,8,4],home:4,transport:[0,8],tmp:[8,4,6,10],lead:7,avoid:[0,4,6],thank:[],overlap:[],leav:[5,9,4,1],webdoc:5,encourag:[9,5,1,6],slight:8,importerror:[],usag:[1,4,5,7,9,10],symlink:[0,4],vhost:6,host:[0,1,4,5,6,7,8,9,10],although:5,stage:4,sbin:[9,4,6,10],actual:[0,5,9,4],free_form:4,carrier:8,unmount:4,discard:4,disabl:[4,6],ntp_server:7,own:[1,4,5,6,8,9],easy_instal:4,automat:[5,8,4,1,10],ec2_public_dns_nam:8,pitfal:5,hang:6,leverag:0,trim_block:4,van:[],transfer:[5,4,6,10],snmp:8,intention:[],appl:2,pool:9,replac:4,hassl:[],individu:[7,4,1],"function":[5,4],unexpect:[],subscrib:[],nnwugi:[],continu:[5,9,4],ec2_plac:8,eas:[],inlin:8,bug:[0,4],count:[9,6],succe:5,made:[5,9,4,6,7],cleanup:[9,4],config_mod:[],whether:[5,9,8,4,1],arg2:[5,4],writeabl:6,displai:4,asynchron:[9,4,6],record:2,below:[0,8,5,6],limit:[9,10],otherwis:[5,9,4],problem:[5,2],epel:0,evalu:[9,10],dure:4,is_favcolor_blu:9,filenam:[9,4],ec2_tag_nam:8,ephemer:4,implement:[8,5],ini:[7,8,4],mountpoint:[],pip:4,ing:4,inc:[],mutual:[],boot:4,starbuck:9,virtual:[4,6],capabilit:[],book:[],futur:[5,9,4],branch:[0,4],varieti:[8,5],riak:[],servernam:[],ec2_external_inventori:8,repeat:[9,1],"class":[5,8,4,6],geco:4,ansiblemodul:5,debian:[0,9,4],stai:[9,4],sphinx:[],eof:4,amp:[7,8],scientif:0,reliabl:[],rule:[9,1,10],bcc:4,portion:[7,4],emerg:[],name_of_host:[],"8btwaryr":4},objtypes:{},titles:["Getting Started","Best Practices","YAML Syntax","Contents","Ansible Modules","Module Development","Playbooks","Inventory & Patterns","API & Integrations","Advanced Playbooks","Command Line Examples And Next Steps"],objnames:{},filenames:["gettingstarted","bestpractices","YAMLSyntax","index","modules","moduledev","playbooks","patterns","api","playbooks2","examples"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{facter_operatingsystem:9,kickstart:9,func:[],poorli:[],four:7,prefix:[9,8,4,6],sleep:9,consider:[8,4],whose:9,tweet:[],ansible_default_ipv4:4,ebuild:0,ansible_default_ipv6:[],aur:0,under:[9,6],spec:6,no_boot:[],everi:[1,2,4,6,9,10],risk:9,vastli:6,ansible_virtualization_rol:[],redact:[],upstream:[],affect:[5,4,6],virbr0:[],macaddress:[],ansible_config:10,showcas:5,cmd:[],supervisorctl:4,reg:[],ansible_librari:[],shlex:5,vars_prompt:[9,1],saltstack:[],x86_64:8,"675315501dac":[],awwxvv:[],seper:[7,9,4,6],direct:[4,6],chef:4,consequ:[],second:[9,8,4,10],tag_key_valu:8,even:[0,8,9,6,7],hide:9,thunder:[],scp:10,constrast:[],"new":[5,4],net:[0,2,4,5,7,8,10],ever:[7,8,5,6],told:6,elimin:[9,10],manipul:10,facter_hostnam:6,controlmast:0,eckersberg:2,hera:[],never:[5,8,4],here:[0,1,4,5,6,8,9,10],herd:[],met:4,"malm\u00f6":[],path:[1,4,5,6,7,8,9,10],interpret:7,datetim:5,permit:[],aka:[9,4],ansible_ssh_arg:0,somethingels:9,brought:[],substr:4,unix:[],cobblerd:8,ec2_:8,total:6,univ:[],unit:5,highli:5,describ:[5,1,6],would:[0,1,4,5,6,7,8,9,10],h3d850bdf:[],ansible_memtotal_mb:[],noarch:0,dehaan:[],overhead:[],until:[9,4],typo:5,recommend:[5,4,1],type:[5,9,8,4],tell:[7,4,10],notif:[],notic:[],warn:5,phone:[],exce:[],ec2_architectur:8,relai:6,loss:[],ansible_transport:0,must:[5,9,8,4,6],join:[],restor:4,setup:[0,1,4,5,6,8,9],work:[0,1,4,6,7,8,9,10],anotherdb:4,erb:[],virttyp:4,cento:[0,9],root:[0,1,4,6,9,10],overrid:[0,8,9],os_default:9,give:2,rpath:[],indic:[4,6],app_serv:9,somefil:6,caution:4,want:[0,1,2,4,5,6,8,9,10],end:[5,4,6],hoc:[4,6,10],quot:[9,10],"1pm":[],how:[1,2,4,5,6,7,8,9,10],hop:[],place:[5,9,4],perspect:8,updat:[9,4,10],dialect:[],recogn:[6,10],passwordless:10,after:[1,4,5,6,7,8,10],lab:[],diagram:[],befor:[0,4,5,6,9,10],wrong:[],ohai_:[4,6],hw_uuid:[],ilo_login:[],ec2_image_id:8,arch:0,parallel:[9,4,6,10],attempt:[0,4,6],addresstyp:[],ansible_product_seri:[],bootstrap:4,credenti:[4,10],exclud:7,greek:[],unpaus:4,maintain:[0,8,5],environ:[0,9,8,4,10],enter:9,exclus:9,idontknow:[],order:[9,4,6,10],origin:4,frontend:9,softwar:[9,8,4,1,10],over:[0,4,7,8,9,10],fall:[9,4],orang:2,becaus:[1,2,4,5,8,9],fifo:4,ec2_previous_st:8,rpmbuild:0,ansible_interfac:[],privileg:4,zeu:[],gather_fact:[9,4],copyright:5,vari:9,myfil:4,streamlin:9,shorter:5,cli:[8,10],img:[],fix:0,better:[0,4,10],offic:[],persist:4,mydb:4,easier:[5,1,2,10],them:[0,1,2,4,5,6,7,9],thei:[4,5,6,7,8,9,10],fragment:4,etc_acme_conf_acm:1,safe:6,ec2_ten:8,"break":6,band:[],glorifi:[],jinja2:[0,9,4,6],ec2_ip_address:8,mgmt:8,httpd_sys_content_t:[],ec2_region:8,choic:[0,5,4],vidal:[],bonu:8,timeout:[9,4],each:[1,2,4,5,6,7,8,9],debug:[4,2],side:[],mean:[2,4,5,6,8,9],colleagu:[],exactli:[5,9,4],saturdai:4,playbooks2:4,logo:[],ommit:4,some_password:9,contend:[],network:9,dss:4,content:[0,1,3,4,5,6,7,8,9,10],dsl:[],pool:9,adapt:[8,4],got:[],forth:6,a1b1c1d1:8,site_fact:[9,5],ntp:[7,4],nightmar:[],esxpassword:[],free:[0,9,8,4],standard:[5,4,7],dotnet:2,fixm:[],"_to":[],hw_product_nam:[],md5:5,reconfigur:[9,1],openssh:0,traceback:5,isv:[],ansible_form_factor:[],iso:[],isn:[],rang:[7,4,10],render:4,clariti:[],wast:[],restrict:5,hook:[],instruct:[0,5],alreadi:[0,4,5,6,8,9],van_halen_port:6,apt_repositori:4,massiv:[],primari:4,rewritten:[],top:[9,5,1,6],sometim:[9,4],destination_vari:8,master:8,too:[8,5,2],hw_eth_ilo:[],similarli:[8,9],john:2,outag:9,listen:4,servi:[],iptabl:[],ansible_memfree_mb:[],tool:[0,8,9,10],took:[],"80ghz":[],somewhat:8,technic:[0,8,4],freemem:4,basho:[],target:[10,7,4,1,6],keyword:[9,4],provid:[1,2,4,5,6,8,9],eleg:4,tree:[5,8,4],project:[0,1,2,5,6,9],matter:10,ansible_distribution_releas:[],minut:[4,10],uses_cv:2,recheck:5,provis:4,fashion:[],yesno:[],"_authorized_kei":[],runner:8,ram:[],mind:5,mine:4,raw:[0,4],aforement:7,seem:[9,6],seek:4,someapp:4,vga:[],sudo_us:6,contact:[0,8,4],expens:8,blue:9,"40ff":[],though:[0,1,4,5,6,8,9],bruce:0,limitless:9,deleg:9,regular:[4,6],specifi:[0,2,4,5,6,8,9,10],bsd:0,boxsubscrib:[],simplic:[],don:[0,1,4,5,6,7,9,10],doc:[5,8,4],doe:[0,4,5,6,7,8,9,10],declar:6,wildcard:7,libpq:4,came:8,cobbler_external_inventori:[],ffff:[],random:6,syntax:[3,1,2,5,6,9,10],kerber:0,pkg:[9,4,6,10],radic:[],identifi:4,pki:[],bail:4,ec2_private_ip_address:8,priv:4,involv:5,absolut:[4,10],northeast:7,acquir:[],menu:[],explain:5,configur:[0,1,2,4,6,7,8,9,10],apach:[9,4,6,10],ec2_instance_typ:8,version:[0,1,4,6,7,9,10],ldap:8,folder:4,stop:[0,1,2,4,5,6,7,8,9,10],amazon:8,report:4,saturn:[],cellspac:[],bar:[7,8,6],host_var:7,excel:[7,9],"public":[9,8,4],reload:4,bad:5,respond:[8,4,6],daemonless:[],resist:1,result:[5,9,8,4,6],is_set:4,respons:4,fail:[5,9,8,4,6],themselv:[],load_balanc:6,hammer:[],best:[3,1,4,5,6,8,9],subject:[9,4],brazil:[],said:4,heterogen:1,databas:[9,8,4,6],discoveri:4,figur:[],simplest:[8,5],awai:9,irc:[0,2,4,5,7,8,10],approach:[9,8,4],attribut:[9,4],login_us:4,manpag:5,openstack:8,extens:[],add:[0,1,4,5,8,9,10],kitchen:[],accident:[],easi:[0,1,4,5,7,9,10],ilo:[],howev:[0,5,10,7],against:[7,9,6],logic:[],somelist:9,login:[4,6],com:[0,5,8,4,7],compromis:[],assur:[9,6],foobar:4,height:[],written:[0,9,8,5,6],eucalyptu:8,guid:[],assum:[7,8,4],ether:[],speak:4,recomand:4,sucessfulli:4,multiplay:[],ansible_library_path:5,three:[7,4],been:[8,4,10],much:[2,4,6,8,9,10],interest:[0,8],basic:[0,1,2,4,5,6,7,8,9,10],httpsusernam:[],ansible_bios_d:[],tini:9,quickli:10,life:[],recomend:5,ani:[0,1,4,5,6,8,9,10],add_back_to_pool:9,mysql_us:4,dave:[],enterprisei:8,child:[],cdrom:[],emploi:2,ugli:9,exception:[],east:8,servic:[1,4,5,6,7,8,9,10],properti:4,ec2_security_group_id:8,vars_fil:[9,1,6],aim:[],ain:[],visit:[],p68:[],tabl:[7,8,4],includedir:[],cmdline:[],conf:[9,8,4,1,6],module_nam:[7,8],somekei:5,sever:[8,4,6,2],inventori:[0,1,3,4,6,7,8,9,10],incorrectli:4,perform:[0,9,4,6],suggest:4,make:[0,1,4,5,6,7,8,9,10],mayb:[],complex:[9,4,6],split:[7,5],complet:[1,2,5,6,8,9],wheel:[9,4],ansible_arch2:[],fragil:[],selevel:4,rail:[],hand:9,rais:[9,5],ownership:10,refin:[],tune:[9,10],speakerdeck:[],kept:6,scenario:8,thu:4,ansible_:9,hypothet:[],tho:[],client:4,"_concatenated_valu":[],thi:[0,1,2,4,5,6,7,8,9,10],endif:9,programm:8,everyth:[0,9],left:[],protocol:4,just:[0,1,2,4,5,6,8,9,10],photo:[],laptop:8,human:[6,2],braces_syntax:[],yet:[0,8,4,10],languag:[0,2,4,5,6,7,8,9],expos:1,had:9,spread:[],board:8,els:[0,5,9,4,6],ffffff:5,save:[5,9,4,6],hat:[],gave:[],opt:4,applic:[9,8,4,6],hw_guest_full_nam:[],supervisord:4,quirk:2,wai:[0,1,4,5,6,7,8,9],fusion:[],background:10,linux:0,measur:[],daemon:4,specic:5,specif:[1,4,5,6,7,8,9,10],arbitrari:9,manual:6,remind:[5,9,4,1],unstabl:[],el6:[],unnecessari:[],groups_logo_sm:[],www:[7,4],right:[],old:4,deal:[5,4],maxim:[],dead:[],born:[],intern:[8,5],heritag:[],successfulli:[8,4],txt:[4,10],forcibl:[],bottom:6,cnf:4,tracker:0,condit:[9,4,6,10],foo:[4,6,7,8,9,10],localhost:4,core:[5,4,10],plu:[],sensibl:0,web2:8,web1:8,promot:[],repositori:[5,8,4,1],peer:[],post:4,"super":[],chapter:[4,6],sshd:[],postgresql:4,surround:[],simul:9,"2ydx8":4,commit:1,produc:[5,4],match:[5,4,6],duke:[],ppa:[0,4],basenam:4,contriv:[],halon_system_timeout:7,slurp:4,contrib:[5,4],seboolean:4,install_recommend:4,storag:7,eth0:[],ec2_vpc_id:8,git:[0,1,4,5,7,9,10],fabric:[],suffici:9,support:[0,1,4,5,6,8,9,10],nova:8,happi:[],avail:[0,1,2,4,5,6,7,8,9,10],width:[],reli:9,gid:4,wordpress:6,editor:5,call:[2,4,5,6,7,8,9],war:[],fork:[8,9,10],head:[4,10],python26:0,form:[5,9,4,6,2],offer:[],altogeth:[],batman:0,forg:[],somehow:4,groupfil:7,safeguard:[],"true":[5,9,4,6,2],freenod:[0,2,4,5,7,8,10],absent:[5,4,1,10],inquir:5,maximum:[9,4],mtu:[],ansible_fqdn:[],fundament:4,ansible_bios_vers:[],featur:[0,1,4,6,7,8,9],"abstract":[],esxlogin:[],plugin:8,cobbler:8,desir:[5,4,6,7],ship:[5,8,4],check:[5,9,4,10],assembl:4,pipe:[4,10],encrypt:4,take_out_of_pool:9,tip:[7,9,5,1,6],role:[9,4,1,6],test:[0,5,8,4,9],tie:8,unlimit:[],maxrequestsperchild:7,node:[0,4,6,8,9,10],relat:[],intend:5,phoenix:7,devop:[],intent:[],consid:[5,1,6],sql:4,receiv:[],longer:[5,4],hw_memtotal_mb:[],anywher:[],ignor:[5,9,4,6],distro:8,time:[0,2,4,5,6,7,8,9,10],push:[9,6],concept:[8,9,1,10],vpc:8,chain:[],"5rxgmiicbrh":4,skip:[9,6],consum:5,invent:[],snip:5,skim:[],operatingsystem:9,decid:[9,8,5,6,10],middl:[],depend:[0,5,9,4],lemonad:4,zone:8,flask:4,graph:[],readabl:[1,6],decis:9,downtim:4,southwest:7,sourc:[0,1,2,4,5,6,8,9,10],string:[5,4,6],somelog:4,word:[9,8,5],brows:5,ansible_virbr0:[],jdk:4,administr:[],level:[4,6,2],did:[9,8,5],passno:4,item:[8,9,2],team:4,quick:0,ansible_product_nam:[],prevent:5,slower:0,trend:4,ec2_platform:8,anaconda:9,port:[7,4,10],ilo_address:[],appear:5,favcolor:[9,8,5],ansible_distribution_vers:[],current:[0,5,9,4,10],suspect:[],no_bootpoweroff:[],ceec4eif7ya:4,deriv:[],gener:[0,4,5,6,8,9],httpd_can_network_connect:4,address:[1,4,5,7,8,9,10],along:[5,6],wait:[9,4],box:[4,10],precursor:[],alta:[],extrem:[0,9,5],bob:[4,6],bof:4,ourselv:6,scpnmy8rks7fyk8ulx0pei:4,love:[],extra:[9,1],tweak:1,modul:[0,1,3,4,5,6,8,9,10],userdel:4,prefer:[7,9,5,10],mzdywqlw:4,leav:[5,9,4,1],base64:4,filenameprotocol:[],instal:[0,4,5,6,9,10],mobil:[],httpd:[7,9,4,6,10],hyperspac:[],yamllint:2,priv2:4,prove:9,is_cento:9,univers:[],fail_json:5,perl:10,live:[0,9,10],handler:[10,4,1,6],criteria:9,msg:[5,8,4],initramf:[],checkout:[0,5,9,4],ntpserver:8,plug:8,idempot:[5,4,6,10],share:[0,9,8,5],claus:9,enhanc:8,accept:[5,4],easiest:[0,8,9],get_xml:4,ibm:[],module_arg:8,prepar:[],uniqu:8,cat:9,insertaft:4,whatev:[9,5],purpos:[7,4,1,6],boilerpl:5,claim:1,hostvar:9,argument_spec:5,optionalport:[],chip:[],agent:[0,10],critic:[],abort:4,occur:6,alwai:[5,4,1,6],sundai:4,multipl:[1,4,6,7,8,9,10],ping:[0,8,4],modulenam:5,uptim:8,write:[1,2,4,5,6,8,9],purg:4,pure:[],somevalu:[9,5],parameter:[9,6],opt2:5,map:[8,6],product:[9,4],mar:[],book:[],max:10,clone:[0,5],usabl:6,membership:[9,10],pattern:[0,1,3,4,6,7,8,9,10],mai:[0,1,2,4,5,6,8,9,10],underscor:8,data:[2,4,5,6,7,8,9],man:5,poseidon:[],practic:[3,1,2,4,6,9],seuser:4,explicit:[],predic:4,inform:[9,8,4,6,10],"switch":[],preced:[9,4],combin:2,talk:[10,0,8,6,7],notthereafterboot_alwai:[],ender:[],ec2_statu:8,nbsp:[],ec2_id:8,cold:4,still:[0,9,8,5,6],pointer:5,ec2_virtualization_typ:8,facter_:[4,6],jid:[4,10],overlord:[],disconnect:[],monitor:8,polici:4,yaml:[3,1,2,5,6,7,9],window:9,curli:[],pythonpath:[],mail:[0,1,2,4,5,6,7,8,9,10],job_statu:[],main:[9,5,1,6],xyz:10,security_group_pete_s_fancy_group:8,non:[5,4,6,7],hassl:[],env:[0,5],encod:4,ansible_all_ipv4_address:[],initi:[],l6pmiam1a8ywep:4,half:[],now:[0,4,5,6,8,9,10],discuss:[],setyp:4,introduct:[4,6],down:[8,4,6],term:[5,10],name:[0,1,2,4,5,6,7,8,9,10],config:[8,4,6,10],didn:10,crypto:[],separ:[8,4,1,6],rock:[],boot_alwai:[],domain:[],arg1:[5,4],laserllama:[],ngnix:4,yeah:[],ensur:[0,9,4,6,10],wrap:[],backport:[0,4],facter:[9,4,6],year:4,happen:[5,8,4],subnet:8,shown:5,space:4,infrar:[],profil:[8,4],intermix:[],skylin:[],internet:[],correct:[8,9,6,2],ksmeta:8,lag:4,migrat:[],argv:5,args_fil:5,theori:6,org:[0,4,10,7],grab:[],card:[],care:[4,6],reusabl:5,couldn:[],frequenc:9,synchron:[9,6],refus:[],thing:[0,1,2,5,6,7,9,10],yum:[0,1,4,5,6,9,10],raleigh:[7,10],cmdb_statu:4,router:4,think:[9,5,1],frequent:[8,9],first:[0,4,5,7,9,10],oper:[0,9,4,6,10],directli:[4,5,6,7,8,10],onc:[1,4,5,6,7,9],arrai:9,yourself:6,"long":[0,9,10],oppos:10,open:[5,9,4,6],tomorrow:[],somegroup:4,given:[9,4,1,10],unlink:4,convent:[8,5],gif:[],lap:4,fierc:[],silenc:4,necessarili:4,white:5,friend:[],pocoo:4,especi:[9,1],copi:[0,4,5,8,9,10],motd_cont:9,retyp:0,netmask:[],github:[0,1,2,4,5,6,8,9],mostli:1,floppi:[],than:[0,1,2,4,5,6,7,8,9,10],cmdb:[8,4],serv:[],wide:[],ec2_private_dns_nam:8,firebal:4,balanc:9,were:[9,4,6,10],pre:4,sai:[0,9,4,6,10],nicer:[],id_webservergroup:8,argument:[5,8,4,6,7],dash:[8,2],loki:[],option_nam:5,collat:4,sat:[],engin:[],squar:[],alias:5,destroi:4,note:[0,4,5,6,8,9,10],forc:4,ideal:9,denomin:1,take:[5,9,4,6,10],wonder:4,noth:[4,6,2],channel:[0,2,4,5,7,8,10],begin:[4,10,2],sure:[9,8,4,6,10],normal:[8,10],track:[7,9,10],beta:[],pair:[8,5,2],adopt:[],meanwhil:[],runtim:9,mysql_db:4,hw_processor_count:[],show:[9,5,6,10],cheat:[],aggregr:5,geographi:1,poweroff:[],permiss:[0,4,10],hack:[0,5],rotat:6,xml:2,onli:[0,4,5,6,8,9,10],explicitli:[4,6],transact:9,activ:4,enough:[7,10],dict:5,analyz:9,analyt:[],startswith:[],nearli:[4,2],variou:[9,8,4,6,10],get:[0,2,3,4,5,6,8,9,10],soon:[],repo:[5,4,10,7],ssl:[],cannot:[9,4,6],ssh:[0,4,7,8,9,10],requir:[0,1,4,5,8,9,10],some_file_path_foo:1,through:[0,4,10],where:[0,1,4,5,8,9],summari:6,wiki:4,kernel:[],hour:4,hierachi:[],bargain:4,testserv:[],ansible_product_vers:[],fff:[],ansible_distribut:9,concern:6,detect:4,ansible_ssh_host_key_dsa_publ:[],innov:[],review:[9,4,1,6],enumer:9,label:[],estat:[],ansible_system_vendor:[],between:[0,9,1,6],my_app:4,"import":[4,5,6,8,9,10],across:8,rerun:6,guitar:[],cycl:0,come:[5,6],timmi:6,uuid:4,region:[8,10],contract:8,tutori:5,ef50bac8:[],abc123:8,mani:[4,5,6,8,9,10],setenforc:6,among:9,color:[9,5],overview:2,inspir:[],period:9,colon:[7,6],inventory_hostnam:[9,4],webapp:[4,10],poll:[9,4,10],other_vari:9,coupl:[],west:8,rebuild:[],tue:4,fedoraproject:[],pyspher:[],rubi:[5,9,4,10,2],those:[8,9,6,10],"case":[4,5,6,8,9,10],mount:4,md5sum:[],straighten:[],trick:6,cast:5,invok:[],hdd:[],hdc:[],cmdb_hwmodel:[],invoc:4,default_releas:4,newhost:4,advantag:[9,10],ec2_stat:8,canon:4,worri:9,destin:[8,4],cluster:4,myapp:[9,4,10],rktgjk2httvs6gigvsuwwfod7:4,chkconfig:[],trival:5,http_port:[7,6],develop:[0,1,2,3,4,5,6,8,9],ansible_architectur:[],author:[5,4,1],media:[],econom:[],same:[0,1,2,4,6,7,8,9,10],binari:0,html:[5,4],pad:[],sentenc:5,pai:10,document:[1,2,4,5,6,8,9,10],hpilo_fact:[],week:4,webserv:[1,4,6,7,8,9,10],closest:[],ec2_subnet_id:8,nest:[5,9,4],someon:4,driven:[],capabl:1,fruit:2,interventori:[],improv:5,extern:[8,9,1],appropri:[5,9,8,4],choos:[0,4,6],markup:[],clobber:4,without:[0,5,4],promis:[],model:[],roughli:0,execut:[0,4,5,6,8,9,10],ilo_fact:[],when:[1,4,5,6,8,9,10],harddisk:[],rest:5,kill:6,speed:[0,4],aws_access_key_id:8,versu:[0,1],europ:[],miscellan:1,except:[5,8,4],littl:[],otherus:10,blob:4,notori:[],vulner:[],real:[0,9,6],ignore_error:9,around:4,ohai:[9,4,6],read:[0,2,4,5,8,10],dark:8,temperatur:4,grid:[],mon:4,world:[0,9,4,6],rear:[],intel:[],vsphere_fact:[],whitespac:1,realtim:[],ak123:8,integ:[],server:[4,6,7,8,9,10],rycsbf1d8e5ptxesxhqs4iq:4,output:[5,8,4,6],ilo_password:[],manag:[0,2,4,6,7,8,9,10],ec2_kernel:8,assmebl:4,sneaker:[],foooverload:4,jquery_directori:[],titan:[],altalang:[],server01:[],loopback:4,ansible_processor:[],noon:[],definit:[],legal:[5,1],moon:[],sr0:4,exit:[8,5,6],complic:[],refer:[9,8,4,6,10],ansible_swaptotal_mb:[],power:[0,1,5,6,8,9],broken:1,found:[5,9,8,4],regexp:4,"throw":5,earlier:[0,4,6],src:[9,8,4,6,10],stone:5,central:9,greatli:[],get_url:4,acm:[7,9,4,1,10],wolf:8,stand:4,act:4,industri:[],mytempl:4,backup:4,esxserv:[],effici:9,terminolog:8,anothert:4,somescript:4,multinod:[],puppetmast:[],your:[0,1,4,5,6,7,8,9,10],charli:4,stare:5,log:[5,9,8,4,6],area:[],aren:[],catn:[],privileged_us:[],start:[0,1,2,3,4,5,6,8,10],interfac:[8,4],low:4,lot:[7,9,5,1,10],ipv6:[],hw_product_uuid:[],ansible_all_ipv6_address:[],bundl:1,vpc_destination_vari:8,congratul:0,faster:[9,5],strawberri:2,dirti:[0,4],possibl:[1,4,5,6,7,8,9,10],"default":[0,4,5,7,8,9,10],ansible_fact:5,stacktrac:5,shoudl:[],expect:[8,9,6],iso_url:[],tasti:2,uid:4,creat:[0,4,6,8,9,10],certain:[9,4,6],deep:6,strongli:1,deferenc:[],file:[0,1,2,4,5,6,7,8,9,10],my_custom_fact_can_be_used_now:9,again:[8,5,6],halen:[],googl:[0,1,2,4,5,6,7,8,9,10],compel:[],repositor:4,event:[5,8,4,6],valid:5,anotherconf:4,presenc:4,you:[0,1,2,4,5,6,7,8,9,10],external_var:9,poor:5,sequenc:[],symbol:4,signficantli:0,briefli:6,"60k":[],postgresql_us:4,directori:[1,2,4,5,6,8,9,10],invest:[],descript:[5,4,1,6],chown:4,potenti:9,appl:2,archrear:[],qeuz:4,cpu:[],all:[0,1,2,4,5,6,7,8,9,10],forget:9,alh:4,selinux:[4,6],lack:4,mnt:4,month:[0,4],scalar:5,abil:6,follow:[0,4,5,7,8,9,10],alt:[],disk:4,children:7,nors:[],articl:[5,4],init:4,program:[5,9,4,6,2],mcollect:[],arbitari:2,introduc:[],sound:8,liter:4,tag_name_redi:8,song:[],fals:[5,9,4,2],faq:[],fav:4,util:[],mechan:[],failur:[5,9,8,4,6],veri:[0,1,4,5,6,8,9,10],condition:6,database_serv:7,list:[0,1,2,4,5,6,7,8,9,10],pbx:[],sane:[],stderr:5,cmdb_serialno:[],small:[9,8,4,2],yaml_to_ini:7,testuser2:9,testuser1:9,enterpris:0,yetanotherdb:4,strung:10,zero:[7,5,6],design:[7,4,10],pass:[0,4,5,6,8,9,10],further:[9,10,2],ec2_spot_instance_request_id:8,what:[0,1,2,4,5,6,8,9,10],sub:[],section:[0,1,4,6,7,8,9,10],abl:[9,4],delet:[4,6,10],abbrevi:2,ec2_state_reason:8,method:[8,10],movement:[],macaddress_dash:[],hasn:[],full:[9,4,6],hash:[7,9,8,5,2],situat:4,filelinkdirectoryabs:[],shouldn:9,recip:0,version_ad:5,first_available_fil:9,strong:[],modifi:[5,8,4],fail_on_us:4,valu:[2,4,5,6,8,9,10],search:4,ahead:[0,6],likin:[],memcach:[9,6],prior:[9,4],amount:[8,4],agvsbg8gqw5zawjszsb3b3jszao:4,pick:10,action:[9,8,4,6],devserv:4,via:[0,9,8,4],shorthand:[5,9,4],factnam:9,ec2_state_cod:8,managememnt:[],href:4,hw_guest_id:[],select:[1,4,5,6,7,9,10],distinct:[],stdout:[8,9],regist:9,two:[7,8,4,6],rhel:0,demo:10,taken:[4,6],toggl:4,more:[0,1,4,5,6,7,8,9,10],flat:6,homebrew:0,door:[],hundr:[],flag:[0,4,6,10],particular:[4,6,7,8,9,10],known:4,compani:5,cach:[8,4],none:[0,8,4],pkgbuild:0,hous:[],daisi:[],dev:4,"123456abc78901d2":[],remain:[],learn:[0,1,2,5,6,7,9],deb:4,nagio:4,instantan:[],prompt:[9,4,6,10],useabl:4,moduledev:[],templat:[1,4,5,6,8,9,10],minimum:[9,5,6],explor:[0,8],pong:4,cygat:[],cours:[9,4,1],newlin:[],secur:[9,8,4],rather:[7,9,5],anoth:[1,2,4,6,9,10],simpl:[1,2,4,5,6,8,9,10],css:[],unabl:[],resourc:[5,9,4,6],referenc:[7,9,6],vlan:[],variant:0,fstype:4,ff0000:5,neccesssari:[],args_data:5,associ:[8,4,2],spool:[],"short":[0,9],django:4,caus:0,callback:8,opscod:4,help:[0,1,2,4,5,6,7,8,9,10],xmpp:[],mission:[],uvh:0,scott:[],hierarchi:[],hell:[],suffer:[],paramet:[0,1,4,5,6,9,10],presentabs:[],style:[5,9,4],psycopg2:4,cowsai:[9,6],pend:[],rapidli:[8,9],might:[4,5,6,7,8,9],wouldn:8,good:[0,9,8,5,6],"return":[5,9,8,4,6],lineinfil:4,food:2,timestamp:4,framework:8,botnet:[],odin:[],hw_bios_dat:[],neccessari:9,troubleshoot:[],unlik:6,authent:4,mysteri:9,easili:[0,8,9,10],achiev:5,fulli:[0,4],only_if:[9,4,6],ansible_kernel:[],subsystem:4,harm:[],mental:[],hard:5,idea:[0,1,2,4,5,6,7,8,9,10],crontab:[9,4],realli:[5,8,4,6,2],initrd:[],connect:[0,9,8,4],variablenam:[],beyond:9,orient:6,hostnam:[7,9,8,4,6],ftp:4,agre:4,safeti:[],pigeon:8,research:[],bubbl:[9,4,6],print:[5,8,4],boot_alwaysdisconnect:[],qualifi:4,postgr:[4,6],proxi:[7,9,4],advanc:[0,1,3,4,6,8,9],pub:[4,10],reason:[9,8,5,6],base:[9,4,1],believ:[],dire:[],ask:[0,6,10],bash:[0,5,10],basi:6,thrown:[],pyyaml:0,sytem:[],launch:[9,4,6],drupal:[],omit:[4,1],american:[],dir:4,ansible_system:[],ansible_async:4,assign:[7,9,4,1],feed:[],sdwippefq74nppvuelhpkkaiojjnn1zuhfol:4,notifi:[10,5,4,1,6],obviou:[],feel:[8,9,2],exchang:9,number:[7,9,4],placehold:[9,6],done:[0,9,4,1,7],construct:[8,9,6],blank:[],stabl:[0,4],python2:0,fiction:[],miss:4,differ:[0,1,4,6,7,8,9,10],list_vm:4,guest:4,script:[4,5,7,8,9,10],interact:[8,10],least:[9,1],"81d9":[],camelot:9,make_databas:4,statement:[5,9,4,6],cfg:10,zeromq:4,banana:[],store:[7,9,4],schema:5,option:[0,1,4,5,6,7,8,9,10],behind:[],selector:10,part:[5,9,4],ec2_key_nam:8,consult:[],reinstal:[],jump:0,kind:5,grep:4,whenev:5,remot:[0,4,6,8,9,10],gotten:[],remov:[7,9,4,10],jqueri:[],reus:[9,6],architect:[],str:5,jvmdhw:[],toward:9,cleaner:9,comput:8,well:[0,1,4,5,6,7,8,9,10],group_var:7,packag:[0,1,4,5,6,9,10],expir:4,"null":[5,4],imagin:[],createhom:4,equival:[9,4],self:5,"123i":[],also:[0,1,2,4,5,6,7,8,9,10],build:[0,5,8,4],brace:[],distribut:[0,5,1],passwd:[],english:[],reach:1,most:[0,1,2,6,8,9,10],plai:[9,4,6],plan:[],alpha:4,bug:[0,4],filesystem:9,clear:1,cover:[8,9],dereferenc:[],clojur:5,clean:4,pars:5,usual:[6,10],awesom:5,commerc:[],ansible_processor_count:[],alphanumer:8,devolv:[],mpd_ring:[],particularli:[8,9,6],fine:[0,5],find:[4,5,6,8,9,10],impact:[],firewal:9,nosql:[],pretti:[8,9],solut:[],security_group_default:8,factor:5,olympu:[],ansible_selinux:[],yml:[9,1,6],remedi:9,long_running_oper:10,financ:[],nativ:[0,8,9],silli:[],him:4,restart:[10,7,4,1,6],mdehaan:10,puppetlab:4,dollar_sign_syntax:[],common:[1,2,4,5,8,9],wrote:5,set:[0,1,4,5,6,7,8,9,10],dump:[5,4],creator:[],security_group_webserv:8,see:[0,1,2,4,5,6,7,8,9,10],sec:9,arg:5,transpar:0,close:[5,4],setsebool:6,analog:[],proliant:[],expert:[],someth:[9,8,5,1,6],restructur:6,hold:9,experi:[],altern:[9,10],solo:[],numer:[],aserv:0,solv:[],tag_aws_cloudformation_log:8,foo_port:[],popul:8,both:[0,4,5,8,9,10],last:0,delimit:4,boto:8,thor:[],uncrypt:6,context:4,whole:4,ec2_root_device_nam:8,load:[9,4],simpli:[8,4,1,6],point:[5,9,4,1],instanti:5,schedul:4,etc_other_conf_oth:1,header:[7,5],shutdown:[9,4],hpilo:[],asdf:[],backend:[],unsuccess:6,java:4,instrument:[],devic:4,due:[0,5],empti:[8,5],ran:[],enable_alert:4,escape_pod:7,strategi:[],wish:[0,2,4,6,8,9],fire:9,imag:[],convert:[8,5],append:4,gap:[],understand:[9,6],comprimis:[],educ:5,convers:7,look:[4,5,6,7,8,9,10],straight:10,batch:10,"while":[9,4,1,6],unifi:[],ought:[],abov:[9,8,5,6,10],error:[5,9,4],everyon:4,loop:[9,6],pack:8,earli:4,gimm:[],pragmat:[],motd:[8,9,6],max_client:6,readi:4,readm:[],jpg:[],itself:[0,8,4],ansible_ssh_host_key_rsa_publ:[],wait_for:4,fedora:0,grant:4,login_usernam:4,belong:8,exit_json:5,higher:[0,9],"10gen":4,optim:1,painless:[],alert:4,moment:8,temporari:[],user:[0,1,4,5,6,8,9,10],yesterdai:[],recent:[],lower:[],task:[10,9,4,1,6],lib:5,older:4,entri:[4,10],lizenzfrei:[],spent:[],commonli:[10,2],endfor:9,hw_eth2:[],hw_eth3:[],hw_eth0:[],hw_eth1:[],spend:[],explan:5,ec2_monitor:8,mysql:4,regardless:[6,2],centos6:8,shortcut:5,async_wrapp:5,appli:[5,9,4,6,7],input:[9,5],subsequ:4,bin:[0,4,5,6,7,8,9,10],march:5,format:[2,4,5,6,7,8],judgement:4,nginx:4,game:[],quest:9,bobdata:4,bit:[9,4,6],abduct:[],ec2_ownerid:8,xaby9ud5brbfvkedu:4,name_of_fact:[],knock:[],capital_of_assyria:[],signal:[8,4],"98dbcgqw5hme89cjgzro5ktkc5yu":4,manifest:[],"boolean":[5,4,2],popular:[],cmdfile:4,postgresql_db:4,encount:4,vsphere:[],deviceboot_onc:[],often:[9,8,4,1],simplifi:10,acknowledg:4,creation:10,some:[0,1,4,5,6,7,8,9,10],back:[0,9,4,6,10],sampl:10,rebootedconnect:[],mirror:[],virtualenv:4,scale:9,ec2_tag_kei:8,per:[9,8,4],pem:0,substitut:6,mathemat:[],larg:9,either:[9,8,4],machin:[0,1,4,5,6,8,9,10],previou:9,run:[0,2,4,5,6,7,8,9,10],step:[0,3,4,6,7,9,10],squeez:4,meantim:[],frob:4,major:8,impor:[],ec2_launch_tim:8,priv1:4,othervar:[],ansible_eth0:9,dl360:[],block:[9,4],fulfil:6,steelhous:[],primarili:4,unreach:6,intl:[],within:[7,8,9,6],serveri:[],contributor:[],chang:[1,4,5,6,7,9,10],subvers:4,bserver:0,rxp33wfphjwjwvhatfci1nrbaudqi:4,inclus:7,span:4,ansible_python_vers:[],group_nam:9,question:[0,1,2,4,5,6,7,8,9,10],fast:0,custom:[9,4],includ:[1,4,5,6,7,8,9,10],suit:6,forward:[],datastructur:8,foosbal:[7,4],virt_boot:[],lint:[5,2],link:[5,4],translat:[],newer:0,scope:[],line:[0,2,3,4,5,6,7,8,9,10],info:[8,4,10],concaten:4,consist:5,caller:4,planet:[],schmooz:[],ec2_dns_nam:8,highlight:5,similar:[7,9,8,4,10],curv:[],module_common:5,constant:1,parser:5,doesn:[2,4,5,8,9,10],repres:[8,6,2],chat:[0,2,4,5,7,8,10],behavior:[0,9,4,10],short_descript:5,bracket:7,coder:[],crypt:[4,10],chgrp:[],disable_alert:4,likes_emac:2,transport:[0,8],peopl:[9,4],nice:6,draw:[],boot_onc:[],mongodb:4,asciidoc:[],meaning:[],svn:4,happier:[],dvd:4,bofeof:[],depth:8,far:[10,2],hello:[0,4],jupit:[],local_act:[9,4],pluggabl:[],code:[1,4,5,6,8,9,10],alien:[],async_statu:[4,10],privat:[0,8,9],exist:[4,6,7,8,9,10],sensit:9,elsewher:[],friendli:[],send:[9,8,4],autostart:4,sens:[0,8,4,6],fatal:[5,6],blindingli:[],sent:[5,4],sensic:[],logtre:4,whichev:[],signfic:5,asdf1234l:4,implicitli:[],ec2_root_device_typ:8,relev:[9,5],tri:4,magic:[9,5,6],roll:[9,4],id_rsa:[0,4,10],michael:[],fewer:9,"try":[0,4,5,6,8,9],p2xkxaczh6fc:4,pleas:[0,8,4],malici:[],impli:[],natur:[],focu:[],cron:[9,4],docsit:5,gmbh:[],mysqldb:4,download:[0,4],ansible_python_interpret:7,folk:[0,10],index:[8,4],turn:[5,9,4],compar:[],bootmenu:[],access:[0,9,8,4],experiment:9,can:[0,1,2,4,5,6,7,8,9,10],chose:[],bodi:4,let:[0,2,4,5,6,8,10],ubuntu:[0,8,4],becom:9,sinc:[8,4,1,10],great:[9,5,1,6],weekdai:4,hypervisor:[],technolog:[],"_some_str":6,later:[0,4,5,6,7,9,10],unsil:4,hpilo_boot:[],typic:[6,10],maker:[],hardi:4,fstab:4,heart:8,win:[],app:[9,4],gatewai:4,apt:[9,4,1,10],austria:[],api:[3,5,8,4],cloud:[],fed:[4,6],from:[0,1,2,4,5,6,7,8,9,10],usb:[],usa:7,commun:[8,4,6],"8b3satjxmpgbfbueebwubk5ejl":4,doubl:10,upgrad:[4,6,10],next:[0,3,4,6,7,9,10],websit:5,few:[8,4],usr:[0,4,5,6,7,8,9,10],stage:4,remaind:8,sort:4,dbserver:[10,7,9,1,6],impress:9,sbin:[9,4,6,10],trail:1,train:[],login_password:4,ansible_nocolor:9,starter:[5,6],account:[0,4,6,10],chdir:4,retriev:[9,4],scalabl:[],tunnel:[],alia:[5,4,7],openjdk:4,alic:6,halt:4,obvious:9,hw_bios_vers:[],ec2_ramdisk:8,fetch:[9,4],proof:5,employe:2,thirsti:4,tar:0,process:[4,6,10],lock:9,sudo:[0,4,6,10],mango:2,high:[5,4,10],knows_oop:2,tag:[0,9,8,4,6],tab:6,tarbal:[],onlin:2,serial:[9,4],delai:4,surfac:[],orson:[],lame:2,mysql_root_password:[],"_assembl":[],lepton:5,carrier:8,subdirectori:4,srv:[9,8,4,6,10],panic:9,stock:[],express:[2,4,5,6,8,9],gentoo:0,watch:[],attent:10,tier:[],philosophi:[],ansible_host:0,physic:[],drop:[8,5],orchestr:6,correspond:4,element:[9,8,5],issu:[0,4],allow:[0,1,4,5,6,8,9,10],aws_secret_access_kei:8,move:[9,6],elit:2,comma:[8,4],loginpass:[],release_vers:9,bunch:[],somecommand:6,taboot:[],abc12345d6:[],infrastructur:[0,7,1,6],anyon:[],therefor:9,ansible_product_uuid:4,dag:[],greater:7,python:[0,2,4,5,7,8,9,10],auto:[5,8,4],dai:4,auth:4,devel:[],mention:[10,9,5,1,6],rubygem:[],instead:[0,9,4,1,10],surviv:4,strive:5,multiprocess:[],somewher:9,anyth:[5,8,4],edit:[0,8],opt1:5,slide:[],mode:[0,9,4,6,10],subset:[],grok:[],bump:[],strip:4,usernam:[4,10],ec2:8,our:[10,2],patch:[],pitfal:5,special:[8,4],out:[1,4,5,6,7,8,9,10],variabl:[0,1,4,5,6,7,8,9,10],twice:[],reboot:[4,6,10],security_group_:8,rel:[7,4,1],inaccess:[],hardwar:[],"_default":4,leverag:0,ref:[],login_host:4,red:[8,5],clarifi:[],insid:[9,8,5,6],unpars:5,ansible_machin:[],control:[1,4,5,6,7,8,9,10],dictionari:[9,8,5,2],releas:[0,9,4,6],include_ansible_module_common:5,indent:2,could:[5,9,8,4,6],put:[0,1,4,5,6,7,9],fqdn:9,keep:[0,1,4,5,7,8,9],enforc:4,outsid:[8,5],adrian:[],retain:[],stuck:6,localdomain:[],delegate_to:[9,4],thessaloniki:[],qualiti:5,scene:[],echo:[0,8,9,6,10],exact:[],date:[0,5],puppet:[8,4],submit:5,owner:[4,10],facil:[],prioriti:[9,4],ansible_lo:[],perfectli:[],mkdir:10,system:[0,1,4,5,6,7,8,9,10],messag:[5,8,4],attach:[],attack:[],pattern_goes_her:7,termin:[4,10],"final":4,ipv4:9,shell:[4,5,6,8,9,10],ec2_descript:8,"var":[7,9,4,1,6],rst:[],nobodi:5,blind:4,priveledg:[],dive:6,richer:[],intervert:9,charact:[8,2],sweden:[],favorit:9,deprec:7,sysadmin:[],ansible_processor_cor:[],have:[0,1,2,4,5,6,7,8,9,10],disadvantag:[],need:[0,1,2,4,5,6,7,8,9,10],cfengin:[],border:[],paramiko:[0,8],unexpect:[],min:[],mix:[7,9,6],baisc:[],tag_name_web:8,which:[0,1,2,4,5,6,7,8,9,10],datacent:[7,1,10],with_item:9,divers:[],singl:[9,8,4,6,10],ec2_security_group_nam:8,unless:[9,4,6],clash:[],deploy:[0,6,10],who:[8,4,6],salli:4,discov:[9,6],deploi:[9,4,6,10],comparison:[],why:[4,1],serol:4,urg:1,inventory_hostname_short:9,url:4,gather:[9,4,6],request:[8,4],self_destruct_countdown:7,snapshot:4,determin:9,built:[0,4,5,8,9,10],constrain:10,fact:[5,9,4,6],hw_name:[],text:4,verbos:[5,4,6],bring:6,playbook:[0,1,2,3,4,5,6,7,8,9,10],trivial:[0,5,8,4,9],anywai:7,varnam:6,redirect:10,locat:[7,9,4,6],launchpad:4,tire:[],should:[0,1,2,4,5,6,8,9],ansible_swapfree_mb:[],won:[6,10],suppos:[7,9,5,6,10],"5px":[],local:[9,8,4],something_els:5,contribut:[0,5,4,10],notat:[],familiar:8,pave:[],autom:[4,1,10],somevar:9,increas:9,ansible_ssh_port:[],ohaidata:4,enabl:[5,4],organ:[4,1],bounc:[4,6],sudoer:4,sha:4,stuff:10,integr:[3,8,4],contain:[0,1,4,5,6,8,9],module_formatt:5,ymwaaaebalnasqn10tngsrde5arbsw8ctojqlyybciqgpytzw8zenerfxt7ij3fw3jh:4,view:[],conform:5,legaci:4,cthy5bws9kmyjmeo0kfumh8hy4maxdokhq7dhbpircjs5jptogxirezjba67r6:4,nodeinfo:4,accord:4,skynet:[],stack:9,gmail:[],statu:[5,9,4,10],wire:[],extend:[8,9,1,6],correctli:5,mainli:9,ram0:[],state:[1,4,5,6,7,9,10],viper:9,closed:[],progress:4,email:[4,1],verifi:4,kei:[0,2,4,5,6,8,9,10],homedir:[],tempfil:6,job:[4,10,2],entir:[4,5,6,7,8,9],group:[0,1,2,4,5,6,7,8,9,10],"2pm":[],addit:[1,4,5,6,7,8,9],instant:[],southeast:7,admin:8,goal:[6,10],equal:[5,4,10],ohai_foo:[],etc:[0,4,6,7,8,9,10],instanc:[7,9,8,4,6],hw_system_seri:[],comment:[5,8,4,1],venv:4,iso9660:4,guidelin:5,chmod:[8,5,6],distil:[],aristotl:[],rpm:[0,5,10],ini_fil:4,mailto:[],quit:[5,1],evalu:[9,10],platform:[9,5],addition:[9,6,10],decent:[],compos:6,compon:8,json:[5,9,8,4,2],besid:5,treat:[5,1],is_unset:4,ungroup:[],immedi:[9,4,6],"2677m":[],yournam:6,capistrano:[],global_var:1,vmware:[],togeth:[4,1,10],minim:[0,5],ador:[],atlanta:[7,8,10],present:[5,9,4,1,10],authorized_kei:[0,4],multi:6,plain:[],align:[],ansible_virtualization_typ:[],defin:[5,9,8,4,6],glossari:[],ultra:[],layer:8,almost:4,virt:4,site:[9,1],archiv:4,lightweight:8,partner:4,revis:[],michaeldehaan:[],surprisingli:[],scienc:[],welcom:8,parti:4,cross:[],member:2,handl:[5,9,4],inc:[],ansibl:[0,1,2,3,4,5,6,7,8,9,10],difficult:[],policyv:[],http:4,structur:[9,4],denot:7,drink:4,upon:[],effect:8,libvirt:4,php:10,distutil:0,pull:[8,9],audit:[9,1],off:[9,4,1],center:[],seth:[],object:5,exampl:[0,1,2,3,4,5,6,7,8,9,10],command:[0,3,4,5,6,7,8,9,10],interpol:9,undefin:4,latest:[0,9,4,6,10],lest:[],tunabl:1,distanc:[],paus:4,less:0,additon:0,obtain:4,tcp:4,starbuck:9,heavili:[],skill:2,simultan:10,web:[9,8,4,10],jinja:4,host5:8,host4:8,host3:[7,8],host2:[7,8],host1:[7,8],smart:[4,10],kick:[9,10],knob:1,ctrl:4,branch:[0,4],xmlrpc:8,dest:[9,8,4,6,10],piec:8,know:[2,4,5,7,8,9],nor:[],press:4,password:[0,9,4,6,10],recurs:[4,10],python3:0,rhel6_64guest:[],insert:4,motorola:[],like:[0,1,2,4,5,6,7,8,9,10],success:[5,4,6],amazonaw:8,necessari:[4,10],lose:10,async:[9,4],architectur:9,page:[0,10,2],ansible_hostnam:[9,4],shed:[],revers:4,captur:5,twitter:[],suppli:[],"export":[0,8,4],home:4,librari:[5,4,1,2],tmp:[8,4,6,10],lead:7,avoid:[0,4,6],thank:[],overlap:[],update_cach:4,webdoc:5,encourag:[9,5,1,6],slight:8,importerror:[],usag:[1,4,5,7,9,10],symlink:[0,4],vhost:6,host:[0,1,4,5,6,7,8,9,10],although:5,simpler:[],about:[0,1,2,4,5,6,8,9,10],actual:[0,5,9,4],free_form:4,swear:[],unmount:4,discard:4,disabl:[4,6],ntp_server:7,own:[1,4,5,6,8,9],easy_instal:4,automat:[5,8,4,1,10],ec2_public_dns_nam:8,some_serv:7,hang:6,merg:5,trim_block:4,van:[],transfer:[5,4,6,10],snmp:8,intention:[],trigger:[4,6],"8agepocvjdhyzr7pahfxzgudgktgrl2qzryukcmwo1czbmbhci5fzimvths9":4,replac:4,biggest:[],individu:[7,4,1],"function":[5,4],simplejson:[0,4],subscrib:[],nnwugi:[],continu:[5,9,4],ec2_plac:8,eas:[],inlin:8,eat:10,count:[9,6],succe:5,made:[5,9,4,6,7],cleanup:[9,4],config_mod:[],whether:[5,9,8,4,1],arg2:[5,4],writeabl:6,displai:4,asynchron:[9,4,6],record:2,below:[0,8,5,6],limit:[9,10],otherwis:[5,9,4],problem:[5,2],epel:0,pin:4,dure:4,is_favcolor_blu:9,filenam:[9,4],ec2_tag_nam:8,ephemer:4,implement:[8,5],ini:[7,8,4],mountpoint:[],pip:4,ing:4,probabl:[0,5,1,6],mutual:[],boot:4,detail:[8,5,6,10],virtual:[4,6],capabilit:[],other:[0,2,4,5,6,7,8,9,10],futur:[5,9,4],rememb:[6,10],varieti:[8,5],riak:[],servernam:[],ec2_external_inventori:8,repeat:[9,1],"class":[5,8,4,6],geco:4,ansiblemodul:5,debian:[0,9,4],stai:[9,4],sphinx:[],eof:4,amp:[7,8],scientif:0,reliabl:[],rule:[9,1,10],bcc:4,portion:[7,4],emerg:[],name_of_host:[],"8btwaryr":4},objtypes:{},titles:["Getting Started","Best Practices","YAML Syntax","Contents","Ansible Modules","Module Development","Playbooks","Inventory & Patterns","API & Integrations","Advanced Playbooks","Command Line Examples And Next Steps"],objnames:{},filenames:["gettingstarted","bestpractices","YAMLSyntax","index","modules","moduledev","playbooks","patterns","api","playbooks2","examples"]}) \ No newline at end of file diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index 5616f3fb97..7ec0cb5451 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -26,6 +26,8 @@ from play import Play SETUP_CACHE = collections.defaultdict(dict) +plugins_dir = os.path.join(os.path.dirname(__file__), '..', 'runner') + class PlayBook(object): ''' runs an ansible playbook, given as a datastructure or YAML filename. @@ -105,9 +107,12 @@ class PlayBook(object): self.private_key_file = private_key_file self.only_tags = only_tags - self.inventory = ansible.inventory.Inventory(host_list) + self.inventory = ansible.inventory.Inventory(host_list) self.inventory.subset(subset) - self.modules_list = utils.get_available_modules(self.module_path) + + self.modules_list = utils.get_available_modules(self.module_path) + lookup_plugins_dir = os.path.join(plugins_dir, 'lookup_plugins') + self.lookup_plugins_list = utils.import_plugins(lookup_plugins_dir) if not self.inventory._is_script: self.global_vars.update(self.inventory.get_group_variables('all')) diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py index 0b6d882196..e9e15e991f 100644 --- a/lib/ansible/playbook/task.py +++ b/lib/ansible/playbook/task.py @@ -26,7 +26,8 @@ class Task(object): 'notify', 'module_name', 'module_args', 'module_vars', 'play', 'notified_by', 'tags', 'register', 'with_items', 'delegate_to', 'first_available_file', 'ignore_errors', - 'local_action', 'transport', 'sudo', 'sudo_user', 'sudo_pass' + 'local_action', 'transport', 'sudo', 'sudo_user', 'sudo_pass', + 'items_lookup_plugin', 'items_lookup_terms' ] # to prevent typos and such @@ -40,11 +41,23 @@ class Task(object): def __init__(self, play, ds, module_vars=None): ''' constructor loads from a task or handler datastructure ''' - # code to allow for saying "modulename: args" versus "action: modulename args" for x in ds.keys(): + + # code to allow for saying "modulename: args" versus "action: modulename args" if x in play.playbook.modules_list: - ds['action'] = x + " " + ds.get(x, None) + ds['action'] = x + " " + ds[x] ds.pop(x) + + # code to allow "with_glob" and to reference a lookup plugin named glob + elif x.startswith("with_") and x != 'with_items': + plugin_name = x.replace("with_","") + if plugin_name in play.playbook.lookup_plugins_list: + ds['items_lookup_plugin'] = plugin_name + ds['items_lookup_terms'] = ds[x] + ds.pop(x) + else: + raise errors.AnsibleError("cannot find lookup plugin named %s for usage in with_%s" % (plugin_name, plugin_name)) + elif not x in Task.VALID_KEYS: raise errors.AnsibleError("%s is not a legal parameter in an Ansible task or handler" % x) @@ -101,6 +114,10 @@ class Task(object): self.first_available_file = ds.get('first_available_file', None) self.with_items = ds.get('with_items', None) + self.items_lookup_plugin = ds.get('items_lookup_plugin', None) + self.items_lookup_terms = ds.get('items_lookup_terms', None) + + self.ignore_errors = ds.get('ignore_errors', False) # notify can be a string or a list, store as a list @@ -125,8 +142,9 @@ class Task(object): self.action = utils.template(None, self.action, self.module_vars) # handle mutually incompatible options - if self.with_items is not None and self.first_available_file is not None: - raise errors.AnsibleError("with_items and first_available_file are mutually incompatible in a single task") + incompatibles = [ x for x in [ self.with_items, self.first_available_file, self.items_lookup_plugin ] if x is not None ] + if len(incompatibles) > 1: + raise errors.AnsibleError("with_items, with_(plugin), and first_available_file are mutually incompatible in a single task") # make first_available_file accessable to Runner code if self.first_available_file: @@ -137,6 +155,10 @@ class Task(object): self.with_items = [ ] self.module_vars['items'] = self.with_items + if self.items_lookup_plugin is not None: + self.module_vars['items_lookup_plugin'] = self.items_lookup_plugin + self.module_vars['items_lookup_terms'] = self.items_lookup_terms + # allow runner to see delegate_to option self.module_vars['delegate_to'] = self.delegate_to diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 2b56e9df53..3382fe013f 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -47,7 +47,7 @@ except ImportError: dirname = os.path.dirname(__file__) action_plugin_list = utils.import_plugins(os.path.join(dirname, 'action_plugins')) - +lookup_plugin_list = utils.import_plugins(os.path.join(dirname, 'lookup_plugins')) ################################################ @@ -71,8 +71,8 @@ def _executor_hook(job_queue, result_queue): traceback.print_exc() class HostVars(dict): - ''' A special view of setup_cache that adds values from the inventory - when needed. ''' + ''' A special view of setup_cache that adds values from the inventory when needed. ''' + def __init__(self, setup_cache, inventory): self.setup_cache = setup_cache self.inventory = inventory @@ -82,9 +82,10 @@ class HostVars(dict): def __getitem__(self, host): if not host in self.lookup: - self.lookup[host] = self.inventory.get_variables(host) - self.setup_cache[host].update(self.lookup[host]) - return self.setup_cache[host] + result = self.inventory.get_variables(host) + result.update(self.setup_cache.get(host, {})) + self.lookup[host] = result + return self.lookup[host] class Runner(object): ''' core API interface to ansible ''' @@ -160,8 +161,11 @@ class Runner(object): # instantiate plugin classes self.action_plugins = {} + self.lookup_plugins = {} for (k,v) in action_plugin_list.iteritems(): self.action_plugins[k] = v.ActionModule(self) + for (k,v) in lookup_plugin_list.iteritems(): + self.lookup_plugins[k] = v.LookupModule(self) # ***************************************************** @@ -189,7 +193,10 @@ class Runner(object): afd, afile = tempfile.mkstemp() afo = os.fdopen(afd, 'w') - afo.write(data.encode('utf8')) + try: + afo.write(data.encode('utf8')) + except: + raise errors.AnsibleError("failure encoding into utf-8") afo.flush() afo.close() @@ -283,10 +290,18 @@ class Runner(object): # allow with_items to work in playbooks... # apt and yum are converted into a single call, others run in a loop - items = self.module_vars.get('items', []) if isinstance(items, basestring) and items.startswith("$"): items = utils.varReplaceWithItems(self.basedir, items, inject) + + # if we instead said 'with_foo' and there is a lookup module named foo... + items_plugin = self.module_vars.get('items_lookup_plugin', None) + if items_plugin is not None: + items_terms = self.module_vars.get('items_lookup_terms', '') + if items_plugin in self.lookup_plugins: + items_terms = utils.template(self.basedir, items_terms, inject) + items = self.lookup_plugins[items_plugin].run(items_terms) + if type(items) != list: raise errors.AnsibleError("with_items only takes a list: %s" % items) @@ -313,6 +328,7 @@ class Runner(object): results.append(result.result) if result.comm_ok == False: all_comm_ok = False + all_failed = True break for x in results: if x.get('changed') == True: @@ -320,7 +336,7 @@ class Runner(object): if (x.get('failed') == True) or (('rc' in x) and (x['rc'] != 0)): all_failed = True break - msg = 'All items succeeded' + msg = 'All items completed' if all_failed: msg = "One or more items failed." rd_result = dict(failed=all_failed, changed=all_changed, results=results, msg=msg) diff --git a/lib/ansible/runner/action_plugins/copy.py b/lib/ansible/runner/action_plugins/copy.py index c85de1442e..7718e9e933 100644 --- a/lib/ansible/runner/action_plugins/copy.py +++ b/lib/ansible/runner/action_plugins/copy.py @@ -39,6 +39,11 @@ class ActionModule(object): options = utils.parse_kv(module_args) source = options.get('src', None) dest = options.get('dest', None) + + if dest.endswith("/"): + base = os.path.basename(source) + dest = os.path.join(dest, base) + if (source is None and not 'first_available_file' in inject) or dest is None: result=dict(failed=True, msg="src and dest are required") return ReturnData(conn=conn, result=result) @@ -78,10 +83,16 @@ class ActionModule(object): # run the copy module module_args = "%s src=%s" % (module_args, tmp_src) + print "CALLING FILE WITH: %s" % module_args return self.runner._execute_module(conn, tmp, 'copy', module_args, inject=inject).daisychain('file', module_args) else: - # no need to transfer the file, already correct md5 + # no need to transfer the file, already correct md5, but still need to set src so the file module + # does not freak out. It's just the basename of the file. + + tmp_src = tmp + os.path.basename(source) + module_args = "%s src=%s" % (module_args, tmp_src) result = dict(changed=False, md5sum=remote_md5, transferred=False) + print "CALLING FILE WITH: %s" % module_args return ReturnData(conn=conn, result=result).daisychain('file', module_args) diff --git a/lib/ansible/runner/action_plugins/template.py b/lib/ansible/runner/action_plugins/template.py index 60fcba3f5a..446baed3aa 100644 --- a/lib/ansible/runner/action_plugins/template.py +++ b/lib/ansible/runner/action_plugins/template.py @@ -42,6 +42,11 @@ class ActionModule(object): options = utils.parse_kv(module_args) source = options.get('src', None) dest = options.get('dest', None) + + if dest.endswith("/"): + base = os.path.basename(source) + dest = os.path.join(dest, base) + if (source is None and 'first_available_file' not in inject) or dest is None: result = dict(failed=True, msg="src and dest are required") return ReturnData(conn=conn, comm_ok=False, result=result) diff --git a/lib/ansible/runner/lookup_plugins/__init__.py b/lib/ansible/runner/lookup_plugins/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/ansible/runner/lookup_plugins/fileglob.py b/lib/ansible/runner/lookup_plugins/fileglob.py new file mode 100644 index 0000000000..82147ab3b3 --- /dev/null +++ b/lib/ansible/runner/lookup_plugins/fileglob.py @@ -0,0 +1,30 @@ +# (c) 2012, Michael DeHaan +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +import os +import glob + +class LookupModule(object): + + def __init__(self, runner): + self.runner = runner + + def run(self, terms): + return [ f for f in glob.glob(terms) if os.path.isfile(f) ] + + + diff --git a/lib/ansible/utils.py b/lib/ansible/utils.py index 46bf53e339..f664114435 100644 --- a/lib/ansible/utils.py +++ b/lib/ansible/utils.py @@ -398,7 +398,10 @@ def template_from_file(basedir, path, vars): environment.filters['from_json'] = json.loads environment.filters['to_yaml'] = yaml.dump environment.filters['from_yaml'] = yaml.load - data = codecs.open(realpath, encoding="utf8").read() + try: + data = codecs.open(realpath, encoding="utf8").read() + except: + raise errors.AnsibleError("unable to process as utf-8: %s" % realpath) t = environment.from_string(data) vars = vars.copy() try: @@ -668,7 +671,8 @@ def filter_leading_non_json_lines(buf): def import_plugins(directory): modules = {} - for path in glob.glob(os.path.join(directory, '*.py')): + python_files = os.path.join(directory, '*.py') + for path in glob.glob(python_files): if path.startswith("_"): continue name, ext = os.path.splitext(os.path.basename(path)) diff --git a/library/copy b/library/copy index c92bcbdc3f..3d24684502 100755 --- a/library/copy +++ b/library/copy @@ -89,9 +89,9 @@ def main(): module.fail_json(msg="Destination %s not writable" % (dest)) if not os.access(dest, os.R_OK): module.fail_json(msg="Destination %s not readable" % (dest)) - # Allow dest to be directory without compromising md5 check if (os.path.isdir(dest)): - module.fail_json(msg="Destination %s cannot be a directory" % (dest)) + basename = os.path.basename(src) + dest = os.path.join(dest, basename) md5sum_dest = module.md5(dest) else: if not os.path.exists(os.path.dirname(dest)): diff --git a/library/file b/library/file index e60802a050..8e78538ba2 100755 --- a/library/file +++ b/library/file @@ -339,11 +339,18 @@ def main(): params = module.params state = params['state'] path = os.path.expanduser(params['path']) + + # source is both the source of a symlink or an informational passing of the src for a template module + # or copy module, even if this module never uses it, it is needed to key off some things + src = params.get('src', None) if src: src = os.path.expanduser(src) force = module.boolean(params['force']) + if src is not None and os.path.isdir(path): + params['path'] = path = os.path.join(path, os.path.basename(src)) + mode = params.get('mode', None) owner = params.get('owner', None) group = params.get('group', None) @@ -370,6 +377,7 @@ def main(): changed = False prev_state = 'absent' + if os.path.lexists(path): if os.path.islink(path): prev_state = 'link' @@ -392,7 +400,7 @@ def main(): module_exit_json(path=path, changed=True) if prev_state != 'absent' and prev_state != state and not force: - module_fail_json(path=path, msg='refusing to convert between %s and %s' % (prev_state, state)) + module_fail_json(path=path, msg='refusing to convert between %s and %s for %s' % (prev_state, state, src)) if prev_state == 'absent' and state == 'absent': module_exit_json(path=path, changed=False) @@ -400,7 +408,7 @@ def main(): if state == 'file': if prev_state != 'file': - module_fail_json(path=path, msg='file does not exist, use copy or template module to create') + module_fail_json(path=path, msg='file (%s) does not exist, use copy or template module to create' % path) # set modes owners and context as needed changed = set_context_if_different(path, secontext, changed) diff --git a/library/fireball b/library/fireball index 1543232fe1..c6d88140ff 100755 --- a/library/fireball +++ b/library/fireball @@ -199,7 +199,6 @@ def serve(module, password, port, minutes): # password as a variable in ansible is never logged though, so it serves well key = AesKey.Read(password) - log("DEBUG KEY=%s" % key) # REALLY NEED TO REMOVE THIS, DEBUG/DEV ONLY! while True: diff --git a/test/TestRunner.py b/test/TestRunner.py index a26b8a4422..61d7e2c42b 100644 --- a/test/TestRunner.py +++ b/test/TestRunner.py @@ -193,8 +193,11 @@ class TestRunner(unittest.TestCase): assert self._run('file', ['dest=' + filedemo, 'state=file'])['failed'] assert os.path.isdir(filedemo) - assert self._run('file', ['dest=' + filedemo, 'src=/dev/null', 'state=link'])['failed'] - assert os.path.isdir(filedemo) + # this used to fail but will now make a 'null' symlink in the directory pointing to dev/null. + # I feel this is ok but don't want to enforce it with a test. + #result = self._run('file', ['dest=' + filedemo, 'src=/dev/null', 'state=link']) + #assert result['failed'] + #assert os.path.isdir(filedemo) assert self._run('file', ['dest=' + filedemo, 'mode=701', 'state=directory'])['changed'] assert os.path.isdir(filedemo) and os.stat(filedemo).st_mode == 040701 @@ -245,7 +248,9 @@ class TestRunner(unittest.TestCase): assert self._run('file', ['dest=' + filedemo, 'state=file', 'force=yes'])['failed'] assert os.path.isdir(filedemo) - assert self._run('file', ['dest=' + filedemo, 'src=/dev/null', 'state=link', 'force=yes'])['changed'] + result = self._run('file', ['dest=' + filedemo, 'src=/dev/null', 'state=link', 'force=yes']) + assert result['changed'] + print result assert os.path.islink(filedemo) os.unlink(filedemo)