设为首页 收藏本站
查看: 942|回复: 0

[经验分享] Ansible的几个基本语句

[复制链接]

尚未签到

发表于 2018-7-30 08:55:10 | 显示全部楼层 |阅读模式
  如约签约了新东家,环境很不错,同事人都很随和,领导也很好说话,加班福利很赞,总而言之,新的开始,好好工作,多多挣钱。
  批处理工具我最早接触的是pssh,因为它实在很简单粗暴,但是它由于太简单粗暴了,应付十台二十台机器还OK,应付五十台一百台服务器就心有余力不足了(而且xshell右键有一个“发送键入到所有会话”的功能,与pssh效果几乎一样),而且我还不太喜欢puppet,总觉得那玩意跟我八字不合,于是乎,在新头头的推荐下,我把目光放在了Ansible。
  Ansible的安装很简单,在Redhat环境下直接#yum install ansible -y就行。Redhat已经将Ansible公司收购了,所以在安装上提供了不小的便利。
  Ansible在安装完毕之后,会在/etc/ansible/目录下看见一个叫hosts的文件,这里是所有你要控制的服务器的ip们,可以排列写,比如:
  192.168.1.122
  192.168.1.133
  192.168.1.144
  也可以分组写,比如:
  [aliyun]
  10.22.33.44
  10.22.33.45
  [jinshanyun]
  121.23.45.66
  121.23.45.67
  121.23.45.68:2222  (这个不是使用ssh默认的22端口,就需要特别指出)
  默认情况下,Ansible会把命令全用于这个hosts文件,比如
  #ansible all -m ping  -u ashin
  这句话意思是整个hosts里的机器以ashin账户启动,而且都要ping 一下当前本机。
  怎么连接主机与要控制的远程机器请按之前写的“http://chenx1242.blog.51cto.com/10430133/1763978”一文进行操作,这里先说几个命令语句:
  1)#ansible all -m shell -a "/bin/echo hello"
  对hosts里所有的机器一起使用"输出hello这个文字"。-m shell可以忽略不写,但是不是shell而是其他的模块就要写出来;
  2)#ansible aliyun -m copy -a "src=~/projects/tests/t.py dest=~"
  把hosts里aliyun组的机器的/projects/tests/t.py复制到~目录下;
  [注意!]copy模块不支持变量路径,也就是说如果目标服务器的部署路径不同,copy不会很智能的去访问.bash_profile来得到用户的自定义变量,写变量替换路径是不会达到目的的。
  3)#ansible jinshanyun[0:9] -i -m file -a "dest=~/tests state=absent"
  把hosts里jinshanyun组中从0~9这十台机器的/tests文件夹删除掉,absent是“缺席,不在”的意思;
  4)#ansible 192.168.1.133 -m ping
  这句话=#ping 192.168.1.133;
  5)#ansible v1 -m service -a "name=mysql state=started" -u ashin --sudo -K
  以用户名为ashin登陆hosts里所有v1组的机器,然后检查mysql是否是started状态,若不是就start,同时要输入root的密码作为确认;
  6)#ansible 10.11.22.* -m user -a "name=foo password=foo" --sudo -K
  hosts文件里所有10.11.22开头的机器,都要添加一个新的用户名foo,同时密码是foo,并且输入root密码确认身份;
  7)#ansible v1:!v2 -m apt -a "name=git state=latest"
  检查所有属于v1组同时还不属于v2组的机器里的git文件是否是最新版本;
  8)#ansible webservers:&dbservers -a "/sbin/reboot" -f 10 --sudo -K
  重新启动既是webservers组又是dbservers组的所有机器;
  9)#ansible webservers -m raw -a 'yum -y install python-simplejson'
  用ansible去链接低版本的centos时,就乎出现“ansible requires a json module, none found! ”的错误,需要远程机安装samplejson包。raw模块是靠底层ssh的通讯,不依靠python的模块,所以如果碰到低版本的系统,如果command和shell模块无法使用,可以先用这条命令安装完需要的包。
  10)# ansible all -m synchronize -a "src=/chenshuo/1.sh dest=/chenshuo delete=yes"
  synchronize原意是“同步”,而这个模块是分发模块,这句话的意思是把控制端的/chenshuo/1.sh分发给host文件里的所有ip服务器,delete=yes意思是以控制端服务器的文件为准。
  11)# ansible 10.168.194.89 -m synchronize -a "mode=pull src=/chenshuo/nba.txt dest=/chenshuo/a.txt"
  将10.168.194.89这台服务器上的/chenshuo/nba.txt拉到控制服务器的/chenshuo文件夹下,顺便改名叫a.txt。
  12)# ansible all -m get_url -a "url=https://pypi.python.org/packages/56/2b/9c9c113fb88082950067a42cc99e3c61f1df72035f89bb0bdf0a60308ca0/pexpect-4.1.0.tar.gz#md5=562a1a21f2a60b36dfd5d906dbf0943e dest=/chenshuo"
  把那一大串网址的下载连接下载到host文件里的所有ip的/chenshuo文件夹下。
  13)# ansible 10.117.14.37 -m script -a "/chenshuo/free.sh"
  在10.117.14.37上执行操作端的free.sh,注意操作端必须要有free.sh这个脚本,而14.37这台机器上并不一定要有。
  参考资料:http://blog.csdn.net/iloveyin/article/details/46982023

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543350-1-1.html 上篇帖子: ansible 批量安装zabbix_agentd 下篇帖子: 结合P2P软件使用Ansible分发大文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表