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

ansible使用普通用户运维

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-3-9 19:31:19 | 显示全部楼层 |阅读模式
配置hosts
" g' w9 @# n; N
3 k: J& s' L/ B- B& e. |0 W2 W+ F# cat /etc/ansible/hosts
" X5 H  G8 L* s5 @
. d1 z- t( i6 k8 v! A9 |( c[test01]3 J" A( R9 i- t* u( r3 m/ [
10.212.52.14
" |* ^1 o1 a- n+ W2 ^% m# M4 i) U5 f! I% \0 Z( T
ansible_ssh_user=test
# ]+ n9 L2 U  L3 U" l* C4 N3 {4 ]% K+ Y2 b
ansible_ssh_pass=111111
7 A/ R9 n. H' F4 L9 |$ l- g9 g8 R; }: h3 n4 V4 G% w9 ~
ansible_su_pass=*I21453 N1 A: n6 q: B  b
7 W* C# v- H: E. S# Q
10.212.52.16
! l6 b+ V( s9 f1 @0 _7 G5 q3 k4 J; M
ansible_ssh_user=test
. u' ~+ W  W3 @: W4 E% P4 m
% w5 D1 T+ V$ sansible_ssh_pass=xyz123  " f1 e, S' U' n6 ^3 n- U" Z
, h7 p. O5 e, y9 w
ansible_su_pass=mn1Pokm
. ]" T( `4 {8 B$ V- r+ x5 |
6 r$ w. V3 |( q4 g8 @10.212.52.252
0 |2 J4 |/ m7 s2 d1 Y
0 D; d% q2 d* m, b! C# hansible_ssh_user=amos ( ~. C4 S9 j* j! Z: b
# K$ W& G  m7 e8 r0 D
ansible_ssh_pass=asdf - j6 G* B3 N6 ?+ w
# g- R# z5 e  p5 b8 c/ y1 m% p
ansible_su_pass=xyzp)okm# ~0 M+ `" ^# y2 J7 D- w
! B3 Z8 ~. n1 m, M1 W" f& {, X

4 p' I1 ^8 u1 N4 T9 i0 A# _playbooks核心元素
3 r, A7 [  x% O: K  O$ S/ {+ E; n
$ o" O, W! s* }' J8 m7 I
Tasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色
( i/ M6 D3 T- U& w, X% v( n6 r6 a" ]4 e$ U5 J

2 g+ ]& J0 k  J  A8 l3 R+ w(2)playbooks中定义任务:
3 r+ _9 W- v( A7 Z6 ]+ Z, ?1 }
' l" f/ X, r4 W' K- name: task description 注释描述信息( E# w" V. \/ b
module_name: module_args 声明模块:定义ansible模块参数
2 A) j& w+ [. S* a9 ^9 ?7 j6 N6 C+ Z0 D. G1 f& x& g2 N

4 q( K) \& E* Q  w" m
! e: Q$ o, |1 A7 X, e) q
6 J, h, C& {# a+ _% i' W- k. x(3)ansible-playbook执行命令:: h, S2 O, J  J1 X# {
5 L8 R1 F" J- E+ ?0 G0 J# b" |
ansible-playbook <filename.yml> ... [options]& J+ @5 l) ]8 d/ ]/ B
/ }) ~  C' Q+ s  ^

3 ]: n. }- Z; x$ j3 r. e$ l9 k* m: g/ |3 M
4.playbook--- 变量
2 D( \$ X6 u: p+ t* z. u& A6 C5 {' V6 v' G" ]
(1)变量命名:字母、数字和下划线组成,仅能以字母开头;
6 i# w! v3 R& C* M, c, j+ b; B# n6 W2 G+ n8 `( i% F  k
) X0 E% T7 ?% e6 z" I3 s
(2)变量种类:
; K  y1 }5 Y2 A8 A8 s! i# I4 I+ ~" P% T0 H# Q

" @& I* C' p5 S+ H1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;* V. ?& d+ _# F" Y  `- h  j
' Y* [7 K' [* \
  B2 r6 K" H6 b/ z
2)自定义变量:' b' F( \+ Y$ a- x
通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"
) f4 e. e) o" q2 h" h: ?9 @+ i* D  {% g
: o5 L& S* r4 D& ^2 Y通过roles传递
6 `' {! y# U/ O9 k) J5 a2 L$ ~1 F5 ^4 L0 f, \% K- S5 e
  J5 e7 A# X* a
3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量5 v; b( p, c6 ]  S9 U9 z; w4 q
实例:
! g3 u6 _9 \" {9 K( d
" k- q; V$ T: E6 V# L% g/ o, T
2 L2 i# A/ G2 }4 f, Z3 [

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:
6 R4 E; ^: Z( r7 k. R* R6 d& h" t. J0 A# _3 E' b/ x
-u username          #指定ssh连接的用户名,即执行后面命令的用户
1 i8 A- r- d$ @0 U-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts& d: o) ^4 N2 G6 A; D
-m module            #指定使用的模块,默认为command
3 _$ b% q2 }; V5 o0 _( s8 K4 R-f 10                #指定并发数,并发量大的时候,提高该值$ D# |6 f4 c- V8 Q
--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码
. ~/ e, n$ k# M: ?- V3 I" R1 d
- k2 F8 U& |4 C- ]. P4 l2 [8 N
" i/ r( m3 y- K8 v" M执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。! }7 q7 E9 M6 _0 N% G0 ?# v

( ?! s8 @3 ^' W% Y% r1 eansible-doc-l       #查看模块列表$ b/ K6 e2 z& y$ n
ansible-doc  copy    #查看copy模块的详细信息" ~8 c- G% M+ f1 t) l
ansible-doc  script #查看script模块的详细信息  Y' W0 B, c$ u: O' c

( r; j% W* I: r5 Q+ x" V
* \8 Z) o% Y" l* A" _1 V$ L% f$ E+ {: Z- u& i
0 Z9 I9 P% ~" N: d! m

& K9 F- @, W- A3 G( t1 d' T; _6 z  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。, Q5 V2 o' j( v: ^7 X. l/ @9 |8 Z
( x4 u8 u1 e  x7 s+ M/ C" r+ T% Y7 e
此例:当某个文件变化后,移走该文件。& N. d2 U+ l+ T: {2 u* X2 a

3 o8 k/ q3 m8 ?#cat  playbook.yml
% `5 V/ o5 v3 L" L# Y! A; I$ p( w6 C% h---
$ d( s7 D' D7 [' _- hosts:local  # hosts中指定  g. o  k6 U& {1 k$ l9 a' H8 K7 E8 ?
  remote_user: yang  # 如果和当前用户一样,则无需指定( Q  S, a$ q) k; B4 Q! y3 K3 ]
  tasks:
8 i( ]/ T/ ^( l/ ~      - name: whoami
6 ~5 X0 V1 N7 }) K* q        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端0 a# m0 D% i! {( v" y1 C2 }7 |" @
        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行: }  t( B6 }2 x2 n# e. d" G0 q
            - clear copy  # 调用handler中的clear copy定义的动作8 P# w4 ~1 r  p  e
  handlers:
  j$ w3 O: l/ p* X+ b      - name: clear copy8 [$ S5 u7 ^3 f0 o5 P+ z" [
        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除7 k, K7 b* p( S$ @/ l% M
注解:
" d; V. G6 R& ^$ e; C$ U4 K
* ]( C6 {" e+ |" {  ~# u7 {' Stasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容
0 f. P8 a  f2 znotify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler
% f7 X. ?8 b. q+ v+ xhandlers:与notify结合使用,被调用的handler的具体定义
' o: D6 Y0 F& k
2 {9 T! e- R2 Q" y# H% Jplaybook执行方法:
* _9 r) j/ r& K' R7 ^% s4 D4 o! g: W* Z- i
ansible-playbookplaybook.yml    1 G  y6 ~* o" r- c4 s2 s
#主机名、执行命令都已在yml中指定了。
$ S2 O# H4 q) ~- q
# B1 l* U' V. Y/ ~
$ h) A$ v% N$ G6 t. H
: r& l  D& b7 p2 R- j6 ~  w& _6 F. _6 `! J0 q

1

主题

0

回帖

12

积分

管理员

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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