python ansible模块_python学习-ansible简单使用1

一、介绍

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

Ansible 特点:

>> 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。

>> 默认使用 SSH(Secure Shell)协议对设备进行管理。

>> 主从集中化管理。

>> 配置简单、功能强大、扩展性强。

>> 支持 API 及自定义模块,可通过 Python 轻松扩展。

>> 通过 Playbooks 来定制强大的配置、状态管理。

>> 对云计算平台、大数据都有很好的支持。

二、Ansible的安装

Ansible只需在管理端部署环境即可,默认通过yum安装即可。yum install ansible -y

2.1 Ansible配置及测试

第一步是修改主机与组配置,文件位置/etc/ansible/hosts,格式为ini,添加两台主机ip,同时定义两个IP到webservers组,更新的内容如下:【/etc/ansible/hosts】

[webservers]         #组名 websevers

## alpha.example.org

## beta.example.org

172.31.101.51         #主机1

172.31.101.52         #主机2

通过ping模块测试主机的连通性,分别对单主机及组进行ping操作ansible 172.31.101.52 -m ping -k  #单个主机

ansible webservers -m ping -k     #单个组

测试主机连通性如下图所示

由于主控端与被控端主机未配置ssh证书信任,需要执行ansible命令添加-k参数,要求提供root(默认)帐号密码,即提示“SSH password:”时输入

ping模块参数说明# -i          指定 hosts 文件位置

# -u username 指定 SSH 连接的用户名

# -k          指定远程用户密码

# -f          指定并发数

# -s          如需要 root 权限执行时使用 ( 连接用户不是 root 时 )

# -K          -s 时,-K 输入 root 密码

2.2 配置linux主机ssh无密码访问

为了避免Ansible下发指令时输入目标主机密码,可以通过证书签名达到ssh无密码访问。

在主控端创建密钥,执行ssh-keygen -t rsa[root@rbtnode1 ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): (回车)

Enter passphrase (empty for no passphrase):                   (回车)

Enter same passphrase again:                                     (回车)

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

8b:8a:91:2e:04:2e:dd:4d:99:c0:e9:f0:5f:f9:85:bb root@rbtnode1

The key's randomart image is:

+--[ RSA 2048]----+

|   . .           |

|  . +            |

|   + . o . .     |

|.   o + o . .    |

|o. . + .S. o     |

|.o... o. .o      |

|o o   . .  .     |

|.. o .    E      |

| .o .            |

+-----------------+

接下来同步公钥文件id_rsa.pub到目标主机,使用ssh-copy-id公钥拷贝工具,命令格式为/usr/bin/ssh-copy-id [-i[identity-file]][user@]machinessh-copy-id -i /root/.ssh//id_rsa.pub root@172.31.101.51

ssh-copy-id -i /root/.ssh//id_rsa.pub root@172.31.101.52

2.3 定义主机与组规则

Ansible通过定义好的主机与组规则(Inventory)对匹配的目标主机进行远程操作,配置规则文件默认是/etc/ansible/hosts,以下为举例说明:

www.abc.com     # 定义域名

192.168.1.100   # 定义 IP

192.168.1.150:37268   # 指定端口号

[WebServer]           # 定义分组

192.168.1.10

192.168.1.20

192.168.1.30

[DBServer]            # 定义多个分组

192.168.1.50

192.168.1.60

Monitor ansible_ssh_port=12378 ansible_ssh_host=192.168.1.200   # 定义别名

# ansible_ssh_host 连接目标主机的地址

# ansible_ssh_port 连接目标主机的端口,默认 22 时无需指定

# ansible_ssh_user 连接目标主机默认用户

# ansible_ssh_pass 连接目标主机默认用户密码

# ansible_ssh_connection 目标主机连接类型,可以是 local 、ssh 或 paramiko

# ansible_ssh_private_key_file 连接目标主机的 ssh 私钥

# ansible_*_interpreter 指定采用非 Python 的其他脚本语言,如 Ruby 、Perl 或其他类似 ansible_python_interpreter 解释器

[webservers]         # 主机名支持正则描述

www[01:50].example.com

[dbservers]

db-[a:f].example.com

2.4 目标匹配

目标匹配,格式为ansible -m -a  举例说明:重启webservers组的所有Apache服务ansible webservers -m service -a "name=httpd state=restarted"

规则含义

192.198.1.2或one.example.com匹配目标Ip地址或者主机名,多个ip或主机名使用":"号分隔

webservers匹配目标组为webserver,多个组使用":"号分隔

ALL 或 ‘*’匹配目标所有主机

~(web|db).*\.example\.com 或 192.168.1.*支持正则表达式匹配所有主机或ip地址

webservers:!192.168.1.22匹配websevers组且排除192.168.1.22主机ip

webservers:&dbservers匹配webservers与dbservers两个群组的交集

webservers:!{{excluded}}:&{{required}}支持变量匹配的方式

2.5查询支持模块及模块说明ansible-doc -l    # 列出 Ansible 支持的模块

ansible-doc ping  # 查看该模块帮助信息

三、常用模块及api

3.1远程命令模块

模块包括command、script、shell都可以实现远程shell命令运行。command作为Ansible的默认模块,可以运行远程权限范围内所有的shell命令;script功能是在远程主机上执行主控端存储shell脚本文件,相当于scp+shell组合;shell功能是执行远程主机的shell脚本文件ansible webservers -m command -a "free -m"

ansible webservers -m script -a "/home/test.sh 12 34"

ansible webservers -m shell -a "/home/test.sh"

3.2copy模块

实现主控端向目标主机拷贝文件,类似于scp的功能。以下示例实现拷贝/root/pip-10.0.1.tar.gz 文件到webserver组目标主机/tmp/目录下,并更新文件属主及权限# ansible webservers -m copy -a "src=/root/pip-10.0.1.tar.gz dest=/tmp/ owner=root group=root mode=0755"

3.3 stat模块

获取远程文件的状态信息,包括atime ,ctime ,md5等信息ansible webservers -m stat -a "path=/tmp/pip-10.0.1.tar.gz"

4.4 get_url模块

实现在远程主机下载指定URL到本地,支持sha256sum文件校验ansible webservers -m get_url -a  "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"

4.5 yum模块

linux平台软件包管理操作,常见有yum,apt管理方式ansible webservers -m yum -a "name=wget state=latest

4.6 cron模块

远程主机crontab配置ansible webservers -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"

在远程主机查看计划任务

4.7 mount模块

远程主机的分区挂载ansible webservers -m mount -a "name=/mnt/date src=fstype=exts opts=ro state=present"

4.8 service模块

远程主机系统服务管理ansible webservers -m service -a "name=firewalld state=stopped"

ansible webservers -m service -a "name=firewalld state=started"

ansible webservers -m service -a "name=firewalld state="restartd"

ansible webservers -m service -a "name=firewalld state=reloded"

4.8 user服务模块

远程主机系统用户管理ansible webservers -m user -a "name=yangchao comment='yangchao'" #增加用户

ansible webservers -m user -a "name=yangchao state=absent remove=yes" #删除用户

关于ansible其他模块及详细用法,请参照

http://www.ansible.com.cn/docs/modules_intro.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动画制作c语言程序,C语言动画制作

#include "user-def.H"void main(){ int i; printf("简单动画演示程序\n"); for(i0;i<5;i) display_picture(); printf("\n\t\t\t\tTest\n"); system("pause");}/* user_def.h */#ifndef _user_def_H #de…

python偏函数和高阶函数_【Python入门】8.高阶函数之 匿名函数和偏函数

目录高阶函数匿名函数 lambda偏函数高阶函数匿名函数 lambdalambda&#xff0c;即希腊字母λ。顾名思义&#xff0c;匿名函数没有函数名&#xff0c;在运用时采取lambda x : ...的方式&#xff0c;如lambda x : x x相当于def f(x):return x x如在结合map( )函数生成序列时就可…

c语言为什么要建项目,一个C语言小项目为什么都说牛逼

原标题&#xff1a;一个C语言小项目为什么都说牛逼意在鼓励C语言学者。更有兴趣&#xff0c;学习更富有创业和乐趣&#xff01;推荐加学习交流群&#xff1a;658807522 可以在一起学习交流&#xff0c;既是参赛选手&#xff0c;又是学者&#xff0c;也可以先学习再参赛&#xf…

python查询最高分_精通 Oracle+Python,第 1 部分:查询最佳应践

作者&#xff1a;Przemyslaw Piotrowski首先&#xff0c;熟悉 Oracle-Python连接性的基本概念2007 年 9 月发布参见系列目录在 Python 做事方式的核心原则中&#xff0c;有一个规定是要求具有到 API 的高级接口。数据库 API(在此例中为 OracleAPI)就是一个例子。使用 Computron…

大学c语言项目,项目大学C语言程序设计期末复习重点.doc

期末复习课笔试试卷基本情况1、单项选择(本题共15个小题&#xff0c;每题2分。30分)在四个备选答案中选择一个正确的。答案唯一。2、阅读程序选择运行结果(本题共有8个小题&#xff0c;每个题3分。24分)考核基本运算。答案唯一。3、阅读程序并填空(本题共有6个小题&#xff0c;…

单片机c语言 oxfe,AVR单片机入门及C语言高效设计实践(五)

ATMEAGl6L的中断系统什么是“中断”?顾名思义中断就是中断某一工作过程去处理一些与本工作过程无关或间接相关或临时发生的事件&#xff0c;处理完后&#xff0c;则继续原工作过程。比如&#xff1a;你在看书&#xff0c;电话响了&#xff0c;你在书上做个记号后去接电话&…

python中property魔法方法原理_Python类中的魔法方法之 __slots__原理解析

在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性&#xff0c;这样非常的有用处&#xff0c;可以使我们任意的去设置新的属性。每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性&#xff0c;如果对象很多的情况下会浪费内存空间。可…

c语言 4则运算符,C语言学习之路之四-----------C语言的运算符与表达式

C语言的运算符与表达式运算符与表达式C语言的运算符又称为操作符&#xff0c;是数据间进行运算的符号。C语言的运算符按运算类型可分为赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、指针运算符和取成员运算符等&#xff1b;按运算对象(又称为操作数)的个数又可分…

python中if控制语句_Python中流程控制语句之IF语句

生活中经常遇到的各种选择和判断在程序中也会遇到&#xff0c;比如玩色子&#xff0c;猜大小&#xff0c;比如选择哪条路回家&#xff1f;Python程序中同样也会遇到。IF语句就是用作条件判断的控制语句。语法一&#xff1a;if 条件:  # 引号是将条件与结果分开结果1 #tab键&a…

android 生成 资源文件,SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具...

Vector矢量图在Android项目中的利用愈来愈广泛&#xff0c;但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦&#xff0c;首先能支持的SVG规范较少&#xff0c;其次操作流程麻烦。而另外一种方式就是通过http://inloop.github.io/svg2android…

python常用序列类型_Python基础-序列类型的常用方法

python 是一门编程语言&#xff0c;是一门完全面向对象的编程语言。各序列类型的自带方法序列的常用方法元组的常用方法字符串的常用方法①列表的常用方法L.append(obj)>>>在列表末尾添加新的对象L.clear()>>>清空整个列表L.copy()>>>复制列表L.cou…

android 内存占用工具,Android系统检测程序内存占用各种方法

1.检查系统总内存liuhxuc ~ $ adb shell cat /proc/meminfoMemTotal: 840868 kBMemFree: 457344 kBBuffers: 1744 kBCached: 203064 kBSwapCached: 0 kBActive: 234932 kBInactive: 129644 kBActive(anon)…

android微信朋友圈相册背景,Android 仿微信朋友圈图片拖拽返回

目前的app的动画效果是越来越炫了&#xff0c;很多主流app的图片预览返回都有类似功能&#xff0c;比较常见的是ios自带相册&#xff0c;微信朋友圈等等。自己项目中也有类似功能&#xff0c;最近整理了一下这个功能的代码&#xff0c;做个笔记记录&#xff0c;有兴趣的朋友可以…

python文本筛选html_python 正则表达式过滤文本中的html标签 源代码解析

#py2.7#coding:utf-8import reimport osimport chardetdef filter_tag(htmlstr):re_cdata re.compile(^>]*>, re.I)re_script re.compile(]*>[^, re.I) #过滤脚本re_style re.compile(]*>[^, re.I) #过滤stylere_br re.compile()re_h re.compile(?\w[^>]*…

erp采购总监个人总结_《用友 ERP 培训教程:财务核算/供应链管理/物料需求计划》ERP概述 : ERP基础知识...

第1章 ERP概述本章重点_- _ERP概要_- _ERP实施成功的必要条件_- _ERP几个重要的名词解释用友ERP-U8&#xff08;V8 .72&#xff09;简介及功能按钮说明1.1 ERP基础知识1.1.1 ERP基本概念ERP&#xff08;Enterprise Resources Planning&#xff09;中文叫做企业资源规划&…

android studio1.5 for mac,适用于Mac的Android Studio 1.5.x随机崩溃

适用于Mac的Android Studio 1.5(AI-141.2456560)经常随机崩溃.我正在使用Macbook Pro 15“Retina(2105年中期)和Mac OS X 10.11.1真的很烦人.你有过这些崩溃的经历吗&#xff1f;你知道任何解决方法吗&#xff1f;提前致谢.这是崩溃日志的标题&#xff1a;Process: studio [425…

python 八大排序_八大排序算法的 Python 实现

1、插入排序def insert_sort(lists):# 插入排序count len(lists)for i in range(1, count):key lists[i]j i - 1while j > 0:if lists[j] > key:lists[j 1] lists[j]lists[j] keyj - 1return lists2、希尔排序def shell_sort(lists):# 希尔排序count len(lists)st…

soc 设计soc设计 uml实务手册_企业内训“软件需求设计建模方法学全程实例剖析”训练方案(2020年)...

※训练介绍※利润需求-设计。软件开发中&#xff0c;需求是解决“系统怎样好卖”的问题&#xff0c;设计是解决“降低开发成本”的问题。要迈向“低成本制造好卖的产品”的境界&#xff0c;并非喊喊口号就能达到。口号&#xff1a;我们只做最重要的需求&#xff0c;尽快把系统推…

鸿蒙分布式通讯子系统,【鸿蒙】分布式通信子系统--让华为手机发现Hi3861开发板...

目录&#xff1a;工具步骤运行结果工具&#xff1a;1. 华为手机&#xff0c;需要有多设备协同功能。在设置->更多连接->多设备协同&#xff0c;查看是否有多设备协同功能&#xff0c;此功能使用的就是coap协议。2. Hi3861开发板步骤&#xff1a;1. 修改源码&#xff0c;…

python2.7 pyqt4创建qtapp_python-2.7 – 向TabWidget pyqt4添加加号按钮

以下代码提供了一个可以动态添加选项卡的选项卡界面import sys,randomfrom PyQt4 import QtCore,QtGuiclass TabContainer(QtGui.QWidget):def __init__(self):super(TabContainer,self).__init__()self.next_item_is_table Falseself.initUI()def initUI(self):self.setGeome…