天天看点

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

继续阅读