ansible的安装部署

关于ansible

1.Ansible 是什么
    Ansible 简单的说是一个配置管理系统(configuration management system)。
    你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它
    使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将
    代码部署到任意数量的服务器上!
2.Ansible能做什么
        ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
        比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。
        比如:将某个文件一次性拷贝到100台服务器上。
        比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
        这些场景中我们都可以使用到ansible。
3.Ansible特性
        模块化:调用特定的模块,完成特定任务
        有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
        支持自定义模块
        基于Python语言实现
        部署简单,基于python和SSH(默认已安装),agentless
        安全,基于OpenSSH
        支持playbook编排任务
        幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
        无需代理不依赖PKI(无需ssl)
        可使用任何编程语言写模块
        YAML格式,编排任务,支持丰富的数据结构
        较强大的多层解决方案
4.Ansible架构

这里写图片描述

5.Ansible工作原理   

这里写图片描述

    Test1  172.25.44.11    服务端
    Test2  172.25.44.12    客户端

[root@test1 ~]# yum install gcc zlib zlib-devel openssl openssl-devel -y
[root@test1 ~]# ls
ansible-1.7.2.tar.gz  MarkupSafe-0.9.3.tar.gz  Python-2.7.8.tgz
ecdsa-0.11.tar.gz     paramiko-1.15.1.tar.gz   setuptools-7.0.tar.gz
Jinja2-2.7.3.tar.gz   pycrypto-2.6.1.tar.gz    simplejson-3.6.5.tar.gz
[root@test1 ~]# tar xvzf Python-2.7.8.tgz
[root@test1 ~]# cd Python-2.7.8
[root@test1 Python-2.7.8]# ./configure --prefix=/usr/local
[root@test1 Python-2.7.8]# make && make install 
[root@test1 Python-2.7.8]# cd /usr/local/include/python2.7/
[root@test1 python2.7]# cp -a ./*  /usr/local/include/  


#备份旧版本的pyrhon,并链接新版本的python
[root@test1 python2.7]# cd /usr/bin/
[root@test1 bin]# mv python python.old
[root@test1 bin]# ln -s /usr/local/bin/python2.7  /usr/local/bin/python
[root@test1 bin]# rm -fr /usr/local/python
[root@test1 bin]# cp /usr/local/bin/python2.7   /usr/bin/python
[root@test1 bin]# vim /usr/bin/yum     #修改yum脚本,使其指向旧版本python,以避免其无法运行
    1 #!/usr/bin/python  -->   #!/usr/bin/python2.4



# setuptools模块安装

[root@test1 bin]# cd
[root@test1 ~]# tar zxf setuptools-7.0.tar.gz 
[root@test1 ~]# ls
ansible-1.7.2.tar.gz     paramiko-1.15.1.tar.gz  setuptools-7.0
ecdsa-0.11.tar.gz        pycrypto-2.6.1.tar.gz   setuptools-7.0.tar.gz
Jinja2-2.7.3.tar.gz      Python-2.7.8            simplejson-3.6.5.tar.gz
MarkupSafe-0.9.3.tar.gz  Python-2.7.8.tgz
[root@test1 ~]# cd setuptools-7.0
[root@test1 setuptools-7.0]# python setup.py install  




# pycrypto模块安装
[root@test1 setuptools-7.0]# cd
[root@test1 ~]# tar zxf pycrypto-2.6.1.tar.gz 
[root@test1 ~]# cd pycrypto-2.6.1
[root@test1 pycrypto-2.6.1]# 
[root@test1 pycrypto-2.6.1]# python setup.py  install 

# pyYAML模块安装
[root@test1 pycrypto-2.6.1]# cd
[root@test1 ~]# tar zxf PyYAML-3.11.tar.gz
[root@test1 ~]# cd Py
Python-2.7.8/       PyYAML-3.11/        
Python-2.7.8.tgz    PyYAML-3.11.tar.gz  
[root@test1 ~]# cd PyYAML-3.11
[root@test1 PyYAML-3.11]# python setup.py  install 



# jinja2模块安装


[root@test1 PyYAML-3.11]# cd 
[root@test1 ~]# tar zxf MarkupSafe-0.9.3.tar.gz 
[root@test1 ~]# cd MarkupSafe-0.9.3
[root@test1 MarkupSafe-0.9.3]# python setup.py install 

[root@test1 MarkupSafe-0.9.3]# cd
[root@test1 ~]# tar zxf  Jinja2-2.7.3.tar.gz
[root@test1 ~]# cd Jinja2-2.7.3
[root@test1 Jinja2-2.7.3]# python setup.py  install 




# paramiko 模块安装

[root@test1 Jinja2-2.7.3]# cd
[root@test1 ~]# tar zxf  ecdsa-0.11.tar.gz 
[root@test1 ~]# cd ecdsa-0.11
[root@test1 ecdsa-0.11]# python setup.py  install 
[root@test1 ecdsa-0.11]# cd 
[root@test1 ~]# tar zxf  paramiko-1.15.1.tar.gz 
[root@test1 ~]# cd paramiko-1.15.1
[root@test1 paramiko-1.15.1]# python setup.py  install 


# simplejson模块安装

[root@test1 paramiko-1.15.1]# cd
[root@test1 ~]# tar zxf  simplejson-3.6.5.tar.gz 
[root@test1 ~]# cd simplejson-3.6.5
[root@test1 simplejson-3.6.5]# python setup.py  install 

# ansible安装
[root@test1 simplejson-3.6.5]# cd
[root@test1 ~]# tar zxf ansible-1.7.2.tar.gz 
[root@test1 ~]# cd ansible-1.7.2
[root@test1 ansible-1.7.2]# python setup.py  install 


#配置免密登陆
[root@test1 ~]# ssh-keygen    #生成密钥

这里写图片描述

[root@test1 ansible]# ssh-copy-id server1
[root@test1 ansible]# cd
[root@test1 ~]# scp -r .ssh/ server2:/root   #把钥匙传给客户端

#测试免密连接
[root@test1 ~]# ssh server2   #免密连接成功
            Last login: Thu Aug 16 17:14:58 2018 from server1

[root@test2 ~]# ssh server1
            Last login: Thu Aug 16 18:00:15 2018 from gateway
[root@test1 ~]# exit
            logout




#创建文件
[root@test1 ~]# vim /etc/ansible/hosts
            45 [testhosts]
            46 
            47 127.0.0.1
            48 server2     #客户端的解析
[root@test1 ~]# ansible testhosts -m command -a 'w'  # 查看服务器状态,‘w’表示查看

这里写图片描述

    [root@test1 ~]# vim /tmp/test.sh   #在服务端创建文件
      1 #!/bin/bash
      2 echo `date` > /tmp/ansible_test.txt  
    [root@test1 ~]# ansible testhosts -s -m copy -a 'src=/tmp/test.sh dest=/tmp/test.sh mode=0755'  #利用ansible可以方便地将本地的目录或者文件同步到远程服务器

这里写图片描述

[root@test1 ~]# ansible testhosts -m shell -a '/tmp/test.sh'   #批量执行该脚本
            server2 | success | rc=0 >>

            127.0.0.1 | success | rc=0 >>

这里写图片描述

#测试
[root@test2 ~]# vim /tmp/ansible_test.txt   #时间成功导入

这里写图片描述

此篇博客只实现了ansible最基础的安装部署,其他功能还在努力学习中

猜你喜欢

转载自blog.csdn.net/wzt888_/article/details/81813728