EDA365电子论坛网

标题: ansible集群工具的使用方法 [打印本页]

作者: mytomorrow    时间: 2020-1-21 10:15
标题: ansible集群工具的使用方法
0 g0 A: f! A' z4 \$ x# M
ansible简介( T  p/ N! Z# z. D3 O7 L
ansible是与puppet、saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet、saltstack那样都需要客户端。与puppet类似,ansible也支持丰富的功能:
7 V' m# ]( q' _+ a! a" w% k5 P
& }# }# B" @/ T; q. ^/ L% n2 P! W2 N- s5 m/ I& U8 P. X
安装方法为:yum -y install ansible或pip install ansible。+ b" y% q2 o. q2 E4 c
7 R; ^" u4 A5 Z5 o( V2 w% l! U

; ~9 F1 ]: ]% h" D- V* f使用方法5 ]# D" h% L0 T% v) X- }
$ J* \' j* _' f5 u4 [

% K4 A. n: Z' w" M6 t3 r在管理集群时,ansible需要先配置集群hosts列表以方便集群操作1 g3 [+ L% g8 b4 W) z

% K( Y! w1 o: L: J  m- s$ cat /etc/ansible/hosts( Q3 I! }+ L1 o/ z/ a7 X
[local]
0 M8 s5 G" z+ l: A# 配置密码登陆,需要ansible本机安装sshpass, J9 D* t% R( f2 U
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root
' x, H- B2 M$ l3 n7 n[zabbix]# M' H& X) M5 T: Q
# 密钥登陆
3 t$ R% S9 V7 i) t' o172.17.0.2:49154 ansible_ssh_user=root
! d; S+ q$ ^7 r  n172.17.0.4:49155 ansible_ssh_user=root" c  H/ ^+ V* p, \9 X" {
[vpn]
% U2 p' ?  N+ u172.17.0.10, {7 }* i  b2 }, V' H7 v& g
  \% P$ e' V$ O& t2 O! t8 F' G2 R
- n; l) M/ b  _) O, {
测试连接登陆是否OK
" ^- m. n- @: _  L5 |8 D+ h/ |3 e1 Y8 D$ j  [5 [
$ ansible local -m ping* R( ^# ?- B3 F' D4 R
192.168.213.135 | success >> {
: b, R6 q& D: l9 n( }) U    "changed": false,
/ _2 Y% z% Q0 l3 p. e" n    "ping": "pong"  h$ E! e8 y+ b4 V
}* x; a/ s' ~& S* Y7 D" `+ M

: H) P6 b% _$ {# T6 A8 I% C6 {7 E9 G" j- A& Y' |# K" K
ansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:
- @# W/ E: j. x8 ^" y& B* w" e+ ]$ h* m3 d% c
*' [: j; \+ V# N

+ K+ [. L0 m: P) K/ |- m! t
! I/ `& f& I, v4 c' \playbook; W  Y% L9 Q3 X! e) [+ v/ J1 q

, x& D  l. i1 P5 @' p" S2 n3 kplaybook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。   D! u  ]# ~5 \1 C. |

' L1 l+ s& W' K一个简单的playbook配置如下:8 I: P6 O& y  ]9 }* ~

: e: G/ @! |$ {- hosts: local7 r/ W0 e5 O' b8 D" @5 j/ P* m
  remote_user: root
% g) U  m2 P- @+ {+ T* g  tasks:, N- u0 P. }, {* z2 z
  - name: echo hi6 S+ n' P% M4 A+ i* o; h/ E
    shell: echo "hi"
  C4 f( o- g7 A# {/ X4 K1 k$ q8 j

* T  v$ E- f8 q% \$ S+ p9 qansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:
8 i# b& a; x6 R' ^- \7 B  X! G/ e) ~$ v& k3 h) D5 r
# playbook.yml
' o3 w; k/ t  \) B2 d" d---4 T1 V; x% l; S& A. ~3 x4 G  N
- hosts: local  # hosts中指定# y( A+ i, _  Y& m
  remote_user: root  # 如果和当前用户一样,则无需指定- g) C& K. L- t; o3 c, G9 p5 Q
  tasks:5 T; w, [4 r, `
      - name: whoami6 s4 t4 O+ e/ a' H0 x
        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端8 x, G7 o* l4 u' e5 \* a% @
        notify:  # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行
3 R6 c% W0 k" D: i            - clear copy  # 调用handler
: b$ V1 d" n8 n" X. z6 E- S# X  handlers:9 ?' K! K7 w1 l7 }
      - name: clear copy
6 Z( ^% i  ~0 Z& Z% V        shell: 'mv ~/hosts.dest hosts.del'  # 假装删除
+ ~! p+ ~3 O# W/ @& x' ?9 D
作者: xixihahaheihei    时间: 2020-1-21 17:53
ansible集群工具的使用方法




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2