易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4953|回复: 2
收起左侧

ansible使用普通用户运维

[复制链接]
发表于 2017-3-9 19:31:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
配置hosts
" u# L) G' s, R1 U, u( f7 f5 A2 C- L
# cat /etc/ansible/hosts4 q4 I1 J6 v  r! X
2 z: r4 F" Z9 M! |
[test01]0 G2 `; \3 I, u5 E) L9 \
10.212.52.14
0 U' ?0 T" x4 p/ T1 l% J. K& @1 r9 A) N0 K
ansible_ssh_user=test
" u( n) V/ N5 ~
7 Z4 M' c0 U# {4 X( |  D; oansible_ssh_pass=111111 # ]3 E& x6 ^# q8 F3 D$ G

; h: M) W! s+ F1 t- r) ?0 P& z8 Bansible_su_pass=*I2145! U& V6 m( d* {/ B5 U" Q- c% r
0 H, P8 m, N/ C1 v: D9 {3 _, ?
10.212.52.16 ) D8 _3 |5 ]# o7 b; S, }* n  v

- E/ m6 N7 i3 m' qansible_ssh_user=test / V' g$ t+ N$ V+ f. T" d

+ j  [3 |8 O! \9 M( \ansible_ssh_pass=xyz123  ! c1 \$ J6 }( h& z7 F# ^
" M# S" o% v' s5 L/ W
ansible_su_pass=mn1Pokm
+ e8 q( A, D. _4 D" ^* z; m0 U7 b: L; o0 a* |  g% {
10.212.52.252
; k% \/ s3 [% J9 [( c
" G2 \0 ^& f6 X7 d4 E0 i8 Dansible_ssh_user=amos , y& N3 w- E1 ?( \' B. U2 m; a

2 H4 b& q: w/ y0 t+ U) D+ Qansible_ssh_pass=asdf
; j6 ?& H6 A, {; E; B# }! P: P6 F
2 a" N# w3 K" H/ d0 J; y6 pansible_su_pass=xyzp)okm
0 y7 R$ w9 q4 Z8 h
6 q6 w. U& W' V& D3 C* u8 c% T( ~, F/ {) \. R8 W# {7 F3 |
playbooks核心元素! c' v% ~. P/ G. A# Z
" b( Z8 G2 H. b4 |+ V
9 ~. i2 b: U3 N+ G$ a2 X) d1 C
Tasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色
9 o$ ~" @' A& \! j) z' E
# i& M* E" }2 d" w4 X
! }$ R* X- h6 _9 T' H(2)playbooks中定义任务:
; d3 U" b9 x; T. h$ q
4 [3 ~& t% i( R% f0 e& J( b- name: task description 注释描述信息
8 v0 [6 e5 g$ g+ r1 \  k9 a( Omodule_name: module_args 声明模块:定义ansible模块参数
5 m* C6 o5 S3 [$ G. e2 A; T4 o- a) l6 ?

7 Q- l7 S5 O' L" q+ l, f7 q8 z                               
登录/注册后可看大图
+ f5 [& y0 V7 _3 w

  S  x% E+ B& y' }. \# R# P* h7 u
3 V" d7 h7 Y/ D9 y# A. q(3)ansible-playbook执行命令:! w8 x+ K4 L- A7 S$ A

2 ?* P+ |4 Y/ a, x5 Yansible-playbook <filename.yml> ... [options]
0 R( h% ~* k4 C% j' L1 ~- k- h& V. Q- C
6 h# r& E9 H& B0 P- M
                               
登录/注册后可看大图

* B! N% L. L! e8 ?- u+ H/ b7 c; T0 E- r
4.playbook--- 变量
6 N- q; s! W) u7 @, z9 U+ J  A' m1 G( j/ s4 F
(1)变量命名:字母、数字和下划线组成,仅能以字母开头;
8 e3 F+ Q' r2 z
, [/ m) N3 c" d- ^, g3 s% \& H: |" l9 A: m5 A
(2)变量种类:) W4 H# K' F8 s) j3 `

) ?4 W0 [" C. D) U6 t* I/ n; g; ]& q
1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;
$ F2 F7 O* ]/ Z! Q$ l% k9 m8 d; c1 T6 {4 n3 I6 Y4 n* L
3 I( Q& t# E( n
2)自定义变量:
& X1 d& J$ w7 ?1 U1 V通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"
1 w8 q' s4 h/ ~/ u
! p; e: e( \' J7 t) Y0 r通过roles传递
3 C; L+ x. i' n: Z: ?: d1 l5 @9 A; p! f- ~6 {5 I. ]! Y' ^4 u

4 N/ x! s/ I' o3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量; D2 R) p! p) w! \: w- @! K
实例:
  ^7 i) b! F% p6 E9 A7 l" r, ~+ j2 p' }& |
- {6 d2 u2 l& q
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:
4 E) r* z1 T6 c% x; O% [
8 N5 F, l8 h9 C, F% G-u username          #指定ssh连接的用户名,即执行后面命令的用户8 Y, n2 n8 }0 ^4 q* a  c
-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts
! b9 i$ `# U4 b9 F/ h/ A5 A-m module            #指定使用的模块,默认为command
% Y$ ^( Q* ^6 O# B-f 10                #指定并发数,并发量大的时候,提高该值+ |; e2 k$ e8 }% ?2 S3 K( ?3 v6 \
--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码
% c' ]; v8 M$ B; N- I: \1 ^2 S# j! K3 N
- p5 S* L1 D$ |# B% Q# b& v: z
执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。1 }" {4 n0 N1 x, F7 K
+ s  Q/ g, Q% i0 u
ansible-doc-l       #查看模块列表
  g- |% X' H9 xansible-doc  copy    #查看copy模块的详细信息
8 F; w. H& M2 w$ D6 P, _. o# {1 Lansible-doc  script #查看script模块的详细信息- P* _' Z0 O3 B1 ^+ C; _' B$ G& r
; ~: ?  W+ @7 A3 i

+ A0 a! ^1 m* b' l- \* y" @$ e- @/ P* x
: e/ q" ^1 v9 W% t2 ]1 u

- ^3 C# d, ]6 F5 D, {  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。2 [% p5 X' V$ O  o

3 k, b7 M- H# l; e" \& L此例:当某个文件变化后,移走该文件。
) \) a# |7 z  Y
2 Q. Y8 X8 @) G; }. F! A$ _#cat  playbook.yml( h. ^& Y# A. Y0 ?* }( w
---
& k3 a% [4 O! o  ~/ m' M/ Z1 |- hosts:local  # hosts中指定% W7 O- `" ^5 {3 S! x
  remote_user: yang  # 如果和当前用户一样,则无需指定
1 K6 J2 a7 S  a' b: D: p  tasks:
, `& I6 Z" e6 ]' i' O) S! j  o  J3 q      - name: whoami9 M# J+ T) J; c6 J" w1 t0 g$ l
        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端* w+ ?6 \  q5 H3 U
        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行# y. ?. y( a  G( K: V0 y, \; G
            - clear copy  # 调用handler中的clear copy定义的动作1 P7 w8 u, N" U+ N
  handlers:" z/ Z7 y' K* H) ~7 ~) {, N" Q
      - name: clear copy
/ O7 k; W, h- `9 i        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除- q: c0 h" M2 K( M
注解:
( ?0 ?  S: P* W
7 X$ J6 c, d) _. ]/ b7 Mtasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容
; r- w3 C# w% ~  @" m7 u/ jnotify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler
8 x+ z% \5 g4 ~% e0 B+ h! x8 Ahandlers:与notify结合使用,被调用的handler的具体定义) I1 w: I( N  e4 ~9 s) L! W4 ^

9 g! k3 t2 F. D6 e) h8 i! }  g" o5 Kplaybook执行方法:
3 `1 W% }3 y& ^+ o% y5 a% {" C4 g4 m& V% S9 V/ l* {
ansible-playbookplaybook.yml   
# O* J* L8 x: Q0 J" v( l#主机名、执行命令都已在yml中指定了。
% N2 v" k6 R2 s; @2 E. {( ?% F
# I1 S+ |8 @5 t# c- _. U, S% N* x
* {/ j4 k1 V) e: g# ~

/ U9 {& p7 k( M+ i' D- e+ S6 n
 楼主| 发表于 2017-3-10 00:10:41 | 显示全部楼层
ansible 其它功能敬请期待研究测试。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:36 , Processed in 0.066261 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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