找回密码
 注册
关于网站域名变更的通知
查看: 254|回复: 1
打印 上一主题 下一主题

ansible集群工具的使用方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-21 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
  q4 a8 _  z9 ~) V6 N
ansible简介3 g/ R2 q9 V3 N, n
ansible是与puppet、saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet、saltstack那样都需要客户端。与puppet类似,ansible也支持丰富的功能:
: ~* ]! e5 W& P  k9 M. z# `) y; q4 G& \2 m0 V4 i2 H( M" W
  • 批量执行
  • 支持模块化,支持playbook(相比puppet还是弱些)
  • 上手容易(puppet上手有门槛)
  • 权限控制( B5 c( K8 V4 ]* \

0 N1 e0 a, ?0 f0 R/ Y安装方法为:yum -y install ansible或pip install ansible。0 R5 ]9 ^& [5 w& N

! ~* A+ M! b, m* Y) H
$ \$ P9 x- L) W- W使用方法1 ^, O5 l1 D! w5 z9 o. U1 R
2 I' l' {! e9 d$ a, k
2 X. M' ^( Y5 D2 T
在管理集群时,ansible需要先配置集群hosts列表以方便集群操作% N$ y& ^) P- {& G- @6 V; R0 Q: n
, O6 N, ]% `) Z8 l  |, Y6 N, w8 Z
$ cat /etc/ansible/hosts
! L5 X" P: ]4 p6 t- ?[local]& y. Z  W  _4 M2 y8 Y
# 配置密码登陆,需要ansible本机安装sshpass0 t5 J# [4 M7 h4 y5 X
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root. j2 }5 O: `% Y; ~. o  g; j
[zabbix]
- e4 {; P' [4 F4 D# l: A( g# 密钥登陆) g2 T1 q1 N/ @
172.17.0.2:49154 ansible_ssh_user=root0 m' z! c5 I6 O6 o' [! E1 S
172.17.0.4:49155 ansible_ssh_user=root
0 B: M# K  q5 U! i7 U6 Q[vpn]' t! B: i, \' M
172.17.0.107 d" {* Z4 ]& J

  ]/ M" Z: |% s
( N5 J" q8 H5 S, p测试连接登陆是否OK
- {+ V5 c# l0 H# z. ?
" n& t6 @5 r) D& s$ ansible local -m ping5 M6 N% F. \7 ^- b
192.168.213.135 | success >> {) f3 W9 K. i5 {/ Q: ]  D& s- c
    "changed": false,  x2 R3 o" u9 b$ Y
    "ping": "pong", E7 }: S) d* Y# N; R' f7 l
}
9 l' U# \, {1 I
1 I! K2 y% d0 l" X( e  s3 a
- C: F- \' V. ]5 T3 q7 x9 g2 Mansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:% Z' v2 H) ^' a, E0 L8 {. A! r
" b/ M7 a+ P: ~; a& B5 ^5 o
  • 安装软件:ansible local -m apt -a ‘name=gcc state=present’或者ansible local -m yum -a “name=nmap state=installed”
  • 执行命令:ansible local -m shell -a ‘uptime’
  • 拷贝文件:ansible local -m copy -a “src=/tmp/server dest=/tmp/server”
  • 文件属性:ansible local -m file -a “dest=/tmp/server mode=755 owner=root group=root”5 M+ @, R# s7 ^& n$ {4 h# q& i
*( u: h1 }- H6 o0 a" f; i7 N1 W! _" `
  e2 ~7 K/ E0 U

7 I$ i, q/ C3 u8 Hplaybook! {; q* B: T, ]5 ^0 {/ A
5 U- q* ~$ A& a8 O$ v6 }
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。 4 b+ L' `) b( C
. g& W7 i/ J  }- C! j% V6 J' x
一个简单的playbook配置如下:* M! f) Y# n5 @8 W' I
& Q5 [  a7 \8 \* r8 l
- hosts: local
$ C. [1 h( n4 F# A) z  remote_user: root9 f1 i; Q& I* d8 E: W
  tasks:
6 `/ a, l4 D( C# O" ^7 z; j  - name: echo hi2 E' S) S0 _5 ]0 w
    shell: echo "hi") m4 t* C. d" x9 U( c9 u  i2 ^
$ ^  l% q. Y" |* L9 \. ^, d* E* N
- S  i8 b8 [; Y' o+ G
ansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:
3 N! w( P' V  U  t3 }0 p9 T# ^& \: W' p7 K' G: F
# playbook.yml8 O" }& L# R6 b  q/ `+ S
---
/ }( ~$ j9 Z4 d$ ]- hosts: local  # hosts中指定8 l& V2 U1 s9 q& A
  remote_user: root  # 如果和当前用户一样,则无需指定
2 l  T* q; I2 S" }$ C1 P' v  tasks:' }( j% T% [4 ?$ ]: z# E
      - name: whoami
2 O0 ?: p4 ?; I" C- D8 {6 S        copy: src=~/hosts dest=~/hosts.dest  #  本地拷贝到远端  S1 `; p' |4 x
        notify:  # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行, A! E, T1 T  P1 l& S
            - clear copy  # 调用handler
/ f" D. y. M1 K6 z  handlers:
9 V  A3 [' P* D' m" j; e8 H& G      - name: clear copy. o- p5 ]: I- P2 X, k
        shell: 'mv ~/hosts.dest hosts.del'  # 假装删除- n  g( U4 K1 _7 p, ]

该用户从未签到

2#
发表于 2020-1-21 17:53 | 只看该作者
ansible集群工具的使用方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 16:37 , Processed in 0.171875 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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