主機hosts
<code>tomcat </code><code>192.1</code><code>.</code><code>1.121</code>
<code>redis </code><code>192.1</code><code>.</code><code>1.121</code>
<code>mongodb </code><code>192.1</code><code>.</code><code>1.121</code>
<code>tomcat </code><code>192.1</code><code>.</code><code>1.122</code>
<code>tomcat </code><code>192.1</code><code>.</code><code>1.123</code>
<code>redis </code><code>192.1</code><code>.</code><code>1.124</code>
<code>mongodb </code><code>192.1</code><code>.</code><code>1.124</code>
<code>tomcat </code><code>192.1</code><code>.</code><code>1.124</code>
<code>other </code><code>192.1</code><code>.</code><code>1.125</code>
<code>tomcat </code><code>192.1</code><code>.</code><code>1.126</code>
<code>fastdfs </code><code>192.1</code><code>.</code><code>1.127</code>
<code>fastdfs </code><code>192.1</code><code>.</code><code>1.128</code>
<code>fastdfs </code><code>192.1</code><code>.</code><code>1.129</code>
<code>other </code><code>192.1</code><code>.</code><code>1.130</code>
<code>other </code><code>192.1</code><code>.</code><code>1.131</code>
<code>fastdfs </code><code>192.1</code><code>.</code><code>1.132</code>
<code>fastdfs </code><code>192.1</code><code>.</code><code>1.133</code>
生成動态inventory
<code>devhosts.py</code>
<code>#!/usr/bin/python</code>
<code># coding:utf-8</code>
<code>import</code> <code>sys</code>
<code>try</code><code>:</code>
<code> </code><code>import</code> <code>json</code>
<code>except</code> <code>ImportError:</code>
<code> </code><code>import</code> <code>simplejson as json</code>
<code>def</code> <code>grouplist():</code>
<code> </code><code>inventory </code><code>=</code> <code>{}</code>
<code> </code><code># inventory['local'] = ['127.0.0.1']</code>
<code> </code><code># sfile = '/etc/ansible/books.txt'</code>
<code> </code><code>sfile </code><code>=</code> <code>'books.txt'</code>
<code> </code><code>with </code><code>open</code><code>(sfile, </code><code>'rb'</code><code>) as f:</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>f.readlines():</code>
<code> </code><code>group </code><code>=</code> <code>i.strip().split()[</code><code>0</code><code>]</code>
<code> </code><code>name </code><code>=</code> <code>i.strip().split()[</code><code>1</code><code>]</code>
<code> </code><code>if</code> <code>not</code> <code>group </code><code>in</code> <code>inventory:</code>
<code> </code><code>inventory[group] </code><code>=</code> <code>{</code>
<code> </code><code>'hosts'</code><code>: []</code>
<code> </code><code>}</code>
<code> </code><code>inventory[group][</code><code>'hosts'</code><code>].append(name)</code>
<code> </code><code>print</code> <code>json.dumps(inventory, indent</code><code>=</code><code>4</code><code>)</code>
<code>def</code> <code>hostinfo(name):</code>
<code> </code><code>vars</code> <code>=</code> <code>{}</code>
<code> </code><code>vars</code> <code>=</code> <code>{</code>
<code> </code><code>'admin'</code><code>: </code><code>'Jane Jolie'</code><code>,</code>
<code> </code><code>'datacenter'</code><code>: </code><code>1</code>
<code> </code><code>}</code>
<code> </code><code>print</code> <code>json.dumps(</code><code>vars</code><code>, indent</code><code>=</code><code>4</code><code>)</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>if</code> <code>len</code><code>(sys.argv) </code><code>=</code><code>=</code> <code>2</code> <code>and</code> <code>(sys.argv[</code><code>1</code><code>] </code><code>=</code><code>=</code> <code>'--list'</code><code>):</code>
<code> </code><code>grouplist()</code>
<code> </code><code>elif</code> <code>len</code><code>(sys.argv) </code><code>=</code><code>=</code> <code>3</code> <code>and</code> <code>(sys.argv[</code><code>1</code><code>] </code><code>=</code><code>=</code> <code>'--host'</code><code>):</code>
<code> </code><code>hostinfo(sys.argv[</code><code>2</code><code>])</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code> <code>"Usage: %s --list or --host <hostname>"</code> <code>%</code> <code>sys.argv[</code><code>0</code><code>]</code>
<code> </code><code>sys.exit(</code><code>1</code><code>)</code>
生成批量部署ansible-playbook
<code>devansible.py</code>
<code>dfile </code><code>=</code> <code>'ansible.sh'</code>
<code> </code><code># print json.dumps(inventory, indent=4)</code>
<code> </code><code>return</code> <code>inventory</code>
<code>def</code> <code>ansiblelast():</code>
<code> </code><code>inventory </code><code>=</code> <code>grouplist()</code>
<code> </code><code>keys </code><code>=</code> <code>[]</code>
<code> </code><code>stringlist </code><code>=</code> <code>[]</code>
<code> </code><code>for</code> <code>key, item </code><code>in</code> <code>inventory.iteritems():</code>
<code> </code><code>keys.append(key)</code>
<code> </code><code>print</code> <code>keys</code>
<code> </code><code>for</code> <code>key </code><code>in</code> <code>keys:</code>
<code> </code><code>stringa </code><code>=</code> <code>'ansible-playbook -i /etc/ansible/devhosts.py %s.yml --extra-vars '</code> <code>\</code>
<code> </code><code>'"host=%s"'</code> <code>%</code> <code>(key,key)</code>
<code> </code><code>stringlist.append(stringa)</code>
<code> </code><code>with </code><code>open</code><code>(dfile, </code><code>'wb'</code><code>) as f1:</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>stringlist:</code>
<code> </code><code>line </code><code>=</code> <code>str</code><code>(i) </code><code>+</code> <code>"\n"</code>
<code> </code><code>f1.write(line)</code>
<code> </code><code>ansiblelast()</code>
得到ansible.sh
<code>ansible</code><code>-</code><code>playbook </code><code>-</code><code>i </code><code>/</code><code>etc</code><code>/</code><code>ansible</code><code>/</code><code>devhosts.py fastdfs.yml </code><code>-</code><code>-</code><code>extra</code><code>-</code><code>vars</code> <code>"host=fastdfs"</code>
<code>ansible</code><code>-</code><code>playbook </code><code>-</code><code>i </code><code>/</code><code>etc</code><code>/</code><code>ansible</code><code>/</code><code>devhosts.py mongodb.yml </code><code>-</code><code>-</code><code>extra</code><code>-</code><code>vars</code> <code>"host=mongodb"</code>
<code>ansible</code><code>-</code><code>playbook </code><code>-</code><code>i </code><code>/</code><code>etc</code><code>/</code><code>ansible</code><code>/</code><code>devhosts.py other.yml </code><code>-</code><code>-</code><code>extra</code><code>-</code><code>vars</code> <code>"host=other"</code>
<code>ansible</code><code>-</code><code>playbook </code><code>-</code><code>i </code><code>/</code><code>etc</code><code>/</code><code>ansible</code><code>/</code><code>devhosts.py redis.yml </code><code>-</code><code>-</code><code>extra</code><code>-</code><code>vars</code> <code>"host=redis"</code>
<code>ansible</code><code>-</code><code>playbook </code><code>-</code><code>i </code><code>/</code><code>etc</code><code>/</code><code>ansible</code><code>/</code><code>devhosts.py tomcat.yml </code><code>-</code><code>-</code><code>extra</code><code>-</code><code>vars</code> <code>"host=tomcat"</code>
預設最基本的模闆
ansible-playbook -i /etc/ansible/devhosts.py install.yml --extra-vars "host=all"
複制sudoers,可以準備幾個sudoers
ansible -i /etc/ansible/devhosts.py all -m copy -a 'src=/etc/ansible/zabbix/sudoers dest=/etc/sudoers mode=440'
注意權限
chown -R zabbix.zabbix /usr/local/zabbix
手動安裝
<code>useradd zabbix </code><code>-</code><code>s </code><code>/</code><code>sbin</code><code>/</code><code>nologin</code>
<code>touch </code><code>/</code><code>var</code><code>/</code><code>log</code><code>/</code><code>zabbix_agentd.log</code>
<code>chmod </code><code>777</code> <code>/</code><code>var</code><code>/</code><code>log</code><code>/</code><code>zabbix_agentd.log</code>
<code>sudoers</code>
最後,把主機hosts檔案插入資料庫
本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1970973,如需轉載請自行聯系原作者