1.特点
部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
默认使用SSH协议对设备进行管理;
有大量常规运维操作模块,可实现日常绝大部分操作;
配置简单、功能强大、扩展性强;
支持API及自定义模块,可通过Python轻松扩展;
通过Playbooks来定制强大的配置、状态管理;
轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
2.yum安装
# yum install epel-release -y
# yum install ansible –y
3.修改配置文件
# ansible-config init --disabled -t all > /etc/ansible/ansible.cfg
# vim /etc/ansible/ansible.cfg
仅修改成False,去掉前面的;
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
4.ansible主机清单
# vim /etc/ansible/hosts
设置一个组,写要连接的远程主机ip
[mysql_test]
192.168.253.159
192.168.253.160
192.168.253.153
192.168.153.[199:202]给组一个变量vars,设置用户密码,对组都启用
[mysql_test]
192.168.253.159
192.168.253.160
192.168.253.153[mysql_test:vars]
ansible_user="root"
ansible_password="1"
5.命令
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
ansible 主机清单中的主机组 -f 开启线程数 -m 模块 -a 模块需要的参数ansible -h查看帮助
6.command模块
命令模块接受命令名称,后面是空格分隔的列表参数。给定的命令将在所有选定的节点上执行。它不会通过shell进行处理,比如$HOME和操作如"<",">","|",";","&" 工作(需要使用(shell)模块实现这些功能)。注意,该命令不支持| 管道命令。
chdir # 在执行命令之前,先切换到该目录
# ansible web -m command -a 'chdir=/data/ ls' #先切换到/data/ 目录,再执行“ls”命令
executable # 切换shell来执行命令,需要使用命令的绝对路径
free_form # 要执行的Linux指令,一般使用Ansible的-a参数代替。
creates # 一个文件名,当这个文件存在,则该命令不执行,可以用来做判断
# ansible web -m command -a 'creates=/data/aaa.jpg ls' #如果/data/aaa.jpg存在,则不执行“ls”命令
removes # 一个文件名,这个文件不存在,则该命令不执行
# ansible web -m command -a 'removes=/data/aaa.jpg cat /data/a' #如果/data/aaa.jpg存在,则执行“cat /data/a”命令
7.shell模块
shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。
# ansible web -m shell -a 'cat /etc/passwd |grep root'
8.copy模块
这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。
src
#被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制,用法类似于"rsync"# ansible web -m copy -a 'src=~/hello dest=/data/hello' #把本地root下的hello拷贝给远程主机的/data/hello
content
#用于替换"src",可以直接指定文件的值# ansible web -m copy -a 'content="I am keer\n" dest=/data/name mode=666' #给远程主机/data/下生成name文件并设置666权限
dest
#必选项,将源文件复制到的远程主机的绝对路径
backup
#当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息# ansible web -m copy -a 'content="I am keerya\n" backup=yes dest=/data/name mode=666' #修改后backup=yes 表示覆盖备份
directory_mode
#递归设定目录的权限,默认为系统默认权限
force
#当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"
others
#所有的 file 模块中的选项可以在这里使用