找回密码
 注册
关于网站域名变更的通知
查看: 252|回复: 1
打印 上一主题 下一主题

ansible集群工具的使用方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-21 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

  G  s& t. m5 `  _! @. gansible简介/ Y7 K' ~* K3 ?* e
ansible是与puppet、saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet、saltstack那样都需要客户端。与puppet类似,ansible也支持丰富的功能:
' t/ [9 y6 }2 `  m2 z
- n5 T3 l) O6 q/ A$ j. U/ l/ |% y
  • 批量执行
  • 支持模块化,支持playbook(相比puppet还是弱些)
  • 上手容易(puppet上手有门槛)
  • 权限控制* L1 j4 Q, X) t' G2 j, ?
, L1 d1 M; p5 ~  x( k
安装方法为:yum -y install ansible或pip install ansible。+ V6 ~& C( G. H! ~" C
2 u. D8 \; s6 Z* ]5 F
) b9 K3 o7 D. O, @7 @# n
使用方法
8 |$ L/ B* ^+ p* \8 V
4 Q2 I2 w% n% T) t
8 P: I& J) B0 F, G: m在管理集群时,ansible需要先配置集群hosts列表以方便集群操作+ W% D' |! Z* P. d8 W

+ }% i, f" V/ @6 g$ cat /etc/ansible/hosts
1 M/ Z* X( i2 l; S- }5 [1 I, U[local]6 |$ D1 A3 ^7 H: M8 y3 v
# 配置密码登陆,需要ansible本机安装sshpass  |5 i' N# ]6 t8 Z* n
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root
* m8 }, p- X. Z! J' X[zabbix]
- c5 R# ~+ Y3 j+ z6 Q3 T  N  t# 密钥登陆, t; N, @4 c( r% l& R. T0 [
172.17.0.2:49154 ansible_ssh_user=root
# i4 b' t3 D6 z9 I/ n) B% R" U172.17.0.4:49155 ansible_ssh_user=root) g3 ?: r0 `% ?. m- f/ X% K4 x
[vpn]0 X3 L0 z. C0 l3 h, z- d7 A( b
172.17.0.10
' [# r0 n* V* J5 P5 I# y. n6 S; a9 j; C, I

7 c' H5 N6 M/ h5 ~6 _测试连接登陆是否OK( |( W" [, |; l! e" K4 C
( B% ^- M" f! d9 u1 J
$ ansible local -m ping2 i& S7 S; w, f. L
192.168.213.135 | success >> {
% S0 l0 }( u' T& V  ?    "changed": false,% J7 w* ?# s" _. D. M, G
    "ping": "pong"4 t$ l& t/ ?( K* i# }3 s
}
. }+ _2 Z% \: R4 l9 C! V0 n3 v4 ^* t1 G" S

1 V) s! ^, G. A4 u2 @/ Dansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:% ?4 H$ S" r( M% W: L

" A+ y0 H2 B# ~! H$ Q6 ]: N5 L
  • 安装软件:ansible local -m apt -a ‘name=gcc state=present’或者ansible local -m yum -a “name=nmap state=installed”
  • 执行命令:ansible local -m shell -a ‘uptime’
  • 拷贝文件:ansible local -m copy -a “src=/tmp/server dest=/tmp/server”
  • 文件属性:ansible local -m file -a “dest=/tmp/server mode=755 owner=root group=root”9 [3 Z3 b1 |! N3 w( ]# Q; J. k
*6 X9 o3 K$ A# H) D% p1 p2 ^6 W/ [

3 w! W  Z2 V% p0 Z7 X, n3 \7 ~, v. Z9 h  d. S
playbook
* K; ?/ ]$ E* B- Q, O* `& s) m3 w5 E7 z
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。
- c. m5 X7 Y, ~- @) c6 B& P( v
- j( [# J/ ^0 R5 d一个简单的playbook配置如下:; M& n5 ^6 `+ I6 ^- M1 a5 T

6 X6 @  D, t$ n: {0 b$ Y- hosts: local) r6 {- V6 v: |, E% q/ c+ Q
  remote_user: root
. m6 j$ P  W4 p; \) D- [* h  tasks:
5 W# S8 m: n& n0 c+ |9 c# N9 }  G  - name: echo hi1 O$ Q. `3 Y! I: e6 U8 _/ F4 O
    shell: echo "hi"# |' V& {. A8 Q( `1 K
& q" {9 L" i! {& b% p
) w$ P( l5 J: Y* M( s( a# H
ansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:
* H: x; k# n* ]/ ?( j" c' K/ R% y3 D  l3 ^
# playbook.yml
' a% J  ?1 y1 t+ r$ f---' m0 t# c6 C! ]/ z3 {* a$ e
- hosts: local  # hosts中指定9 W/ b: F) F" o" ^. ~( v
  remote_user: root  # 如果和当前用户一样,则无需指定
5 C! a/ d. R) i  tasks:
# |) A3 L. A/ ?2 v* b" D      - name: whoami5 Y4 {1 [6 \4 o% @' Q4 i
        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端: Y# H8 ~3 z% a2 y) C! u& E7 }
        notify:  # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行  S4 g! C& Y- N" L
            - clear copy  # 调用handler/ b' A9 t" P; F& E
  handlers:- H4 c1 A3 z/ E
      - name: clear copy  e3 D( G5 x4 L3 K# }* t! M
        shell: 'mv ~/hosts.dest hosts.del'  # 假装删除
1 v$ g7 R" L  H

该用户从未签到

2#
发表于 2020-1-21 17:53 | 只看该作者
ansible集群工具的使用方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 14:07 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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