找回密码
 注册
查看: 4956|回复: 2

ansible使用普通用户运维

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-3-9 19:31:19 | 显示全部楼层 |阅读模式
配置hosts
* n7 z8 M/ I3 w/ x
9 D7 v. _! [) _, I# cat /etc/ansible/hosts
1 w. k/ V7 K3 p0 N; i  B
7 C. ]7 R7 h, v/ f# F[test01], {% w, R" I* J3 q+ D& C, ~
10.212.52.14 . B3 _' |  ?9 M8 @

9 L- o8 }- N5 s: w5 h' Y5 @+ [ansible_ssh_user=test 2 K: |& y) w8 c- b, D

8 x( {! i" N- T' [- r! Eansible_ssh_pass=111111
4 E/ `+ h7 r) W- [
8 m6 x- N0 ]; X3 M1 ^- [ansible_su_pass=*I2145
+ q' }, Q9 Y& I
7 P; }/ k. ~/ a; e, E' _; g10.212.52.16
0 Y( Y, |0 s# d; h1 e, x5 L- d5 a& u* K- o4 `0 t8 w9 U9 G
ansible_ssh_user=test % \; h/ g6 Q4 q' R, c) F

4 E' G2 a; ?. _! Nansible_ssh_pass=xyz123    @: J8 B1 Z+ _3 J# l

2 i. I) t8 L3 e3 ]3 U$ W" ?) |( Eansible_su_pass=mn1Pokm6 f/ z9 }% Y8 p! N2 h. _
% C/ r/ F9 l+ J: t3 J
10.212.52.252
) c/ d5 C- t6 L! Y( F; e; F7 c( h. n1 K
ansible_ssh_user=amos 2 H0 k/ j& A9 A9 t, c( A+ q
" G& l8 z/ M* ^) c
ansible_ssh_pass=asdf ! h' y: w, x8 t2 b* q  a: T

8 b$ c2 |" H2 pansible_su_pass=xyzp)okm" N0 N$ z1 R' p0 e

9 ?2 g% F1 i, w- i* I# c% m% j' b5 Q1 c8 ]- h" q) a  L- u, ~0 J; I5 ]9 D
playbooks核心元素( _% F$ m, k) H/ ?% I2 B
  U4 a; B/ T; d- t! Y

6 s" k1 r; ?( q8 UTasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色
+ |. u# j7 D# X- x" U$ L5 e5 K, e' h$ w# V8 }; x

; I# A/ [* R1 b(2)playbooks中定义任务:  `& O, I& U) i5 W  l
5 K$ [9 K4 ^: G" }' V$ ]
- name: task description 注释描述信息
9 f0 [2 x1 \9 Z% H. j5 Tmodule_name: module_args 声明模块:定义ansible模块参数, o7 e9 T! e; K. k

/ j# c9 q1 }. _( k3 [. c/ V! h1 i0 X) P. l. `

' y2 o6 s8 D- X" s* }
9 @" i5 q/ f. J* p, v( W2 Q(3)ansible-playbook执行命令:' ^4 S, f5 ?& w- s! b- {

( G# z$ m& N+ Z# K3 f9 tansible-playbook <filename.yml> ... [options]
: i* q* H9 R' E$ W+ Y
, _3 v) _* F& z" i# O/ Q# z& e, f$ P. }
3 r/ L, t7 k$ E' }% K" ?
4.playbook--- 变量
4 l8 i5 {' C, m  X
: m% C2 n  W1 z. f/ M/ G(1)变量命名:字母、数字和下划线组成,仅能以字母开头;
# \! w' C% ?- ^. \: X9 H4 h- v/ }9 P% ]/ T& _

& G# o% L$ X5 L* ]9 f(2)变量种类:  b+ s; F  e9 }; |. B
" I" \! X7 y$ G, `) A

) ?  c0 x# G! Q0 x" ^1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;; N5 |8 i: x' A% [3 i
; M2 V6 m! G  G5 C7 ?( q$ \
* l: R* a/ t2 y& G
2)自定义变量:  C1 K1 }. U! Z2 r, z  v: z" x
通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"% s6 W, I* v% [) Z- _( S
' g5 D; S* u" c0 |7 w5 r
通过roles传递
, W- Q% O; E1 F& e$ w9 W) J, o$ K" H6 P

  N: y3 Z- a& ^; w# c4 a3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量5 X- H. n& ], ?7 X' ]- g
实例:+ V0 U9 G0 F' u$ E) S* ]

; e% [, I! N  V% T
+ |: C( M, i* Q0 n

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:
& H; K/ a' w1 k! C! u
: i% n- Q( B* Q, i- ~/ i, D-u username          #指定ssh连接的用户名,即执行后面命令的用户' A1 I" P( Y1 Y0 m  }6 b
-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts7 l8 Y" f3 W0 l" B
-m module            #指定使用的模块,默认为command
) W) a) A, G7 o$ g# W6 p- e8 T! b-f 10                #指定并发数,并发量大的时候,提高该值3 s8 W7 j6 j6 w: J. G3 e5 i; I' |) m8 K
--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码/ a! D& Y3 [7 f5 D

6 _/ Y: i6 S2 m2 t8 X/ t- u
2 |) l- A& V3 [# K执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。, @3 I' h5 l- J5 T( S% p, y' s

  d! N- h# x/ v3 Z# l# sansible-doc-l       #查看模块列表8 p. C2 L0 r0 y5 x
ansible-doc  copy    #查看copy模块的详细信息# w0 F' |* w- K* c9 l
ansible-doc  script #查看script模块的详细信息9 Q- v. o' T; u8 O9 ?; L5 Z
3 e/ u+ V7 m" E+ p! z
$ X; V1 f. m1 b6 N$ A1 A
$ n+ d2 A6 l7 @# P+ L
) m' z# r( i- B8 }- J% X
7 J4 w) [6 n1 i- Y% U; Q. S
  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。
4 F5 v8 e' K! T, d0 h  X: L+ \% E- h) ^) |. I
此例:当某个文件变化后,移走该文件。' M9 S8 i- A4 H$ p1 t9 O. V
5 o8 r' c6 {! D; k( n! R0 f
#cat  playbook.yml
2 \3 a3 ^" o4 {/ [, ]6 j---
5 j% ^' M) W/ }; x- hosts:local  # hosts中指定3 ~! m5 [, @+ V% y- d1 r
  remote_user: yang  # 如果和当前用户一样,则无需指定
0 T+ E2 ^: S6 N8 L- m  tasks:
+ g; y- t0 H! l8 h- [3 O      - name: whoami
, m0 P2 m1 ^- C. `) x; v* C  N        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端+ e& Z) K3 {6 ^  l  p
        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行9 _- J! P% N' S3 W. ^7 s: _
            - clear copy  # 调用handler中的clear copy定义的动作- _- z4 G1 p; L8 Q
  handlers:
2 k! K% l; N6 b3 `      - name: clear copy8 U5 N1 A" L+ B* D. P- L6 N; @
        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除2 L( k! F8 s* L: `
注解:
$ R% I2 r6 p0 V4 o3 R" ]$ u" k; y. X4 k. l# t; v
tasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容" V7 }1 g2 {3 l& X
notify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler, k& ]$ `! B. B; X+ r) F
handlers:与notify结合使用,被调用的handler的具体定义2 q2 l6 V* X( k2 E7 E. ]" S" u' `7 v

! y6 t  i+ ^+ Tplaybook执行方法:
  ^% ~, r% p9 f: u0 X; E: o
4 Q( e+ M0 [5 v' `/ a: Nansible-playbookplaybook.yml    - d5 X7 ]8 w1 }( t6 ^. @
#主机名、执行命令都已在yml中指定了。) v$ P- ^; u/ p! {+ `

* ?" }/ F( e' H. g  k( h; ?' R: a8 H/ G2 b+ J. d! X3 d
  Z3 }0 ?' b) l  n; \

: Q" u: t3 k" K8 f4 |2 ~

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-3-10 00:10:41 | 显示全部楼层
ansible 其它功能敬请期待研究测试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:43 , Processed in 0.017181 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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