侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python ansible服务及剧本编写

Python  /  管理员 发布于 7年前   250

第1章 ansible软件概念说明

python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack)。其功能实现基于SSH远程连接服务;ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能

ansible软件相关参考链接信息:

http://docs.ansible.com/ansible/intro_installation.htmlhttp://www.ansible.com.cn/http://docs.ansible.com/modules_by_category.htmlhttp://www.ansible.cn/docs/

1.1 软件特点概述

01.不需要单独安装客户端(no agents),基于系统自带的sshd服务,sshd就相当于ansible的客户端

02.不需要服务端(no servers)

03.需要依靠大量的模块实现批量管理

04.配置文件/etc/ansible/ansible.cfg(无需配置)

1.2 企业级生产场景批量管理-自动化管理方案

01.最简单/最常用/最强大的选择是ssh key+shell/pssh方案,一般中小型企业会用(50-100台以下规模企业)

a.利用ssh key执行命令,并将命令放在脚本里面

b.利用ssh key执行命令,将命令放在脚本里面,并加上相应循环语句或判断语句

02.sina cfengine/puppet较早的批量管理工具(现在基本上没有企业用)

03.门户级别比较流行的,puppet批量管理工具(复杂/笨重)

04.saltstack批量管理工具;特点:简单,功能强大(配置复杂)---赶集网/小米/ CDN公司

批量管理路线:ssh key-->cfengine-->puppet-->saltstack/ansible

注意:使用ansible软件的前提是ssh key公钥分发完成

1.3 实现集群规模架构一键部署自动化-步骤说明

01.5台服务器先配置好(kickstart,cobbler无人值守安装),高级实现云计算(按需分配,动态调整)-openstack,kvm

02.linux基本优化,包括ssh服务(可以自动化实现)

03.创建密钥信息(自动化免交互创建)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

04.进行批量分发密钥(sshpass,expect自动化实现)

05.ansible软件安装(自动化实现)

06.网络服务自动化安装(ansible实现)

搭建yum仓库,定制rpm包

第2章 ansible软件实践部署

ansible软件部署安装需求

01. 需要有epel源

系统yum源(base epel--pip gem)

sshpass---epel

02. ssh+key免密码环境必须部署完成

2.1 ansible地址规划

服务器名称

网卡eth0

网卡eth1

用途说明

m01

10.0.0.61

172.16.1.61

批量管理服务器

nfs01

10.0.0.31

172.16.1.31

nfs共享存储服务器

backup

10.0.0.41

172.16.1.41

rsync备份服务器

web01

10.0.0.8

172.16.1.8

web服务器

说明:无特殊说明,子网掩码均为255.255.255.0,一个C类网段254台机器规模

2.2 ①部署ssh+key免密码登录方式

利用非交互式工具实现批量分发公钥与批量管理服务器

 sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostChecking=no 172.16.1.41" sshpass -p123456 ssh -o StrictHostChecking=no [email protected] "uptime" sshpass -p123456 scp -o StrictHostChecking=no /etc/hosts [email protected]:~ <- -p:指定ssh连接用户的密码 <- -o:StrictHostChecking=no 避免第一次登录出现公钥检查

2.3 ②受控端安装ansible相关管理软件

保留yum安装的软件

sed -i.bak 's#keepcache=0#keepcache=1#g' /etc/yum.conf 2 grep keepcache /etc/yum.conf 

客户端配置

yum install libselinux-python -y

说明:由于初始我们关闭了selinux安全管理软件,故这里需要操作此步骤。不装这个软件只能关闭selinux,但是无论什么情况也不要开启,工作环境下视情况而定

2.4 ③管理端m01安装ansible软件

yum install ansible -y

2.4.1 查看版本信息

 [root@m01 ~]# ansible --version ansible 2.3.2.0 config file = /etc/ansible/ansible.cfg #告知ansible软件配置文静路径 configured module search path = Default w/o overrides python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

2.4.2 查看软件相关安装信息

[root@m01 ~]# rpm -ql ansible|egrep -v '/usr/share/|/usr/lib'/etc/ansible/etc/ansible/ansible.cfg #ansible配置文件/etc/ansible/hosts  #定义ansible可以管理的主机信息/etc/ansible/roles  #主要在自动化部署多台主机时应用/usr/bin/ansible/usr/bin/ansible-playbook #执行ansible剧本命令

2.4.3 软件安装目录信息

[root@m01 ~]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg #ansible配置 ├── hosts #被ansible管理的主机名单(分组) └── roles 

2.5 ④配置/etc/ansible/hosts文件

编辑ansible的主机配置文件hosts,添加主机组banana

cp /etc/ansible/hosts{,.bak}[root@m01 ~]# vim /etc/ansible/hosts #配置文件编写举例[banana] #定义组名称172.16.1.8172.16.1.31172.16.1.41[root@m01 ~]# tail /etc/ansible/hosts

2.6 ⑤实践测试

[root@m01 ~]# ansible banana -m command -a "hostname" #-m指定命令的模块 -a指定参数(action)172.16.1.31 | SUCCESS | rc=0 >> #主机IP|请求状态|返回值(0即成功,否则失败)nfs01       #命令输出结果172.16.1.8 | SUCCESS | rc=0 >>web01172.16.1.41 | SUCCESS | rc=0 >>backup

2.6.1 ansible命令输出信息说明

输出内容为绿色,表示执行成功,仅查询但没有发生任何改变

输出内容为黄色,表示执行成功,但对受控主机产生了影响,发生了配置改变

输出内容为红色:表示执行失败!!!

第3章 ansible有关语法参数总结

3.1 语法格式图示

3.2 软件常用参数表

命令参数

参数说明

-m MODULE_NAME

相应名称的模块被执行(默认模块为command);

-m后面是模块的的名字

-a MODULE_ARGS

模块参数信息;

-a后面是要执行的命令,也可以写一个IP,针对一台机器来执行命令

-C,--check

不做任何改变;反而,只是尝试预言一些可能出现的改变

--syntax-check

执行语法检查在剧本上,但是并不执行剧本

第4章 ansible常用模块总结

常见模块

模块说明

command(重要模块)

执行命令模块,ansible命令执行默认模块

shell(重要模块)

执行shell脚本模块

script(重要模块)

把脚本发到客户端然后执行;执行脚本命令在远程服务器上

copy(重要模块)

把本地文件发送到远端

file

设定文件属性模块

service

系统服务管理模块

cron

计划任务管理模块

yum

yum软件包安装管理模块

.social-share p{font-size:8px;}

  • 上一条:
    书单|人生苦短,你还不用python!
    下一条:
    详解python 拆包可迭代数据如tuple, list
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客