天天看點

CentOS7 下安裝 ansible

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 &gt;&gt;&gt;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 &gt;&gt;&gt;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 &gt;&gt;&gt; %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 &gt;&gt;&gt; %s"</code> <code>%</code> <code>(hostname, result)</code>

版權聲明:原創作品,如需轉載,請與作者聯系。否則将追究法律責任

本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1614369

繼續閱讀