一、概述
本文主要介绍在 滴滴云 部署 Ansible,以及通过 2 台服务器演示通过 Ansible 安装 Nginx 服务的过程。
二、什么是 Ansible
Ansible 是一款开源的 IT 配置管理、服务部署与编排工具。官方的解释是 “Ansible is Simple IT Automation”——简单的自动化 IT 工具。
该工具的目标有以下几项:
- 自动化部署 APP
- 自动化管理配置项
- 自动化的持续交付
- 自动化的云服务管理
完成以上的目标只需要在管理节点执行一系列的命令即可。
三、为什么需要 Ansible
当只有一台服务器时,我们可以通过命令,或者编写简单的脚本来配置服务,更新配置。但如果是 10 台,100 台乃至更多的机器时,我们如何高效、准确的配置不同的服务?
这时候,我们就需要找到能够实现大批量机器并发操作,且支持自动化配置的工具,这就是 Ansible 的最主要功能。
目前与 Ansible 类似的工具有: Saltstack 、 Puppet
四、Ansible 架构图
Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接,无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。
五、安装 Ansible
5.1 示例环境
主机名 | ip |
---|---|
master | 10.0.8.84 |
web01 | 10.0.8.67 |
5.2 安装
只需要在 master 主机安装即可。
Ubuntu 16.04
# 更新包元数据
sudo apt-get update
# 安装仓库管理工具
sudo apt-get install software-properties-common
# 配置ansible仓库
sudo apt-add-repository --yes --update ppa:ansible/ansible
# 安装ansible
sudo apt-get install ansible
# 安装完成后查看版本信息
ansible --version
-----------------------------
ansible 2.7.7
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
5.3 配置
主配置文件: /etc/ansible/ansible.cfg
用户也可以自定义配置文件,配置文件的优先级:
- ANSIBLE_CONFIG ( 环境变量 )
- ansible.cfg ( 当前目录下 )
- .ansible.cfg ( 用户家目录下 )
- /etc/ansible/ansible.cfg
主机组配置文件: /etc/ansible/hosts
编辑该文件,创建两个主机组:
vi /etc/ansible/hosts
[master]
10.0.8.84
[web]
10.0.8.67
配置 SSH 免密登录:
# 生成钥匙对(master执行)
sudo ssh-keygen
# 配置免密登录
# 本机
sudo cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
sudo chmod 400 /root/.ssh/authorized_keys
# web01
# 将/root/.ssh/id_rsa.pub 的内容复制到 web01机器的 /root/.ssh/authorized_keys 文件中,并修改权限
六、通过 Ansible 管理与配置主机
6.1 执行命令
sudo ansible all -a who
10.0.8.84 | CHANGED | rc=0 >>
dc2-user pts/0 2019-02-22 09:08 (111.202.166.3)
dc2-user pts/1 2019-02-22 10:18 (111.202.166.3)
root pts/3 2019-02-22 10:25 (10.0.8.84)
10.0.8.67 | CHANGED | rc=0 >>
root pts/0 2019-02-22 10:25 (10.0.8.84)
sudo ansible web -a who
10.0.8.67 | CHANGED | rc=0 >>
root pts/0 2019-02-22 10:25 (10.0.8.84)
6.2 安装并配置 Nginx
新建一个 Playbook:
vi nginx.yml
---
- hosts: web
tasks:
- name: install nginx
yum:
name: nginx
state: latest
- name: ensure nginx is running
service:
name: nginx
state: started
执行 Playbook:
# 检查Playbook文件
sudo ansible-playbook -C nginx.yml
PLAY [web] *******************************************
TASK [Gathering Facts] *******************************
ok: [10.0.8.67]
TASK [install nginx] *********************************
changed: [10.0.8.67]
PLAY RECAP *******************************************
10.0.8.67 : ok=2 changed=1 unreachable=0 failed=0
# 执行playbook
sudo ansible-playbook nginx.yml
PLAY [web] *********************************
TASK [Gathering Facts] *********************
ok: [10.0.8.67]
TASK [install nginx] ***********************
changed: [10.0.8.67]
PLAY RECAP *********************************
10.0.8.67 : ok=2 changed=1 unreachable=0 failed=0
七、参考文章
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2636892/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31559758/viewspace-2636892/