找回密码
 注册
查看: 3251|回复: 3

ansible加上-i参数,使用文件执行命令

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-11-3 22:07:50 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 2 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-11-3 22:13:12 | 显示全部楼层
cat hosts_pwd - C6 l( B" b9 D; d
# 未分组机器,放在所有组前面
& i7 m' ]" Q6 `0 E; m# 默认端口22,可省略2 p- F+ l5 n4 B, u6 A; x& W5 @
# 方式1:主机 + 端口 + 密码
5 x( k5 m. n- c: d% a, S3 @" ^172.16.1.180   ansible_ssh_port=22 ansible_ssh_user=yun ansible_ssh_pass='123456'% M! o  b8 [1 j* q6 R  S

  j2 [+ }) ~2 G" h# 方式2:主机 + 端口 + 密码
7 R/ A( w7 E4 K1 U+ R[proxyservers]. F7 J7 N1 |! s* F1 ]
172.16.1.18[1:2] ansible_ssh_port=22 ansible_ssh_user=yun ansible_ssh_pass='123456'
# A7 ?3 S# d1 E6 h7 Q, ^+ o2 ?1 S( n# }6 d! c4 K0 x4 D
# 方式3:主机 + 端口 + 密码
) ?+ u6 v0 k/ c! P6 }9 i% d[webservers]
. F8 d2 d- V( v9 r; C172.16.1.18[3:5] ansible_ssh_port=22 ansible_ssh_user=yun- k# s, U' i2 q1 ]% s! E
[webservers:vars]
  o3 c3 r; C3 L6 o2 z% \6 E, q* Xansible_ssh_pass='123456'
4 Y; Z4 P. {+ }' L3 {# v/ ^

) Z  `" Z$ d4 e3 ^2 h+ }$ d

) n2 _1 q# N* n, P+ @8 z; N- `; T3 O6 w& o, ]

' @6 u: i% f( u5 m2 o: e0 ^! osudo ansible 172.16.1.180 -m ping -i ./hosts_pwd  # 提权使用 root 用户执行) `2 a/ [: R/ f
172.16.1.180 | FAILED! => {
2 q$ A" S* @+ @6 z    "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
0 t; }# c8 Y& n+ d) |}
) s7 T- G5 f- |# K, w

/ o4 J+ {+ z: o8 k

6 w  O! P/ C: K* e& s& m大概提示信息:因为启用了主机密钥检查,而 sshpass 不支持这一点。请将此主机「172.16.1.180」的指纹添加到你本机的known_hosts文件中以管理此主机。% J4 n" a6 i$ u! G

& {; N, g  I# m% c9 `$ k7 W4 n
5 W+ B$ s! n3 O1 ^3 Q5 x5 i) r
跳过主机密钥检查,有两种方式:

方式1:修改 Linux 系统配置

vim /etc/ssh/ssh_config
" P) ~6 r! w- w  W& a9 I#   AddressFamily any2 V% ?0 d- V5 S- C
#   ConnectTimeout 0
! B  [2 F+ ?# x& d: ^#   StrictHostKeyChecking ask   # 将该配置的注释打开,并改为  StrictHostKeyChecking no  这样针对所有用户都不会在进行 「主机密钥检查」了' B5 L. n0 \& T9 ~, g5 B9 c9 {
#   IdentityFile ~/.ssh/identity
, T( h  B- ^. B( K. N; ^  ^
* Y& W/ y" D+ V6 Z3 Z# y3 m* ?1 S' W2 h

4 @8 m# G  d8 o: }+ I- T+ }
  a% k. [& V4 G# B0 b  x8 T* N; p" W7 u& z! d( }
但是这个是 Linux 自带的配置,我们不能随意去更改。因此不建议如此操作。
  g& o* n4 Q0 O- C$ F, X1 T# X) n0 R+ ]; q
% l2 B- s3 E. H4 K0 \
方式2:修改 ansible 配置: b2 o9 O1 }6 y+ y$ w

  T! Y# T6 t; w: m( j5 Gvim /etc/ansible/ansible.cfg
2 u; }1 t, E2 M) d0 l' s9 e# uncomment this to disable SSH key host checking
4 T& [' ~6 }* ~; U) @+ A1 l7 y# Vhost_key_checking = False    # 将该配置的注释去掉
# Z9 h8 L6 X/ \
# T4 p+ y' z& w; |, p
# x! K; `4 X$ b1 H( I
改配置仅对 root 用户生效,其他普通用户是不生效的。这里使用该方法。
& ]$ G2 }  \3 ^) B, G) K5 a3 N" [再次连接测试

$ ansible 172.16.1.180 -m ping -i ./hosts_pwd  # 普通用户还是不行
( ~7 s; [) \5 [9 N! f. }2 b172.16.1.180 | FAILED! => {
% Z6 K" T$ c- `$ n' `5 X; b9 z    "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host.", a# z# n9 C0 }9 i" r
}
- X5 F5 j, h. V& O0 l. {$ sudo ansible 172.16.1.180 -m ping -i ./hosts_pwd  # 提权使用 root 用户执行0 ^1 z9 q" @/ L7 W, J! m
172.16.1.180 | SUCCESS => {
! ?3 r, e6 Q2 m: {2 Z! }( K2 D    "ansible_facts": {
! F( _/ i% s) z* x& s/ y) {/ N        "discovered_interpreter_python": "/usr/bin/python"
, t5 ?+ S7 |" y" _: |    }, 3 @* [" n5 l6 _$ b2 o( o9 J4 {2 H0 i$ f
    "changed": false, 7 i7 @2 |# g; W5 \, a+ _$ W" @
    "ping": "pong". u. G2 H6 Z: Q8 C' B
}

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-11-3 22:14:54 | 显示全部楼层
cat hosts_group 9 H0 Y/ R0 j+ \0 t9 i# ^  v
# 未分组机器,放在所有组前面4 w, S' d1 w) P' o: X' B
# 默认端口22,可省略
) c; H8 w: t+ n7 c7 z# 方式1、主机 + 端口 + 密钥
# N  v" B' p3 N1 h" t" b172.16.1.180; c( A6 v) U# }3 I6 P# X, Y

, g3 ?4 s% {0 L6 a( ~& v# 方式一、主机组变量 + 主机 + 密码
- j9 R+ H2 E' G6 ]5 O' [- E[proxyservers]" N  `$ s& g6 u' C# C( n, ?
172.16.1.18[1:2] ansible_ssh_port=22 ansible_ssh_user=yun ansible_ssh_pass='123456'
! Q# h& Y9 r9 x# ~* n3 U5 G) |, j! b/ @9 E& ^% p0 R3 W" v
# 方式二、主机组变量 + 主机 + 密钥
, s' ~+ N1 o# j4 ~[webservers]1 X7 q# J' |# W4 M/ {
172.16.1.18[3:5]:22
8 D" S2 o/ l& X2 `8 {9 V9 z
- S! t3 D% y) E  k* O* @6 Z/ c. M+ ?# 定义多组,多组汇总整合- }6 e% [( E4 X5 \$ X  W2 J  j  _
# website 组包括两个子组[proxyservers, webservers]$ F4 O. N* D3 \0 s/ V
[website:children]
) O) j3 {  X" R- G/ |" f* kproxyservers! w- I% t- L! H: ~5 ~) E
webservers

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-11-3 22:15:24 | 显示全部楼层
$ sudo ansible proxyservers -m ping -i ./hosts_group   * [  V1 m" Y: [3 d9 m
172.16.1.182 | SUCCESS => {" l$ x. F! B6 v: H2 H) T- B/ M( s
    "ansible_facts": {' V/ y1 [5 D7 X8 }# ~
        "discovered_interpreter_python": "/usr/bin/python"( ?/ k) Q8 j1 S# p+ o3 U# d0 N2 v
    }, % z5 A7 F# T1 ~5 F2 M# ?: p
    "changed": false,
& ]4 U# Y' e5 b3 b! B' X0 {    "ping": "pong"* q* I" `" N6 q9 Q% ^$ f
}+ v0 ^1 v; z' g7 Q. p1 T
172.16.1.181 | SUCCESS => {
: B1 ^) _- G. @( w6 p% z# K( J    "ansible_facts": {) S  C4 v2 N' ^! w4 ~/ H1 X( R
        "discovered_interpreter_python": "/usr/bin/python"
0 i  }1 I& u( B  {5 c6 o2 Y' Q    }, # p. G0 R& O% n" ?+ }* k
    "changed": false, , p+ [) X1 h" P: b; a
    "ping": "pong"
  R* w; k8 `& X}
# ]+ s7 Z: p( s( y) P$ r/ R0 j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:30 , Processed in 0.022597 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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