在ansible官网上是这样介绍ansible的:Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
ansible是一块自动化IT工具,主要实现以下几个功能:
自动化部署
自动化管理配置
不停机更新
自动化持续交互
安装ansibleansible默认使用SSH协议管理计算机,因为ansiible只需要安装在一台管控机上就可以以此为中心点管控多台服务器,不需要在其他机器上安装和运行软件,所以官网建议跟随ansible版本进行使用,现在ansible的最新版本是2.7版本,ansible能够在安装了python2.7x和3.x版本的计算机上运行,但是被管控的机器不包括windows,只支持一些类unix系统,如macOS,redhat,Debian,CentOS.本文就以CentOS来进行演示。
下载epel源
在https://opsx.alibaba.com/mirror 上直接复制就可以,不同的操作系统不一样,选择与自己系统相匹配的。
安装ansible
yum install -y ansible这样ansible就安装好了,十分的方便不需要源码编译安装的步骤,
ansible都安装哪些东西?可以通过rpm -ql ansible来查看。
补充一下yum源的配置。
yum的包组安装
yum grouplist #查看包组信息 yum groupinstall #安装包组 机器之间怎么进行连接上文说过,ansible默认通过SSH协议连接并控制被控节点,SSH有两种认证方式,密码和密钥,密钥的安全性更高故选择密钥。
ssh-keygen #生成SSH密钥对 ssh-copy-id 192.168.245.130 #复制密钥到远程主机 ansible的命令格式 ansible <host-parttern> [options] -a MODULE_ARGS,--args=MOULE_ARGS #模块的参数 -C,--check #检查 -f FORKS,--forks=FORKS #用于做高并发 --list-hosts #列出主机列表 -m MODULE_NAME #模块名称 -k #输入密码 ansible的hosts文件 # This is the default ansible 'hosts' file. # # It should live in /etc/ansible/hosts # # - Comments begin with the '#' character # 用#来表示注释 # - Blank lines are ignored # 空白行被忽略 # - Groups of hosts are delimited by [header] elements # 主机组 需要在【】下面 # - You can enter hostnames or ip addresses #可以写主机名或者ip地址 # - A hostname/ip can be a member of multiple groups # 一台主机可以在多个组里面 # www[001:006].example.com 表示从www001到www006的机器配置举例,可以根据功能将机器进行分组。
[web] 192.168.13.25 192.168.22.231 [db] 192.168.23.33 192.168.13.25 host-pattern的格式多个主机
全部主机 all
多个的主机,中间用","隔开
单个组
多个组
交集 'web:&db'
并集'web,db' , 'web:db'
差集 'web:!db'
查看模块帮助信息 ansible-doc 参数 模块名 参数包括 -j, -l ,-s -j #以json的方式返回ansible的所有模块 -l #列出所有的ansible模块 -s #片段式的显示举例:
ansible-doc -s ping ansible-doc -s command ansible的模块 pingTry to connect to host, verify a usable python and return `pong' on success.
ansible web -m ping #返回json pong commandExecutes a command on a remote node.
执行远程命令的模块,command不需要-m参数,因为-m参数是默认,不支持特殊字符,如管道符|等。
Execute commands in nodes.
在远程主机执行远程主机的shell或python脚本及命令。
Runs a local script on a remote node after transferring it.
在远程主机执行本地的文件或脚本。
Copies files to remote locations
参数:
- backup 备份,以时间戳结尾
- dest 目标地址
- src 文件源地址
- owner 文件的属主
- group 文件的属组
- mode 文件的权限 rwx