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
批量执行
支持模块化,支持playbook(相比puppet还是弱些)
上手容易(puppet上手有门槛)
权限控制
* e2 i/ J) t- Z0 V. X% o
! 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' o
172.17.0.2:49154 ansible_ssh_user=root
! d; S+ q$ ^7 r n
172.17.0.4:49155 ansible_ssh_user=root
" c H/ ^+ V* p, \9 X" {
[vpn]
% U2 p' ? N+ u
172.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
安装软件: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”
! x5 M$ b8 Z; D
*
' [: 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 k
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。
D! u ]# ~5 \1 C. |
' L1 l+ s& W' K
一个简单的playbook配置如下:
8 I: P6 O& y ]9 }* ~
: e: G/ @! |$ {
- hosts: local
7 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 hi
6 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 q
ansible还支持设置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: whoami
6 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