CentOS 7 x86_64 Minimal
配置網絡:
<code>vi</code> <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code>
<code>NAME=eth0</code>
<code>TYPE=Ethernet</code>
<code>ONBOOT=yes</code>
<code>BOOTPROTO=static</code>
<code>IPADDR=172.16.4.243</code>
<code>GATEWAY=172.16.4.254</code>
<code>NETMASK=255.255.255.0</code>
<code>DNS1=114.114.114.114</code>
<code>systemctl restart network</code>
安裝 ansible:
<code>easy_install simplejson</code>
<code>easy_install pip</code>
<code>yum </code><code>install</code> <code>gcc python-devel</code>
<code>easy_install ansible</code>
<code>pip list</code>
自動把遠端主機的公鑰加入known_hosts:
<code>vi</code> <code>/etc/ssh/ssh_config</code>
<code>StrictHostKeyChecking no</code>
<code>systemctl reload sshd</code>
設定無密碼ssh通路遠端主機:
<code>ssh</code><code>-keygen -t rsa</code>
<code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub [email protected]</code>
編輯遠端主機清單:
主機清單可以是靜态配置檔案,也可以通過external inventory scripts動态擷取,通過 -i 選項指定。
<code>vi</code> <code>~</code><code>/hosts</code>
<code># hosts</code>
<code>[test]</code>
<code>172.16.4.247</code>
測試遠端主機的運作狀态:
<code>ansible all -i ~</code><code>/hosts</code> <code>-m </code><code>ping</code>
YUM安裝軟體:
<code>ansible all -i ~</code><code>/hosts</code> <code>-m yum -a </code><code>'name=libselinux-python state=present'</code>
複制檔案到遠端主機并執行:
<code>ansible all -i ~</code><code>/hosts</code> <code>-m copy -a </code><code>'src=test.sh dest=/root'</code>
<code>ansible all -i ~</code><code>/hosts</code> <code>-a </code><code>'bash test.sh'</code>
ansible api example:
<code>#!/usr/bin/python</code>
<code>import</code> <code>ansible.runner</code>
<code>import</code> <code>sys</code>
<code># construct the ansible runner and execute on all hosts</code>
<code>results </code><code>=</code> <code>ansible.runner.Runner(</code>
<code> </code><code>host_list</code><code>=</code><code>'/root/hosts'</code><code>,</code>
<code> </code><code>pattern</code><code>=</code><code>'*'</code><code>, forks</code><code>=</code><code>10</code><code>,</code>
<code> </code><code>module_name</code><code>=</code><code>'command'</code><code>, module_args</code><code>=</code><code>'which systemctl'</code><code>,</code>
<code>).run()</code>
<code>if</code> <code>results </code><code>is</code> <code>None</code><code>:</code>
<code> </code><code>print</code> <code>"No hosts found"</code>
<code> </code><code>sys.exit(</code><code>1</code><code>)</code>
<code>print</code> <code>"\033[32mUP ***********\033[0m"</code>
<code>for</code> <code>(hostname, result) </code><code>in</code> <code>results[</code><code>'contacted'</code><code>].items():</code>
<code> </code><code>if</code> <code>not</code> <code>'failed'</code> <code>in</code> <code>result:</code>
<code> </code><code>if</code> <code>len</code><code>(result[</code><code>'stdout'</code><code>]):</code>
<code> </code><code>print</code> <code>"%s >>>stdout: %s"</code> <code>%</code> <code>(hostname, result[</code><code>'stdout'</code><code>])</code>
<code> </code><code>if</code> <code>len</code><code>(result[</code><code>'stderr'</code><code>]):</code>
<code> </code><code>print</code> <code>"%s >>>stderr: %s"</code> <code>%</code> <code>(hostname, result[</code><code>'stderr'</code><code>])</code>
<code>print</code> <code>"\033[31mFAILED *******\033[0m"</code>
<code> </code><code>if</code> <code>'failed'</code> <code>in</code> <code>result:</code>
<code> </code><code>print</code> <code>"%s >>> %s"</code> <code>%</code> <code>(hostname, result[</code><code>'msg'</code><code>])</code>
<code>print</code> <code>"\033[33mDOWN *********\033[0m"</code>
<code>for</code> <code>(hostname, result) </code><code>in</code> <code>results[</code><code>'dark'</code><code>].items():</code>
<code> </code><code>print</code> <code>"%s >>> %s"</code> <code>%</code> <code>(hostname, result)</code>
版權聲明:原創作品,如需轉載,請與作者聯系。否則将追究法律責任
本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1614369