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

ansible使用普通用户运维

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-3-9 19:31:19 | 显示全部楼层 |阅读模式
配置hosts
: P; C' K3 ~; i3 Z) M& S9 S; g
* Q* m/ M( v' B6 {7 i; x# cat /etc/ansible/hosts' v; O3 E1 m! g( u, u$ W: f
( j, L4 c  z' K9 h5 G$ ~
[test01]8 s3 b" I$ f0 |, n7 M
10.212.52.14
0 U+ X' K6 j, G8 }* I/ I/ ~
+ ]: c* U7 G7 B1 y3 F7 V6 Qansible_ssh_user=test 8 i" h9 F# z$ R' q
( G9 z5 D, F5 \$ }; j6 l! i
ansible_ssh_pass=111111
" }! r/ B! w- j. x) a+ b# K) G
, w/ M8 p  [. |4 X, x& q! Pansible_su_pass=*I2145
& S# e) }7 O+ n. |  D! y1 O
2 s& r; K# l" w+ \7 v' y& U# }" D, {10.212.52.16 6 e( V6 W; e+ |9 w& H  [2 V
( J" k# B1 J9 z
ansible_ssh_user=test
8 g1 y  x/ k) s' x" ^1 F& W2 K4 L  z; y* f) s' S& N* u1 m  U! Z. h
ansible_ssh_pass=xyz123  7 B, U9 q+ q' l/ C! J  V4 g

6 g& Z$ s# [- U# V. d' G3 Xansible_su_pass=mn1Pokm, f* z% M" j: }

! U# a+ d# E: O! J7 f+ |10.212.52.252
3 p9 {3 G! w+ }0 c& r2 Z
5 [" z. w4 u' c+ W1 O! Iansible_ssh_user=amos
5 p5 n! k* h4 W4 D' J+ w  I! c& l( F9 O0 [8 c* \: M* I" K8 X" E6 x
ansible_ssh_pass=asdf
# r+ W. o! k( _: R& }6 ~6 T- R) f" l5 {  t+ V: X; d0 K7 J, p0 R1 r- b8 J/ `
ansible_su_pass=xyzp)okm; S8 T" \8 Z0 U; ]% P7 P  w
* _; j8 A% `, J- ?* v# `

7 _$ H  B7 v) ^% Uplaybooks核心元素
6 d8 |8 t' W& T0 m! K. F" W- ~1 a
$ y4 t9 F0 g4 V6 U) D: @/ ^
) c! H, m8 ^9 U4 CTasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色; h0 e! ?+ G8 d( D0 Z) P! L( w

% K) {1 L3 q- o  Q, T! `9 U6 Z# G) t; Y' I. _) j4 {1 ~
(2)playbooks中定义任务:
7 M) k0 |1 m; ~9 c. D3 N
6 {3 t$ w0 ]" _" T% I0 h- name: task description 注释描述信息
. C6 S, b% ]9 Emodule_name: module_args 声明模块:定义ansible模块参数. ]( g. J/ }  K0 H" G3 D, D
& Q! ?) m/ }) x9 V7 v' i

5 Z- `+ \8 ^/ Q( X# ?* w( A, X3 _; b8 L/ j- D4 d" H

0 B' V8 p+ h; h) F(3)ansible-playbook执行命令:
& k) F9 d! b) Q% f  X6 g' {# }% v$ ~8 f) W: m5 w7 ~+ s
ansible-playbook <filename.yml> ... [options]* Z! c. p2 F) e3 w8 m7 B: C! u+ T

# f! [; o( {9 F; H+ K
* g5 E: z# m$ a, r$ m
7 W; e, X% p& J5 p4.playbook--- 变量: r6 ]: ]1 z' S

  e+ O7 ]* C! \/ k+ |- @(1)变量命名:字母、数字和下划线组成,仅能以字母开头;) \+ F! U5 i1 s! r% U

+ h6 N4 H8 K# f; v$ ]$ H- i8 b& Z) C) m; }
(2)变量种类:, U  ?, `* l9 t* K% D5 N
1 \/ h. @( j7 s$ U. E8 f2 S! K
2 I% s' L1 d$ R$ \: w  E( C
1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;
5 b) x2 W8 c: N1 z4 g( e# X
) E( Q: R4 @& ~2 M( T+ G0 W) A5 S5 v# {* Z4 I' M/ j
2)自定义变量:
7 g/ v. Z: b4 O8 f通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"
& ~4 ^6 z" L  Y
1 }6 I2 ~( b- D) B0 ^通过roles传递
5 q& V# R. z( M1 y6 c/ F  b) x4 H& [( }+ D9 V) }

% @" f4 j1 j1 k: h8 }3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量
4 ]: q/ Q) ~% u- u实例:! h& y) v8 D; ]( o3 Y$ P
, _4 ~' }- r- R" z

+ q  ~' |: d+ Q/ ?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:
$ q5 V1 a6 k8 n0 [' N+ q1 c0 w" X
' B5 ]! w. V. L2 ]8 e, ^-u username          #指定ssh连接的用户名,即执行后面命令的用户
/ ?$ Y4 {7 e0 [6 b% q8 ~" A9 b9 K-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts
$ i0 @2 T. s8 ^4 N, V-m module            #指定使用的模块,默认为command
. _0 f3 _$ U9 B: H0 H-f 10                #指定并发数,并发量大的时候,提高该值
' a+ C# w7 t0 f& J--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码% o# h+ o( A( y& B2 q! v
5 w: c- x8 O. d6 q! x

( s: ^; w9 n# A# E! b& P执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。
7 A: R  T' T4 w
( s* M' j, O& ]- D8 Lansible-doc-l       #查看模块列表! |! \6 }2 v8 u# k- ^$ w; l. c4 [
ansible-doc  copy    #查看copy模块的详细信息4 D& Q& `8 s" y+ J( J: {2 z8 f
ansible-doc  script #查看script模块的详细信息
; i* ]+ {. E/ P9 u& T6 }- C
; G4 \- R) j& U! v
* Z( u0 L0 g, k: z" Y& V
0 @" E0 e! z: ~5 T: X& I5 [3 H  e9 H' w; L, v2 u
; H# b" _! r. A5 E
  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。
5 R3 o7 F4 ~% T) l) E, |3 c7 V* h3 v8 |- i" l
此例:当某个文件变化后,移走该文件。
& \2 G* m2 q$ m5 V2 p: B! T; N' J; J4 s% ?
#cat  playbook.yml
& P* l7 J2 {6 m5 S---
* j% s9 g+ S* E2 q6 _$ x- hosts:local  # hosts中指定7 x. i. R& q& r- Y
  remote_user: yang  # 如果和当前用户一样,则无需指定3 E' k( P) G+ p* ]
  tasks:
% a, n" G( M* E2 k' e( D: R: M      - name: whoami
* z) z: X* q/ p        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端* p- O+ d* n# }/ X
        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行- ^3 H4 J4 }3 p
            - clear copy  # 调用handler中的clear copy定义的动作
  @/ O6 ^% M9 w! D, W2 L  handlers:
9 R1 n6 o. [) H# N- S* |      - name: clear copy
5 V$ ^5 m2 B5 @0 ?. C( S        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除1 ?3 r! q5 }7 s" O' d- r& u
注解:
" p7 L  ?" L& f: u( E5 p$ f5 E" i2 x9 b  Q8 j: N
tasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容( P( X& k, j. M5 l
notify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler
* @1 M  Q0 H2 a' J# S$ J# Vhandlers:与notify结合使用,被调用的handler的具体定义
) P: {5 K6 ~  J0 {; K  `8 ~) B0 @3 `8 L
playbook执行方法:
7 T- W( t  a5 l& j: B' }0 v! _) _2 e& j
ansible-playbookplaybook.yml    7 J! e$ a# Z' Z
#主机名、执行命令都已在yml中指定了。: _/ D, v5 l1 Y/ ]* U& e4 E
8 F1 m& j, M4 i" c1 u; x6 U
, r  p$ y! Z% ^
1 |% e$ J! z; ^4 J2 l/ z

8 P1 A- r/ X: d* u$ i3 q# W

1

主题

0

回帖

12

积分

管理员

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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