ansible工具

在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工具,主要实现以下几个功能:

自动化部署

自动化管理配置

不停机更新

自动化持续交互

安装ansible

ansible默认使用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源的配置。

[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #名字 baseurl=http://mirrors.aliyun.com/epel/7/$basearch #rpm源的地址,可以写http,https,ftp,Samba,file: failovermethod=priority enabled=1 # 是否开启,1代表开启,0表示关闭 gpgcheck=0 #是否校验签名,1代表校验,0表示校验 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

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的模块 ping

Try to connect to host, verify a usable python and return `pong' on success.

ansible web -m ping #返回json pong command

Executes a command on a remote node.
执行远程命令的模块,command不需要-m参数,因为-m参数是默认,不支持特殊字符,如管道符|等。

ansible web -a 'ls /' ansible web -a 'chdir=http://www.likecs.com/tmp pwd' #切换目录后执行命令 ansible web -a 'creates=http://www.likecs.com/tmp pwd' #若/tmp目录存在,则不执行任何操作 ansible web -a 'removes=http://www.likecs.com/tmp pwd' #若/tmp目录存在则执行操作 shell

Execute commands in nodes.
在远程主机执行远程主机的shell或python脚本及命令。

ansible web -m shell -a 'echo "123"|passwd --stdin cui' #鼻梁创建密码 ansible web -m shell -a'/tmp/a.sh' #执行a.sh文件 script

Runs a local script on a remote node after transferring it.
在远程主机执行本地的文件或脚本。

ansible web -m script -a '/root/a.sh' #在远程主机执行本地的文件 ansible web -m script -a 'removes=http://www.likecs.com/root/m.sh /root/m.sh' # 如果存在,存在就执行 ansible web -m script -a 'creates=http://www.likecs.com/root/a.sh /root/m.sh' #如果存在,就不执行 copy

Copies files to remote locations
参数:
- backup 备份,以时间戳结尾
- dest 目标地址
- src 文件源地址
- owner 文件的属主
- group 文件的属组
- mode 文件的权限 rwx

ansible web -m copy -a 'src=http://www.likecs.com/tmp/a.sh dest=http://www.likecs.com/tmp/a.sh' #复制本地文件到远程主机 ansible web -m copy -a 'src=http://www.likecs.com/tmp/a.sh dest=http://www.likecs.com/tmp/a.sh mode=755 owner=cui' #修改文件权限和属主 ansible web -m copy -a 'src=http://www.likecs.com/tmp/a.sh dest=http://www.likecs.com/tmp/' #复制文件,剥到远程主机,如果改变文件属性,文件夹内文件属性也会改变 ansible web -m copy -a 'src=http://www.likecs.com/tmp/ dest=http://www.likecs.com/tmp/' #复制目录内的所有文件到主机 ansible web -m copy -a 'content="我有点小帅" dest=http://www.likecs.com/tmp/a.txt' #注入文本内容到远程文件 file

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfdd.html