<a href="http://s2.51cto.com/wyfs02/M01/85/EE/wKiom1evSELiSw8AAACIlNGJTgU249.png-wh_500x0-wm_3-wmp_4-s_1590913708.png" target="_blank"></a>
1.建立ssh无秘钥认证的关系
1
<code>yum -y </code><code>install</code> <code>expect</code>
1.1cat auto_deploy.sh
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code>#!/bin/sh</code>
<code>. </code><code>/etc/init</code><code>.d</code><code>/functions</code>
<code>#1.product key pair</code>
<code>ssh</code><code>-keygen -t dsa -P </code><code>''</code> <code>-f ~/.</code><code>ssh</code><code>/id_dsa</code> <code>></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>action </code><code>"create dsa success"</code> <code>/bin/true</code>
<code> </code><code>else</code>
<code> </code><code>action </code><code>"create dsa failed"</code> <code>/bin/false</code>
<code> </code><code>exit</code> <code>1</code>
<code>fi</code>
<code>#2.dis pub key</code>
<code>for</code> <code>ip </code><code>in</code> <code>`</code><code>cat</code> <code>ip.txt`</code>
<code>do</code>
<code> </code><code>expect expect_fenfagongyao.exp ~/.</code><code>ssh</code><code>/id_dsa</code><code>.pub $ip ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>action </code><code>"$ip"</code> <code>/bin/true</code>
<code> </code><code>else</code>
<code> </code><code>action </code><code>"$ip"</code> <code>/bin/false</code>
<code> </code><code>fi</code>
<code>done</code>
1.2cat expect_fenfagongyao.exp
<code>#!/usr/bin/expect</code>
<code> </code><code>if</code> <code>{ $argc != 2 } {</code>
<code> </code><code>send_user </code><code>"usege: expect expect_fenfagongyao.exp file host\n"</code>
<code> </code><code>exit</code>
<code> </code><code>}</code>
<code>##define var</code>
<code>set</code> <code>file</code> <code>[lindex $argv 0]</code>
<code>set</code> <code>host [lindex $argv 1]</code>
<code>set</code> <code>password </code><code>"123456"</code>
<code>spawn </code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i $</code><code>file</code> <code>"-p 22 root@$host"</code>
<code> </code><code>expect {</code>
<code> </code><code>"yes/no"</code> <code>{send </code><code>"yes\r"</code><code>;exp_continue}</code>
<code> </code><code>"*password"</code> <code>{send </code><code>"$password\r"</code><code>}</code>
<code> </code><code>}</code>
<code>expect eof </code>
<code>exit</code> <code>-onexit {</code>
<code> </code><code>send_user </code><code>"say good bye to you!\n"</code>
<code>}</code>
1.3 cat ip.txt
<code>172.16.1.10</code>
<code>172.16.1.27</code>
2.安装ansible
说明:采用yum安装,源码包安装特别麻烦
2.1.基本的设置
<code>yum -y </code><code>install</code> <code>ansible</code>
<code>cd</code> <code>/etc/ansible</code>
<code>ll</code>
<code>ansible.cfg </code><code>#ansible的系统配置文件</code>
<code> </code><code>hosts </code><code>#客户端的主机的配置文件</code>
<code>在</code><code>/etc/ansible/hosts</code><code>文件的最后添加:</code>
<code>[webservers]</code>
2.2查看常用的模块
<code>[root@centos67 ansible]</code><code># ansible-doc -l</code>
<code>a10_server Manage A10 Networks AX</code><code>/SoftAX/Thunder/vThunder</code> <code>devices </code>
<code>a10_service_group Manage A10 Networks devices' service </code><code>groups</code>
<code>a10_virtual_server Manage A10 Networks devices' virtual servers </code>
<code>acl Sets and retrieves </code><code>file</code> <code>ACL information. </code>
<code>add_host add a host (and alternatively a group) to the ansible-playbook </code><code>in</code><code>-memory inventor...</code>
<code>airbrake_deployment Notify airbrake about app deployments </code>
<code>alternatives Manages alternative programs </code><code>for</code> <code>common commands </code>
<code>apache2_module enables</code><code>/disables</code> <code>a module of the Apache2 webserver </code>
<code>apk Manages apk packages</code>
2.2ansible常用的命令总结
<code>ansible webservers </code><code>#webservers模块</code>
<code>ansible all </code><code>#所有的模块</code>
<code>ansible webservers -m </code><code>ping</code> <code>#查看主机存活状态</code>
<code> </code><code>ansible webservers -m shell -a </code><code>"bash /tmp/test.sh"</code> <code>#远程执行shell脚本,执行客户端的/tmp/test.sh 脚本</code>
<code>ansible webservers -m script -a </code><code>'/root/run.sh'</code> <code>#执行脚本/root/run.sh 为本地的脚本</code>
<code>ansible webservers -m </code><code>command</code> <code>-a </code><code>'uptime'</code> <code>#远程执行命令</code>
<code>ansible webservers -m </code><code>command</code> <code>-a </code><code>'yum -y install httpd'</code> <code>#远程安装apache</code>
<code>ansible webservers -m service -a </code><code>'name=httpd state=started'</code>
<code>name:软件的名字</code>
<code>stated:有started stoped restarted reloaded</code>
<code> </code><code>ansible webservers -m copy -a </code><code>'dest=/tmp src=/root/run.sh'</code> <code>#本机的/root/run.sh 拷贝到客户机/tmp下</code>
<code>ansible all -m </code><code>cron</code> <code>-a </code><code>'name="cron job" minute=*/5 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate time.nist.gov"'</code> <code>#定时任务</code>
<code>ansible webservers -m </code><code>file</code> <code>-a </code><code>"dest=/tmp/test.sh mode=777 owner=sanlang group=sanlang"</code> <code>#修改客户端文件权限</code>
<code> </code><code>ansible -i </code><code>/etc/ansible/hosts</code> <code>webservers -m setup </code><code>#查看客户端主机的详细信息</code>
<code>ansible webservers -m </code><code>file</code> <code>-a </code><code>"src=/etc/fstab dest=/tmp/fstab state=link"</code> <code>#创建软连接</code>
本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/1837689,如需转载请自行联系原作者