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

ansible使用普通用户运维

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-3-9 19:31:19 | 显示全部楼层 |阅读模式
配置hosts  j2 `8 A$ `: x$ }) S
+ O1 {% B8 o8 ?" h; z
# cat /etc/ansible/hosts6 c+ @  |0 H( Q0 ?
: |/ S% o& [& p5 V
[test01]
; L& T& K$ j3 f* H+ e& {10.212.52.14 2 j. Y4 P+ s, Z0 _" l

% ~8 X  f3 _# i* {ansible_ssh_user=test 1 N0 n6 g. X" |( B% F, U
% Z$ H' e- y; C6 P
ansible_ssh_pass=111111
4 V( A$ [2 b7 V
$ s! V' X: R! m* A7 S1 S. Nansible_su_pass=*I2145
1 {  ]% a) c3 Z9 |3 b, A5 O5 t, E& N/ t5 T+ w1 ^
10.212.52.16
# s/ h0 @& G! y6 F1 I+ U
' m' o, ~7 f0 d3 K4 jansible_ssh_user=test
: J7 h2 O& u: h- c- _/ w, U  t7 _8 L1 b7 a' a
ansible_ssh_pass=xyz123  & Q3 J# y" p9 n" N
* y) A2 I" ^8 V0 ]7 P
ansible_su_pass=mn1Pokm  K+ ~8 z6 P5 R% B& L( }3 u
( k& y" s* A% @( ?
10.212.52.252 8 F* z- {) S  w# K
3 |: F+ s4 h  r: [- g9 S8 R9 o
ansible_ssh_user=amos - a# Q, I; b4 C) t6 G% `# A6 D+ z
/ Z" {: O2 }$ o
ansible_ssh_pass=asdf
9 Q2 L1 x- \8 ^: B- J" [& {" c( k4 G, u% ~* }7 D: v$ m" l
ansible_su_pass=xyzp)okm5 X5 Z# z& P" U& C& o/ x( G
$ J3 V- B! Q3 n3 C+ k' L

  t6 ]. q3 B* A& {playbooks核心元素
7 y3 E; [4 B4 s. P1 o/ g$ F, ^2 Y/ k! S' V1 A
6 F/ ^: H( d, ?
Tasks任务、Variables变量、Templates模板、Handlers处理器、Roles角色
$ J: R+ ^% d3 s# q7 n6 C5 D7 @  E
, y# A: {& ^% h! [3 ^* u
  }3 l: v* h' o: p(2)playbooks中定义任务:
& [) r. m& I. ~5 s& d- }! d  s
1 T# ]0 m( o( |' ^- l- name: task description 注释描述信息8 H, A& L) ?7 Y9 |4 y. H* `
module_name: module_args 声明模块:定义ansible模块参数
/ U$ N4 {) u! `( P' v0 I1 n# P8 V' e0 R* C6 y: e' p

% B1 @$ b, N; d8 G4 R$ S
7 m3 u$ Y4 \6 I: U6 ~! N* h$ @; H- [( P9 b
(3)ansible-playbook执行命令:
  ?8 P- I; ], z: n' I
7 h* B* O, P( F# T/ r) [, yansible-playbook <filename.yml> ... [options]
* Z% H: E% d' L& {- O7 G) X: _
8 q- b: l6 _/ R1 D2 L0 O
- w2 y7 Q, i; Q6 c' K) g# t! I( z) v( H6 n6 R0 B
4.playbook--- 变量
1 L- H2 t& p) z! a
% l# B( n: C$ [- w6 H(1)变量命名:字母、数字和下划线组成,仅能以字母开头;
1 }/ f) T+ W/ p- ~# [3 P/ Q
% I/ m4 H2 r( a5 _) O) f5 [/ t$ S: i- S6 y
(2)变量种类:; X% {( |+ t" z! l3 `9 q- d

( g& [2 w) c- A7 A; N( l. A+ N" G9 K9 R! X2 \4 ^6 p
1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;
* }' u; S6 S, X/ S7 Y8 `# E8 h1 n# |/ H+ O% u5 E
% h2 M! S2 s, y2 `
2)自定义变量:. t% J: p# w& I) ?1 ?
通过命令行传递:ansible-playbook test.yml --extra-vars "host=www user=test"
; Q! x2 N3 ]2 ?" I  K: q9 N, h
, ?1 @4 n9 r( D通过roles传递2 @" {* H0 j+ B2 I6 _7 p, }

/ j/ w9 Z. [. }+ s7 T: W* l4 {5 ]" q: K2 j5 r+ _
3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量
: I! L5 x8 G/ |9 x8 V# s- s实例:( y8 f5 b0 F# K+ J
7 W* n+ Q% N- T- E  `: W
& _, o! T, u3 ~8 Q' s

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-3-9 19:52:04 | 显示全部楼层
主要参数如下:* ?9 }+ {4 V& G% l
9 ]- J6 p' q) I$ O
-u username          #指定ssh连接的用户名,即执行后面命令的用户
+ z7 w+ ^+ M% N* f2 [! ?. G4 x3 T-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts' m% Z! o2 O. J' F
-m module            #指定使用的模块,默认为command
/ D0 x  Q2 ^: j0 P* ^- ~; P-f 10                #指定并发数,并发量大的时候,提高该值6 V4 k9 U" ~5 J  F5 W
--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码7 ?# a5 E$ J  S. Y! j  q. B
% {) [! s, p) f

, m8 U5 R+ r( v执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。
1 [8 P; Q( B% m; z
# ]9 V/ M; f$ l4 G* q" pansible-doc-l       #查看模块列表, i9 _. S7 N: K4 O8 j
ansible-doc  copy    #查看copy模块的详细信息
7 q$ w1 W( s9 Kansible-doc  script #查看script模块的详细信息
' j! {2 z) n. K, [; p0 f4 z4 o/ R5 S% g1 Q  G; k" z
& \) e" r# \6 y  n$ \  p

  V8 J! V8 A9 F/ v% }( [$ M4 v- d9 B* C) `

* A7 z: G* d( G3 T  其实playbook就是把上述在命令行的操作,以yml格式写在文件中来执行而已。复杂的playbook只是更多的命令行操作的集合。
3 k" ^0 H; b3 m6 t/ H7 t! H) S2 [2 A& y8 U6 q/ _
此例:当某个文件变化后,移走该文件。
' q9 c, n; b, B: P
0 Z& r  z* {) A% A6 K* C) Y#cat  playbook.yml: X* u3 \2 Z4 M2 R
---' X1 T& D+ _0 |4 H% O( z
- hosts:local  # hosts中指定" ?6 C1 Q) M( L" S, N* F
  remote_user: yang  # 如果和当前用户一样,则无需指定2 @' T' X; ?1 T. r/ g* f
  tasks:
# i' O1 W% u! d% Z/ N- v& s2 S      - name: whoami+ U7 g9 {3 @, C) ~3 l
        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端+ t0 f4 I5 g; F% Q# L+ f3 j
        notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行# T# Z1 u. L2 c0 k8 x. l+ ~
            - clear copy  # 调用handler中的clear copy定义的动作1 [" F, \$ p6 o1 ]
  handlers:
/ s# J+ M8 b; ?      - name: clear copy" H# l! ^, j1 l1 l) @- t) _
        shell: ‘mv ~/hosts.dest hosts.del‘  # 假装删除
) @4 T4 r& {& a8 I; `) w注解:  Z0 `- P' B0 }! @& g: j- Y

& X% P; j5 K* b) I+ f4 G5 @tasks定义了playbook中要执行的任务,包括任务名name以及具体的任务内容9 K3 t$ E9 y/ Q5 ]( |9 h
notify:类似于Salt的require,表示当前面的任务完成后且有相应的变化时调用后面定义的handler8 O9 @6 S, f0 V: _. B& R
handlers:与notify结合使用,被调用的handler的具体定义5 d3 }$ ~1 w$ ?" S4 n2 b

: n5 w$ H& A$ {+ \; W' Rplaybook执行方法:
; [' _, d9 F  E) W4 L
$ F1 H2 x* }0 t' D/ d3 p. Cansible-playbookplaybook.yml    - }4 B9 @' ]9 G4 v+ ?
#主机名、执行命令都已在yml中指定了。( s. L/ U4 c4 _6 z/ r$ C9 x) ]
& ]1 V; k5 s* R% i9 A

( i% {9 A+ A: J$ b3 H2 j" C2 d. L& D( h

8 \( F3 R" |+ G" H

1

主题

0

回帖

12

积分

管理员

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

本版积分规则

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

GMT+8, 2026-6-12 00:40 , Processed in 0.014248 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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