ansible是一个基于Python开发的自动化运维工具
ansible的功能实现基于SSH远程连接服务
ansible可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能特点:
1)不需要单独安装客户端,基于系统自带的sshd服务,sshd就相当于ansible的客户端
2)不需要服务端
3)需要依靠大量的模块实现批量管理
4)配置文件/etc/ansible/ansible.cfg管理端安装ansible(需要epel.repo源)
yum安装(centos7可直接安装)
yum -y install epel*
yum -y install ansible
确认安装:ansible --version相关配置文件
/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
/etc/ansible/hosts 主机清单
/etc/ansible/roles/ 存放角色的目录ansible主配置文件
/etc/ansible/ansible.cfg[defaults]
#inventory = /etc/ansible/hosts //主机列表配置文件
#library = /usr/share/my_modules/ //库文件存放目录
#remote_rmp = $HOME/.ansible/tmp //临时py命令文件存放在远程主机目录
#local_tmp = $HOME/.ansible/tmp //本机临时目录执行目录
#forks = 5 //默认并发数(同时5台机器执行)
#sudo_user = root //默认sudo用户
#ask_sudo_pass = True //每次执行ansible命令是否询问ssh密码
#ask_pass = True
#remote_port = 22
host_key_checking = False //检查对应服务器的host_key,建议取消注释
log_path = /var/log/ansible.log //日志文件#所有被管理端需要安装:
#yum -y install libselinux-python(CentOS7默认已安装)
配置文件修改:
vim /etc/ansible/ansible.cfg
host_key_checking = False #(将注释去掉,以防如下报错)
deprecation_warnings = False
command_warnings = False
添加被管理端ip清单:
vim /etc/ansible/hosts
[woyun]
12.7.14.17 ansible_ssh_user=root ansible_ssh_pass="@AV2MPqDNP36UDG*otSvAW3O" ansible_ssh_port=12345
#ansible_ssh_user:ssh连接的用户名
#ansible_ssh_pass:ssh连接的密码#ansible_ssh_port:ssh连接的端口
#如果设置了ssh免密钥连接的话,hosts文件只配置IP即可。
注意:模块[woyun]自定义,有特殊符号的密码要用双引号
ansible命令测试:
ansible -m ping all
调用ansible内置的copy模块:
先创建一个临时测试文件:echo "111" >/tmp/cjk.txt
ansible woyun -m copy -a "src=test/safedog_an_linux64_2.8.21207/ dest=/usr/local/src"
查看copy内容是否正确:
远程执行脚本测试:
#先创建一个脚本,再将脚本分发到各个机器上去
echo "echo '测试成功!'" > /tmp/test.sh
echo +x /tmp/test.sh
ansible benn -m copy -a "src=/tmp/test.sh dest=/tmp/ mode=0755 backup=yes"
#注意:dest路径的写法,若是不存在的目录,结尾要加斜线(/tmp/),否则默认不会创建目标目录
#特别提示:
如果目标路径存在文件,并且目标文件和你想要copy的文件完全相同的话,也会导致ansilbe的copy功能失效远程批量执行脚本
常用模块:每个模块就是一个功能
ansible-doc -l 查看所有的模块
ansible-doc -s service 查看指定模块用法