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

ansible集群工具的使用方法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

  K6 X9 b6 }7 I0 S( y  t1 `ansible简介
6 H" W: J' O& f. E- G- c6 ^ansible是与puppet、saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet、saltstack那样都需要客户端。与puppet类似,ansible也支持丰富的功能:1 d+ K# n) I8 @) O. `

; H: p+ M3 k. {1 f. F/ A+ c6 U0 z, L
  • 批量执行
  • 支持模块化,支持playbook(相比puppet还是弱些)
  • 上手容易(puppet上手有门槛)
  • 权限控制
    ) c* s; C1 t% R9 g7 `1 S
, p; f# S2 H7 }* M% l
安装方法为:yum -y install ansible或pip install ansible。
7 P& V1 l: i6 t  `/ v( @
+ B& P) k0 Q* W- Z4 J% v' m$ r& A, j4 n
使用方法! ]" A1 R9 r/ z! A! H* I3 p
: d# H" n( I$ ^; m6 j

( ]' j- j4 e+ \- O9 b8 f& X在管理集群时,ansible需要先配置集群hosts列表以方便集群操作
0 ?  w( ?  i. ^$ h* @( V+ Y- e0 c6 V4 y) P5 c( l
$ cat /etc/ansible/hosts
; c) w2 P/ G" W& s  v[local]
$ I" F' k7 M9 k5 {4 j3 i1 _# 配置密码登陆,需要ansible本机安装sshpass% z8 n1 w( E! _$ d5 \
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root# y% W' g( r$ t4 m. K
[zabbix]
/ X& h4 N" X/ C% t% ]3 z% U4 o) n/ K4 z# 密钥登陆! z" a0 |2 ?5 ]' _/ x: T
172.17.0.2:49154 ansible_ssh_user=root1 z* p$ W; F7 y" S8 h0 R
172.17.0.4:49155 ansible_ssh_user=root3 i  O7 B. H2 C3 J$ a
[vpn]
8 e* Z" Z: i) t" U172.17.0.10
) M& @% [1 o6 r1 G  S
' t/ I+ K' _, ?& f4 U5 v/ y; ?; I/ {7 I# R) U6 k* G8 ]
测试连接登陆是否OK6 }) W4 ^. R  F' ~% F7 e

/ K' @& X* K5 p2 N; [/ Y1 p, w8 K$ ansible local -m ping. X8 F) q& N, ]' F0 E; m, ]
192.168.213.135 | success >> {( @4 g9 g3 O; K9 v8 g' Y
    "changed": false,
! w  o: |5 E* d, c    "ping": "pong"- ]: `5 f' e! S
}
9 w/ j% w  o2 b* @3 d' X$ c! l4 P! B* m2 z
; C5 }& h1 S4 L* U
ansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:7 H4 l' J* R( F, E5 [& L1 m: U! |( z

# A; l) h8 Z! @( A/ P8 V
  • 安装软件: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”
    3 c! p9 c7 |: d; I, B5 }
** X  t0 ~; L1 k$ @

3 r5 y$ [% e- X, f! o( |1 H9 Q) R+ _# @8 l; Q& x
playbook: K8 A! F: _; F# Z' e, \

- t: T* t& `- ~+ E( ]- _/ F; q/ |playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。 $ |% x2 G% y- T& W$ _5 w9 w9 `
7 A* V  F/ C. y' c4 P# l* s% j
一个简单的playbook配置如下:5 a* p) Q, U3 K* t, q

4 F. E# }2 ~. U+ e0 G7 B' _- hosts: local
! }) O* k1 G7 E  remote_user: root6 W. j) Z0 O0 _( F
  tasks:
' x' z+ p1 B4 S, ~  - name: echo hi% m0 Y+ o  z) R: f
    shell: echo "hi"8 S; L, m+ q  U  i; f; k  G2 B
* e$ T* E8 @  n

3 W. C+ I% [! c; F/ q1 |! N: Bansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:  R) K( x; q4 S- J& }1 v, D

. ]  R1 F+ u6 |! v; K# playbook.yml, W0 s8 Z. b- _: f
---+ N$ s' h' E1 T: _& M9 }
- hosts: local  # hosts中指定0 ~" [% [3 \8 d( ^! v( u3 k, [
  remote_user: root  # 如果和当前用户一样,则无需指定
7 p+ i) B5 I  d+ t# M! T. ^+ p, g( F  tasks:
. e6 B5 k# V1 @& L/ Y% Q      - name: whoami
4 J% {! b7 D& v) U! `" e1 X        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端* i& m7 n$ d: C) w
        notify:  # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行  m5 u  p# B/ @2 c
            - clear copy  # 调用handler7 h% d% L' p! H0 I! C+ Q
  handlers:! i! |9 H5 A/ {2 O: R  W
      - name: clear copy
- C% m* [  {0 n/ R7 |        shell: 'mv ~/hosts.dest hosts.del'  # 假装删除' G, w6 f/ ?  E2 t

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 15:21 , Processed in 0.187500 second(s), 23 queries , Gzip On.

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

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

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