Ansible介绍

什么是Ansible?

Ansible是一个开源部署工具
开发语言:Python
特点:SSH协议通讯,全平台,无需编译,模块化部署管理
作用:推送Playbook进行远程节点快速部署

Ansible与Chef,Saltstack的不同

Chef
       Ruby语言编写,C/S架构,配置需要Git依赖
       Recipe脚本编写规范,需要编程经验
Saltstack
      Python语言编写,C/S架构,模块化配置管理
      YAML脚本编写规范,适合大规模集群部署
Ansible
      Python语言编写,无Client,模块化配置管理
      Playbook脚本编写规范,易于上手,适合中小规模快速部署

Ansible的优势和应用场景

轻量级无客户端(Agentless)
开源免费,学习成本低,快速上手
使用Playbook作为核心配置架构,统一的脚本格式批量化部署
完善的模块化扩展,支持目前主流的开发场景
强大的稳定性和兼容性
活跃的官方社区问题讨论,方便Trubleshooting与DEBUG问题

Ansible配合virtualenv安装配置

jenkins与ansible jenkins与ansible有啥区别_virtualenv

Ansible的两种安装模式(Centos7)

1.Yum包管理安装
       yum  -y   install   ansible
2.Git源代码安装【推荐】 
      git  clone https://github.com/ansible/ansible.git
Ansible 2.5 + Python3.6 安装步骤【Centos7】

1.预先安装Python3.6版本
2.安装virtualenv
      pip install virtualenv
3.创建Ansible账户并安装python3.6版本virtualenv实例
     useradd deploy && su - deploy
     virtualenv -p /usr/local/bin/python3.6  .py3-a2.5-env
4. Git源代码安装ansible2.5
     cd /home/deploy/.py3-a2.5-env
     git clone https://github.com/ansible/ansible.git
     cd ansible && git checkout stable-2.5
5. 加载python3.6 virtualenv 环境
    source /home/deploy/.py3-a2.5-env/bin/activate
6.安装ansible依赖包
    pip install paramiko PyYAML jinja2
7.在python3.6虚拟环境下加载ansible2.5
    source /hone/deploy/.py3-a2.5-env/ansible/hacking/env-setup  -q
8.验证ansible2.5
    ansible --version

演示

前提工作

jenkins与ansible jenkins与ansible有啥区别_git_02

安装Python3.6和Virtualenv

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_03

创建ansible系统账户并在该系统账户下安装python3.6版本的Virtualenv实例

jenkins与ansible jenkins与ansible有啥区别_Ansible_04

安装git

jenkins与ansible jenkins与ansible有啥区别_Ansible_05

出现的一个错误

jenkins与ansible jenkins与ansible有啥区别_virtualenv_06

加载vintualenv环境

jenkins与ansible jenkins与ansible有啥区别_virtualenv_07

完成

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_08

Ansible playbooks入门和编写规范

Playbooks框架与格式

Test Playbooks

jenkins与ansible jenkins与ansible有啥区别_virtualenv_09

详细目录testenv

jenkins与ansible jenkins与ansible有啥区别_git_10

主任务文件main.yml

jenkins与ansible jenkins与ansible有啥区别_virtualenv_11

任务入口文件deploy.yml

jenkins与ansible jenkins与ansible有啥区别_virtualenv_12

Playbooks编写规范

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_13

演示

写剧本

jenkins与ansible jenkins与ansible有啥区别_git_14

免密钥登陆

jenkins与ansible jenkins与ansible有啥区别_virtualenv_15

完成并验证

jenkins与ansible jenkins与ansible有啥区别_git_16

Ansible Playbboks常用模块

Ansible Playbook 常用模块介绍

File模块

     在目标主机创建文件或目录,并赋予其系统权限

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_17

Copy模块

     实现Ansible服务器到目标主机的文件传送

jenkins与ansible jenkins与ansible有啥区别_virtualenv_18

Stat模块

    获取远程文件状态信息

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_19

Debug模块

    打印语句到Ansible执行输出

jenkins与ansible jenkins与ansible有啥区别_git_20

Command/Shell模块

    用来执行Linux目录主机命令行

jenkins与ansible jenkins与ansible有啥区别_git_21

Template模块

    实现Ansible服务端到目标主机的jinja2模块传送

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_22

Packaging模块

     调用目标主机系统包管理工具(yum , apt)进行安装

jenkins与ansible jenkins与ansible有啥区别_virtualenv_23

Service模块

     管理目标主机系统服务

jenkins与ansible jenkins与ansible有啥区别_Ansible_24

Ansible Playbooks常用模块应用

jenkins与ansible jenkins与ansible有啥区别_virtualenv_25

演示

目标主机预配置工作

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_26

jenkins与ansible jenkins与ansible有啥区别_jenkins与ansible_27

jenkins与ansible jenkins与ansible有啥区别_Ansible_28

jenkins与ansible jenkins与ansible有啥区别_virtualenv_29

jenkins与ansible jenkins与ansible有啥区别_virtualenv_30