易陆发现互联网技术论坛

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

ansible使用普通用户运维

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

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

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

x
配置hosts
  F) @, |( x) [
5 V6 G3 {4 q& Z: d# cat /etc/ansible/hosts: v* e1 m8 r: k1 S4 V+ I1 J
+ Y4 [* @& A5 ~; z: @$ ]
[test01]# W" x$ i5 d5 u! R
10.212.52.14 - Q3 Q9 x0 W* L9 k/ c

7 r7 ^* h; H: M# [2 S, `! y' S% Y( eansible_ssh_user=test
5 M! ?1 ^  w, }) A  ~: A
6 a& f  ]  B" P1 m" _0 C7 ^ansible_ssh_pass=111111 + K6 V+ a2 U. M

# m' k" Y$ @, B9 s7 w$ X& tansible_su_pass=*I2145
% ^' c1 p# V3 Z; Y" s, V  g7 i# g' ~* V0 r3 {, z+ P
10.212.52.16
: J% r- t0 t  |6 E
0 V! B6 t; A- @) gansible_ssh_user=test
* h8 A. r7 {* J, T
" x- o! j0 q% e% \ansible_ssh_pass=xyz123  
' V0 b/ Y, F' N( `+ I! a( a! t$ c5 M" Y) U* f1 @
ansible_su_pass=mn1Pokm
+ e4 Q! P) p$ H( S& c! b7 x. W1 ^% b# R$ U2 K
10.212.52.252
! b9 W! S5 O# d  g8 |* A
! }  w) J2 F* H2 l3 |ansible_ssh_user=amos
: G" E1 X' j! L4 ~" W3 s
9 z& a# Y( e0 v; M: L* _ansible_ssh_pass=asdf
! g7 D$ v9 C2 N9 W4 m' Q# R; P5 }4 K/ A4 i
ansible_su_pass=xyzp)okm
! I. X/ Z8 L1 |) A! M
: Y* d% e1 D* Q, K
, v9 u% o3 ~5 g0 Hplaybooks核心元素
& `* g5 ^* d; J# _$ e
' v0 [. V2 _4 a9 _+ \0 I) M7 F/ a, f, t2 V
Tasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色
. G( S% x4 ]! s, i" d
. m6 y! `# N* h" `
7 Z7 K6 Z' s0 d& d# m(2)playbooks中定义任务:
- r  D; n0 T  s% ?! o
- _8 I% Q) ]5 D- o! F8 q/ l% @- name: task description 注释描述信息
6 B# V- T7 H2 v3 ~. g6 ]3 b1 \module_name: module_args 声明模块:定义ansible模块参数
$ N: `3 }2 \! x+ Q" U; t: w& s
, D, l. y1 o6 L, r9 z6 j4 {

' e  C! O" k* b4 o9 H  h" l3 p3 {- Q                               
登录/注册后可看大图

. T6 t$ a# x7 S' s3 ^. O" s' V! d% h# H+ n

! j# Y7 J. D2 x' m' {0 e# M(3)ansible-playbook执行命令:3 I( @7 ~  b% \1 V) @
7 K% t& Y* ?/ u% ?
ansible-playbook <filename.yml> ... [options]) N; z0 B0 o5 i" H# D& O

) G0 e* r7 }; }0 q

) |7 R/ C  o3 u9 j                               
登录/注册后可看大图

( ?/ A& ?# V0 m* p. E/ D+ e1 T( Q, {9 i3 R6 k) [
4.playbook--- 变量' \0 Y; K' h, `) L6 Z, C$ s

! p4 S  J+ G" L2 S6 n( {* n(1)变量命名:字母、数字和下划线组成,仅能以字母开头;
  Z0 R4 M4 S' }* y8 \1 X* E! K* A7 E$ p5 p8 h+ v

# u2 b/ c2 E; G( }9 R0 A(2)变量种类:
2 j2 n2 I( v5 o: {" C" u
4 [% l* o' G2 M% n9 K+ R' I" }* ?5 o
1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;. J1 i4 q& L0 x: n5 n' Y9 j& g/ M

8 c' t; k" U. P2 w3 [  z- G3 Y" c- s* V% d& J/ U2 |
2)自定义变量:" C! t( W; }. e
通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"
) x; d. D7 E; D3 K% @/ Q& x) K" T/ l- P- f3 d. C2 J- k( ^( C
通过roles传递3 }/ m4 ?8 G+ l& E% G! |  u% f$ o
6 w0 m3 `; P/ [  k( M! l
- Q! J9 S. u  b( S3 q  S6 E
3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量4 F3 j( V0 ^3 H
实例:
$ d& A" I! g! B1 s# A: ~, M6 a" g" |& [! I  q
2 p+ r9 y  i+ {6 O
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:
2 T4 {+ ?5 Z  P' [3 e8 c
5 k& x: ~6 O, i, m* y/ O+ v$ f2 P-u username          #指定ssh连接的用户名,即执行后面命令的用户
0 v8 a  v& z. n& b+ L-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts+ X( F6 u% |" g' d! I* y
-m module            #指定使用的模块,默认为command0 s7 U$ \3 E: g2 }: m% |+ {/ [" V
-f 10                #指定并发数,并发量大的时候,提高该值* t& _8 E) t9 X* E
--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码
* N+ }  M( n. L5 \% R; M6 r. }8 E& B) ~& d) B
; W( `) O$ V& f% b9 c: ]: Z; h7 n1 ^9 Z
执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。
8 z% T  p' ~3 ?# G+ B  C( N0 S2 H2 M3 X: ?" y. V
ansible-doc-l       #查看模块列表$ h4 n3 n2 D$ f# _& q0 F, R& d& `4 O
ansible-doc  copy    #查看copy模块的详细信息: h8 b1 c6 }( z# ?
ansible-doc  script #查看script模块的详细信息; F% {; g' M  a' T3 }
+ {7 x4 p* u* R) K

, t1 k# n3 C0 I$ s, L2 c' w$ N" B5 ]8 y' x) R, W, Q4 u
6 x2 y7 n' D' \7 J2 Z
6 W/ [- j1 S) z1 P9 S" P
  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。; o5 A$ Q" \( n1 f. U
* q) K% F. {) P6 {
此例:当某个文件变化后,移走该文件。
! n0 v  s, J0 J) x) r
0 K1 O. n* G' o* C9 T#cat  playbook.yml1 A% V. y2 h2 w
---
+ k) d5 X! n, _. a* B; `7 m# N- hosts:local  # hosts中指定
3 H. V/ n2 y6 i: ~3 e& M  remote_user: yang  # 如果和当前用户一样,则无需指定$ n0 ~  {( Q$ ^% O
  tasks:4 e, s: ?  a" f
      - name: whoami
0 l1 M6 I7 k. E1 O0 [. v) L        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端
! G0 B0 m: K, c        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行. g4 U, E: _1 p2 @7 x$ T  B
            - clear copy  # 调用handler中的clear copy定义的动作! E, F2 e0 r% n. q
  handlers:
' y0 w5 j  [. ?! ^+ q2 Q      - name: clear copy; S' p+ S  |! o1 t) F+ n2 S5 Y
        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除
9 [% G4 O% u1 d% [8 l注解:
; w! H: v6 G, m+ K4 j2 i
3 c+ t% B7 P- H& r) y& F5 ?tasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容. }5 V. ?# _7 W3 H/ k
notify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler9 \1 Y6 G) a; ~7 Q
handlers:与notify结合使用,被调用的handler的具体定义2 X5 n" O3 m7 w5 O9 T, s

- X: w$ |. E1 @, ?: Xplaybook执行方法:! h& \+ E& ?. s8 s
3 B6 l0 y' b( e  L- d$ I( m
ansible-playbookplaybook.yml    5 T$ H  J9 L6 u
#主机名、执行命令都已在yml中指定了。4 C( ~: c9 {  ?

$ g6 ~3 l9 h: r, U
: R  j( h! E- b- B7 ?# L, c5 a0 ~! e- R4 @, }; K
) W; D# b5 x, K# {8 v3 c0 f2 f% W
 楼主| 发表于 2017-3-10 00:10:41 | 显示全部楼层
ansible 其它功能敬请期待研究测试。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 21:34 , Processed in 0.052299 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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