Ansible默认采用SSH的方式管理客户端,基于python开发,由paramiko和PyYAMl 两个关键模块构建

支持非root用户管理,支持sudo

ansible作用:通过使用ansible的各种模块和分组来实现对客户端的批量管理
ansible的配置文件是通过YAML文件来实现的:

yaml介绍:

yaml文件扩展名为 .yml 或者 .yaml

---        #开始的标志
name: tom
age: 12
spouse:
name: Jane
age: 13
children:
- name: Jimmy
age: 15
- name1: enny
age: 16
import yaml
file=open("text.yaml")
x=yaml.load(file)
print x

{'age': 12, 'spouse': {'age': 13, 'name': 'Jane'}, 'name': 'tom', 'children': [{'age': 15, 'name': 'Jimmy'}, {'age': 16, 'name1': 'enny'}]}
字典:键值对, 比如 age: 12  (冒号后面必须是一个空格)

列表:  - 开头的(一个横杆和一个空格),列表所有成员都在相同的缩进级别

常量:包括整型,浮点,字符串,NULL,日期,布尔,时间等

更多yaml语法,请参考:https://blog.csdn.net/weixin_30760895/article/details/95752978

ansible的安装和配置

ansible 服务器 : 192.168.43.8

client 服务器: 192.168.43.6

一: 安装ansible

ansible 需要有epel源或者阿里源

yum install epel-release -y
yum install ansible -y

在/etc/yum.repos.d/ 下可以看到存在的yum源

或者 yum list | grep ansible

二:配置ansible

1, 使用ansible前需实现ansible服务器对另外两台机的ssh无密码访问

ssh-keygen  #生成公钥私钥对,默认是rsa
ssh-copy-id root@192.168.43.6  #将公钥发送到对应服务器,输入密码后,即可实现无密码访问

或者
ssh-keygen -t rsa    //-t 指定密钥类型,默认rsa。默认生成 id_rsa 和 id_rsa.pub 两个秘钥文件
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.6   //-i 指定公钥文件

在192.168.43.8 的 /root  生成.ssh目录,目录下有authorized_keys文件

2, 将client机器添加至ansible的webserver组

[webserver]
192.168.43.6

3, 测试ansible安装是否成功

在ansible主机端,执行如下所示的命令

ansible webserver -m ping -k    
SSH password:

-m :执行模块的名字,
-k  :不基于密钥的验证,使用密码登录

出现以上结果,说明ansible已经安装成功了,并且与client连通也是成功的

 三,定义主机与组规则

通过配置Inventory 文件 /etc/ansible/hosts

可以同时使用多个 inventory 文件,也可以从动态源,或云上拉取 inventory 配置信息!

[root@imzcy ~]# cat /etc/ansible/hosts
192.168.109.135 [WebServer]
app01.imzcy.cn
app02.imzcy.cn
app03.imzcy.cn [Database]
192.168.109.131:2222    
192.168.109.132 ansible_connection=ssh ansible_ssh_user=binbin  #对于每一个 host,你还可以选择连接类型和连接用户名
192.168.109.133 #app0[1:3].imzcy.cn 等价webserver
数字的简写模式中,01:50 也可写为 1:50,意义相同.你还可以定义字母范围的简写模式

四,ansible常用模块

ansible常用模块有很多,包括云计算,命令行,包管理,系统服务,用户管理等

查看模块 (下面两个都没什么用,建议直接百度模块的使用方法)

ansible-doc -l        #查看所有模块
ansible-doc -s 模块名 #查看某模块的使用方法

提示:ansible的模块所实现的行为是冥灯性(idempotence)的,只需执行一次playbook,就可以将需要的机器置为期望状态,向同一个主机多次执行一个playbook是安全的

ansible调用模块

ansible 操作目标 -m 模块名 -a 模块参数

setup 模块    获取主机信息

ansible webserver -m setup   #显示主机所有信息
ansible webserver -m setup -a "filter=ansible_all_ipv4_addresses" #获取主机ip地址
ansible webserver -m setup -a "filter=ansible_memory_mb" #获取主机内存信息
模糊匹配,比如以”mb”关键字结尾的信息
ansible ansible-demo3 -m setup -a "filter=*mb" 其他常用信息
ansible_all_ipv4_addresses:仅显示ipv4的信息。
ansible_devices:仅显示磁盘设备信息。
ansible_distribution:显示是什么系统,例:centos,suse等。
ansible_distribution_major_version:显示是系统主版本。
ansible_distribution_version:仅显示系统版本。
ansible_machine:显示系统类型,例:32位,还是64位。
ansible_eth0:仅显示eth0的信息。
ansible_hostname:仅显示主机名。
ansible_kernel:仅显示内核版本。
ansible_lvm:显示lvm相关信息。
ansible_memtotal_mb:显示系统总内存。
ansible_memfree_mb:显示可用系统内存。
ansible_memory_mb:详细显示内存情况。
ansible_swaptotal_mb:显示总的swap内存。
ansible_swapfree_mb:显示swap内存的可用内存。
ansible_mounts:显示系统磁盘挂载情况。
ansible_processor:显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus:显示cpu个数(只显示总的个数)。

copy模块  文件传输模块

ansible webserver -m copy -a "src=/testdir/copytest dest=/testdir/"

比如 从当前1.py文件传输到webserver组的root目录下

若有同文件名,默认覆盖(force=yes)

content参数 :当不使用src指定拷贝的文件时,可以使用content直接往目标文件内指定文件内容,src与content两个参数必有其一,否则会报错。如果目标文件有内容,则直接覆盖,
force参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

backup参数 : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。以当前时间为后缀,如果为no时,直接覆盖目标同名文件,默认为NO
ansible test -m copy -a "backup=yes src=/home/kkk dest=/home/"

owner参数 : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。
group参数 : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。
mode参数 : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r--r--“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。
ansible test -m copy -a "src=/home/kkk  dest=/home/ mode=644"

synchronize模块  数据同步模块

通过调用rsync命令实现

参考:

ansible官方开发文档:http://www.ansible.com.cn/docs/

centos7 部署ansible的更多相关文章

  1. CentOS7系统 ansible自动化部署多台服务器部署

    CentOS7系统 ansible自动化部署多台服务器部署   Ansible工作机制  从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ...

  2. 容器centos7安装部署ansible

    容器centos7安装部署ansible centos镜像版本及ansible版本 centos:centos7.5.1804 ansible:2.9.11 启动容器并进入容器 docker run ...

  3. [原]CentOS7部署osm2pgsql

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...

  4. centos7 部署ssserver

    centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...

  5. linux下安装部署ansible

    linux下安装部署ansible 介绍 Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点,其中sal ...

  6. centos7 部署 docker compose

    =============================================== 2019/4/10_第1次修改                       ccb_warlock == ...

  7. centos7 部署 docker ce

    =============================================== 2019/4/9_第1次修改                       ccb_warlock === ...

  8. Centos7安装ansible

    CentOS下部署Ansible自动化工具 1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本: python -V 2.查看yum仓库中是否存在ansible的rpm包 ...

  9. centos7 部署 open-falcon 0.2.0

    =============================================== 2019/4/29_第3次修改                       ccb_warlock 更新 ...

随机推荐

  1. python3爬虫超简单实例

    网站入口:http://wise.xmu.edu.cn/people/faculty 爬取信息:姓名和主页地址 python版本:3.5 import requests r = requests.ge ...

  2. linux中shell编程 -->三剑客习题汇总

    目录 1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 2.显示当前系统上的以root,centos或者user开头的信息 3.找出/etc/init.d/functio ...

  3. 一劳永逸,解决.NET发布云服务器的时区问题

    国内大多数开发者使用的电脑,都是使用的北京时间,日常开发的过程中其实并没有什么不便:不过,等遇到了阿里云等云服务器,系统默认使用的时间大多为UTC时间,这个时候,时区和时间的问题,就是不容忽视的大问题 ...

  4. java中的数据模型类

    package com.aaa.zxf.ajax.test; import java.io.Serializable; /** * java中的继承. * * 一.数据模型类 * 数据模型类:用来存取 ...

  5. ESP32:蓝牙BLE控制M3508电机

    ESP32:蓝牙BLE控制M3508电机 先给各位朋友拜个年,祝大家新春快乐,事事顺利,身体健康啊! 还是熟悉的3508,内容概述: ESP32主控 蓝牙BLE通信 使用实时系统(FreeRTOS) ...

  6. Lesson6——Pandas Pandas描述性统计

    1 简介 描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律.特征做出综合 ...

  7. ApacheCN - 关于我们

    1.简单介绍一下 ApacheCN? ApacheCN 是 2016 年 8 月份就开始搭建网站雏形, 2017 年 6 月份正式全职来做,是国内第一个有组织性.敢带人装逼.敢真的分享.并且敢戴绿帽的 ...

  8. Base64补充

    1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件. 65字 ...

  9. element select失效问题 , vue刷新的两种方式

    changeSelect: function () { this.$forceUpdate(); }, 编辑一条记录,给select 赋值后就不动了, 原因是复制后组件需要刷新一下, 不然不能触发事件 ...

  10. element ui图片上传方法

    <!--商品图片--> <template v-slot:product_cover> <el-upload list-type="picture-card&q ...