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. 集合框架-TreeSet-Comparator比较器

    1 package cn.itcast.p5.treeset.demo; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 ...

  2. electron-vue 项目添加启动loading动画问题

    前言 electron-vue脚手架搭建的项目,在开发阶段可能你注意不到项目启动慢的问题,但是在build 生成的exe可执行文件,启动后,要反应很久才能进入到app.vue 中加载的页面,体验性很差 ...

  3. 配置kubectl连接多个kubernetes集群

    背景:我们通过会有多个k8s集群,例如集群(cn-k8s)和集群(jp-k8s),那个就需要有一台服务器可以同时访问两个集群,方式:将2个集群的config信息存放到一个文件中,通过使用 kubect ...

  4. JavaScript之Promise实现原理(手写简易版本 MPromise)

    手写 Promise 实现 Promise的基本使用 Promise定义及用法详情文档:Promise MAD文档 function testPromise(param) { return new P ...

  5. IntelliJ IDEA 中文官方文档

    目录 认识IntelliJ IDEA IntelliJ IDEA 安装和设置 IntelliJ IDEA如何使用 IntelliJ IDEA中不容错过的快捷键 IntelliJ IDEA专业的使用技巧 ...

  6. 论新手该如何学习java?

    由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间,还有一个很重要的原因就是java这门语言更适合商业应用,所以高校里大部分博士老师们对此语言的了解甚至不比本科生多. 在这种环境下, ...

  7. 「ZJOI2014」星系调查

    「ZJOI2014」星系调查 本题核心在于快速求XPs 的线性假设相斥度. 点\((x1,y1)\)到直线\(y=kx+b\)的距离的平方为\(\displaystyle {(kx1+b-y1)^2} ...

  8. Android 关于Intent的一些简略总结

    感谢大佬:https://www.jianshu.com/p/19147a69e970 Intent 常用构造方法: | 方法 | 描述 | |Intent() | 构造一个空 Intent | | ...

  9. 动画移动scrollview内容

    #pragma mark - 按钮的点击 - (IBAction)top { /* [UIView animateWithDuration:2.0 animations:^{ // CGPoint o ...

  10. 【Github资源大汇总】 - 王朋

    1.Github-iOS备忘 (国人总结的上百个Github上的开发框架和完整App) http://github.ibireme.com/github/list/ios/ 2.不少优秀的 iOS, ...