1.什么是ansible?
ansible是一款自动化运维工具,可批量对集群中的主机进行部署管理
ansible的使用场景:
• 应用代码自动化部署
• 系统管理配置自动化
• 支持持续交付自动化
ansible执行自动化任务方式:
执行方式有两种
• ad-hoc
Ad-Hoc应用的场景
• 情景1:节假日将近,我们需要关闭所有不必要的应用服务器,并且对所有服务器进行借钱健康检查
• 情景2:临时更新Apache或者Nginx的配置文件,且需要同时将其分发至所有更新该配置的web服务器
• playbook
• 情景1:新购置的服务器在安装完系统后需要做一些固化的初始环境配置,诸如:定制防火墙策略、添加NTP时间同步配置、添加EPEL源等
• 情景2:每周定期对生产环境发布更新代码
资源站点:
• https://github.com/ansible/ansible
2.Ansible的工作模型
3.安装部署Ansible
- 基于epel源进行安装
- 修改ansible配置文件
- 修改ansible的主机清单文件
- 测试效果
相关文件和目录
- 配置文件目录:/etc/ansible
- 执行文件目录:/usr/bin
- lib库依赖目录:/usr/lib/python2.7/site-packages/ansible
- help文档目录: /usr/share/doc/ansible-2.4.2.0/
ansible的主配置文件,主要配置信息:
[defaults]
#inventory = /etc/ansible/hosts
#forks = 5
#sudo_user = root
#remote_port = 22
#roles_path = /etc/ansible/roles
#host_key_checking = False
#module_name = command
[privilege_escalation]
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False
hosts文件是主机清单文件,主要定义被管理的主机
可以直接用ip来定义一个主机
也可以使用hostname(主机名)后面跟ssh的端口,默认是22
定义一台主机组webservers
[webservers]
192.168.253.177
192.168.189.178
定义主机清单,可能用到两个参数
[webservers]
192.168.253.177 ansible_ssh_port=232 ansible_ssh_user=tuser
192.168.253.178
ad-hoc命令格式:
ad-hoc的命令格式:ansible <host-pattern> [-f forks] [-m module_name] [-a args]
开始安装:
[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #使用阿里的源准备安装ansible工具
[[email protected] ~]# yum install ansible -y #安装
[[email protected] ~]# vim /etc/ansible/ansible.cfg #ansible的主配置文件
host_key_checking = False #禁用查看指纹信息
[[email protected] ~]# vim /etc/ansible/hosts #被管理主机清单文件
[webserver] #定义了一个主机组
192.168.253.177
192.168.253.178[[email protected] ~]# ssh-****** -t rsa #在管理节点,生成秘钥对
[[email protected] ~]# cd .ssh/ #进入秘钥对存放位置
[[email protected] .ssh]# ssh-copy-id -i id_rsa.pub [email protected] #讲公钥文件发送到被管理节点[[email protected] .ssh]# ssh-copy-id -i id_rsa.pub [email protected]
在被管理节点也安装ansible
[[email protected] ~]# yum install ansible -y
[[email protected] ~]# ansible webserver -m ping #检测被管理主机是否在线
192.168.253.178 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}