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

ansible集群工具的使用方法

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
: r; l8 E3 i$ d% [* y
ansible简介/ o# M1 a, N6 V2 b0 V' d
ansible是与puppet、saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet、saltstack那样都需要客户端。与puppet类似,ansible也支持丰富的功能:& n0 T5 o+ E" F* x) R6 A1 }

' @9 e3 c3 n4 q% @# j/ D+ _/ C
  • 批量执行
  • 支持模块化,支持playbook(相比puppet还是弱些)
  • 上手容易(puppet上手有门槛)
  • 权限控制' x3 u- t- _+ G1 c* S
8 h2 \% I8 T) u
安装方法为:yum -y install ansible或pip install ansible。* V: `5 k8 k6 o4 m

1 m; I7 N) J1 [& t5 M8 q
6 t4 t- a1 D' ^( M) v/ |) _使用方法3 z" v( D. D$ h7 }- K3 v- f! @
/ I. H  r* g3 ~% Y4 x
: Q" I: T0 z. g
在管理集群时,ansible需要先配置集群hosts列表以方便集群操作% K( i- e) A% _8 I5 F/ g$ r

; W. P/ Z, ^: \# E: N3 i7 A; e$ cat /etc/ansible/hosts% n0 x, F% S( i9 _8 T  L3 G$ R
[local]
/ g, k) |4 `  |0 R0 I7 A" k4 y# 配置密码登陆,需要ansible本机安装sshpass' R2 x! C3 j- O* C
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root, R& x8 H: ~' d( S5 o
[zabbix]
: @; d7 Z9 U5 [2 u# 密钥登陆1 w: w7 p9 [- H6 O* p  ~: ^* q8 q# Z
172.17.0.2:49154 ansible_ssh_user=root
6 Q, v+ V) h0 b2 l8 ^172.17.0.4:49155 ansible_ssh_user=root- T! E9 b; i0 ^7 k5 f$ d
[vpn]
' n/ X5 I7 o$ R1 b3 l! v172.17.0.10
$ Y0 H5 w5 g# s" ?$ V, A
" \$ Q. |# O6 g, r) K2 z4 ~; M( p3 u6 S5 F1 m4 t4 s$ h
测试连接登陆是否OK) Q& z- l2 h6 h1 D

& j7 H$ D/ H, ?- I( W* t) `  }$ ansible local -m ping' {/ p/ f0 n% a# c$ W5 {9 n! Z6 O
192.168.213.135 | success >> {! s9 i% _# y, x
    "changed": false,- c$ R3 @; b- k2 X) _, d
    "ping": "pong"# q  z$ T3 A; Y* d6 [, O; a, l" _3 E$ `
}% W+ t3 X& ~( f" L

9 Z* e; F; A4 q6 j! E" K# N$ ?* U- _
ansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:1 o+ E) E9 y  k: w
8 `4 O: V! s, |) ]; I5 v) x7 Z3 {
  • 安装软件: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”
    ; T, Q$ F7 p8 n  p8 {- Z" x% M
*
+ K4 c: o2 w& i1 q" W
1 [3 q& _2 f9 ?) ]. A4 ]
/ r, V) e4 v+ x; Jplaybook
' e0 x+ Y7 u( |" i9 {* i' z" g5 s2 a
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。 6 X0 n$ i. ^) [4 R8 f
* y# z/ J$ ]: `$ \
一个简单的playbook配置如下:  s% W1 @" H. l

" G$ L0 ~) J$ H- hosts: local: c" d1 J4 ?. Y4 H& l9 m
  remote_user: root
6 b- _+ p! j3 B1 \" C) m  tasks:
7 _0 K& Z5 J9 z2 \% ]% ^/ e" A  - name: echo hi% `& k; v; m# b' r3 G( `4 D$ i  h0 z
    shell: echo "hi"# O9 f- C6 e. U  ?, u0 d. |

- L8 f* w, f+ }2 t" r
. t! b' c9 P: s$ ]# B( E0 bansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:+ P# k- q; ^$ B5 Q* ?) e4 ?9 n

- [% |6 m4 d' j' h" ^# playbook.yml8 V; k7 x4 u4 m9 @; O; M
---
' H& n% i& b! l4 c8 Z- hosts: local  # hosts中指定
8 H' x2 D: o1 ]: K) [5 h  remote_user: root  # 如果和当前用户一样,则无需指定2 I7 r$ R$ x  q) q+ _
  tasks:& k& U/ o7 p3 ^: F8 L5 ]4 a
      - name: whoami
' X: M( g$ b+ \        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端0 O$ B8 ~0 a- l- B7 U6 x9 S
        notify:  # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行
/ _" B: b' R2 h& m0 N. i" H' C            - clear copy  # 调用handler
& T5 |$ W4 _) b- l! ]1 G) C  handlers:
1 f: g6 v4 n- E/ r3 W- N      - name: clear copy9 I5 @( ]5 O, E  X0 c
        shell: 'mv ~/hosts.dest hosts.del'  # 假装删除- B2 ^. C- A8 i6 p( w/ J8 v$ ]

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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