第10章:深入浅出Ansible

1.Ansible介绍

1).Ansible的优点

    Ansible是一个简单的自动化引擎,可完成配置管理、引用部署、服务编排以及其他各种IT需求

    Ansible是Python开发并实现的开源软件,其依赖Jinja2,paramiko和PyYAML这几个Python库

    安装部署简单

    基于SSH进行配置管理

    Ansible不需要守护进程

    日志集中存储

    Ansible简单易用

    Ansible功能强大

    Ansible设计优秀

    Ansible对云计算和大数据平台都有很好的支持

2).Ansible与Fabric之间比较

    Fabric像是一个工具箱,提供了很多好用的工具用于在远程服务器执行命令

    Ansible提供了一套简单的流程,只需要按照它的流程来做就能轻松完成任务

    Fabric是库,Ansible是框架

    Fabric简单,Ansible复杂

    Fabric通过SSH执行简单的命令,Ansible将模块拷贝到远程服务器后执行,执行完以后删除模块

    Fabric需要Python编程背景,Ansible不需要

    Fabric需要写代码,Ansible只需要编写YAML格式的配置文件来描述要做的事情

    Fabric提供了基本的接口,业务逻辑需要用户自己实现,Ansible提供了大量模块,用户只需要学习模块的用法即可

3).Ansible与SaltStack之间比较

    Ansible安装部署简单,SaltStack需要安装客户端接收服务端发过来的命令

    SaltStack相应速度更快,Ansible使用标准SSH连接,而SaltStack使用ZeroMQ进行通信和传输

    Ansible更安全,Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程

    SaltStack对Windows支持比较友好

    Ansible自身运维比较简单,SaltStack需要在Master和Minion主机启动一个守护进程

2.Ansible使用入门

1).安装Ansible

    pip install ansible

2).Ansible的架构

    Ansible的编排引擎由Inventory、API、Modules(模块)和Plugins组成

    工程师将需要在远程服务器执行的操作写在Ansible Playbook中,然后使用Ansible执行Playbook中的操作

3).Ansible的运行环境

Ansible会默认读取/etc/ansible/hosts文件中配置的远程服务器列表
# mkdir /etc/ansible
# cat /etc/ansible/hosts 
[test]
192.168.1.101
192.168.1.102
192.168.1.103

# ansible test -m ping
192.168.1.101 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.1.102 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.1.103 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

4).Ansible的ad-hoc模式

Ansible的ad-hoc模式,通过ansible命令执行操作的方式,称为ad-hoc
# ansible test -m command -a "hostname"

# ansible test -m command -a "whoami"

将本地文件拷贝到服务器中:
# ansible test -m copy -a "src=/etc/ansible/hosts dest=/tmp/hosts"

修改文件的所有者和权限:
# ansible all -m file -a "dest=/tmp/hosts mode=500 owner=mysql group=mysql" -become
-become参数类似于Linux命令下的sudo

在远程服务器中安装软件:
# ansible test -m yum -a "name=git state=present" -become

5).使用playbook控制服务器

在实际的生产环境中,我们一般将远程服务器需要做的事情写在一个YAML配置文件中
YAML文件称为Ansible Playbook

# cat test_playbook.yaml
---
- hosts : test
  become : yes
  become_method : sudo
  tasks : 
  - name : copy file
    copy : src=/etc/ansible/hosts dest=/tmp/data.txt

  - name : change mode
    file : dest=/tmp/data.txt mode=500 owner=mysql group=mysql

  - name : ensure packages installed
    yum : pkg="{{ item }}" state=present
    with_items : 
    - git

# ansible-playbook test_playbook.yaml

3.Inventory管理

4.YAML语法

5.Ansible模块

6.Playbook

7.role的定义与使用

8.Ansible的配置文件

猜你喜欢

转载自www.cnblogs.com/allenhu320/p/11354121.html