Ansible

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的两种安装模式(CentOS7)

a、Yum包管理安装

# yum -y install ansible

缺点:安全性不高

b、Git源代码安装【推荐】

# git clone https://github.com/ansible/ansible.git

Ansible2.5+Python3.6安装步骤(CentOS7)

预先安装Python3.6版本

安装virtualenv

# pip install virtualenv

创建Ansible账户并安装Python3.6版本virtualenv实例

# useradd deploy && su - deploy

注:创建了一个deploy账户,并且su进入该账户

# virtualenv -p /usr/local/bin/python3 .py3-a2.5-env

注:创建一个Python3.6版本下的virtualenv实例,.py3-a2.5-env创建virtualenv实例目录

Git源代码安装ansible2.5

# cd /home/deploy/.py3-a2.5-env 进入实例目录

# which git 查看是否安装git工具

# git clone https://github.com/ansible/ansible.git 克隆安装Ansible源代码到本地

注:如果没有安装Git返回root目录#yum -y install git nss curl

# cd ansible && git checkout stable-2.5 进入Ansible克隆目录使用git checkout命令切换Ansible安装版本为2.5

加载Python3.6 virtualenv 环境

# source /home/deploy/.py3-a2.5-env/bin/activate

安装Ansible依赖包

# pip install paramiko PyYAML jinja2

在Python3.6虚拟环境下加载Ansible2.5

# mv ansible .py3-a2.5-env/ 移动Ansible文件夹到虚拟环境下

# cd .py3-a2.5-env/ansible 进入该目录

# git checkout stable-2.5 将Ansible版本切换到2.5

# source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

验证Ansible2.5

# ansible --version

安装前的步骤

关闭防火墙

# systemctl stop firewalld

禁用防火墙

# systemctl disable firewalld

关闭selinux强制访问控制安全策略保证该策略不会正常影响Ansible APP的正常运行

# vi /etc/sysconfig/selinux

# SELINUX=disabled

# reboot 使主机操作生效

# getenforce 查看selinux策略是否成功禁用掉

安装Python3.6

# wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

# tar xf Python-3.6.5.tar.xz 解压

# cd Python-3.6.5

# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFAGS="-wl,-rpath /usr/local/lib" 设定编译参数值–prefix安装指定目录;–with-ensurepip用来安装pip包管理工具;–enable-shared LDFAGS用来设置Python3.6.5匹配当前系统的参数值

# make && altinstall 完成编译并且将编译好的文件安装到/usr/local目录下

查看pip路径

# which pip3.6

# ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip 给pip3.6做一个软连接

Ansible Playbooks入门和编写规范

创建Test Playbooks(自己命名)

  • inventory/Server详细清单目录
    • testenv 具体清单与变量声明文件
  • roles/ roles任务列表
    • testbox/ testbox详细任务
      • tasks/
        tasks/main.yml testbox主任务文件
  • deploy.yml Playbook任务入口文件

详细目录testenv

[testservers]                 //Server组列表标签
test.example.com              //目标部署服务器主机名

[testservers:vars]            //Server组列表参数标签
server_name=test.example.com
user=root
ouput=/root/test.txt          //目标主机key/value参数

Ansible
Ansible

SSH免密码秘钥认证

  • Ansible服务器端创建SSH本地秘钥
    # ssh-keygen -t rsa

  • Ansible服务器端建立与目标部署机器的秘钥认证
    # ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@test.example.com

执行Playbooks

  • 部署到testenv环境
    # ansible-playbook -i inventory/testenv ./deploy.yml
    Ansible
    Ansible
上一篇:03-Pod控制器


下一篇:使用Linux Deploy将闲置的安卓手机改造简易服务器