ansible集合了众多优秀运维工具(Puppet、Cfengine、Chef、Func、Fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
从功能上ansible可以实现以下目标:
- 应用代码自动化部署
- 系统管理配置文件自动化
- 支持持续交付自动化
- 支持云平台、大数据平台(如AWS,OpenStack)
- 轻量级、无需客户端安装agent,更新时只需要在客户机进行一次更新即可
- 批量任务执行可以写成脚本,不用分发到远程就可以执行
- 使用python编写,维护更方便,Ruby语法过于复杂
- 支持非root操作,支持sudo
一、安装ansible
系统环境
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
软件版本
ansible-2.5.3-1.el7.noarch
一般在epel源中提供,首先配置epel源(base yum仓库默认没有ansible源码)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
清除yum缓存
yum clean all
yum makecache
yum方式安装ansible
yum install ansible
查看版本
ansible --version
二、然后更改配置,/etc/ansible/ansible.cfg,将里面的host_key_checking = False前的#去掉,ssh在首次连接出现检查keys 的提示,通过设置,不会有这些提示
# 要不修改ansible.cfg配置文件的ask_pass = True给取消注释
三、.去设置hosts文件,在最后加入以下配置,10.139.11.118是要远程的服务器IP,ansible_ssh_user登录服务器的用户,ansible_ssh_pass登录服务器的密码
[test]
10.139.11.118 ansible_ssh_user=root ansible_ssh_pass='wddx@2018'
10.139.11.119 ansible_ssh_user=root ansible_ssh_pass='1qaz!QAZ'
四、测试ansible是否可用
ansible test -m command -a 'uptime'
五、生成公钥/私钥
ssh-keygen # 生成秘钥
# 一路enter
六、下发公钥、私钥
一个一个下发
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.127.7.77 # 将公钥写入被管理机
机器多的情况下,使用ssh-copy-id方法有些费时,使用ansible-playbook推送ymal,
新建push.ssh.ymal文件,将下面内容写入
# Using alternate directory locations:
- hosts: test
user: root
tasks:
- name: ssh-copy
authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
tags:
- sshkey
执行推送命令
ansible-playbook push.ssh.ymal
#输入root密码
测试是否下发成功
ssh root@10.127.7.77如果成功进入出现【root@web1】#则说明成功
#查看各机器时间
ansible all -a date
#ansible all -m command -a date # 作用同上
#ping
ansible all -m ping
# 切换root
ansible webservers -m ping -u ansible -sudo