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