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. Typora破解

    Typora破解 需要python环境,没有的话需要先安装一下 访问 https://github.com/Mas0nShi/typoraCracker.git下载下来破解需要的压缩包并且解压缩 或者 ...

  2. pytorch运行错误:ValueError: too many dimensions 'str'

    问题: 本人在使用BERT进行微调的时候,在读取数据的时候出现了一个错误:ValueError: too many dimensions 'str'    于是我Debug了以后,发现问题出现在这个部 ...

  3. SharePoint Online 触发 Outlook 邮件内审批

    前言 我们在做SharePoint Online项目时, 经常会有客户问,我们能否在通知邮件中快速完成审批,而不是需要在邮件中打开系统,然后在系统中审批? 答案肯定是可以的,来!安排! 正文 1.我们 ...

  4. 社交网络分析的 R 基础:(二)变量与字符串

    本章会从 R 语言中最基本的数据类型开始介绍,在此之后就可以开始 R 语言实践了.对社交网络分析而言,我们在处理字符串上所花费的时间要远远大于处理数字的时间,因此本章还会介绍常用的字符串处理操作. 变 ...

  5. react之withRouter的作用

    withRouter的作用:把不是通过路由切换过来的组件,将react-router的history.location和match三个对象传入到props对象上: 默认情况下必须是经过路由匹配渲染的组 ...

  6. 微服务 架构 php+go

    p.p1 { margin: 0; font: 13px "Helvetica Neue"; color: rgba(0, 162, 255, 1) } 微服务  架构  php+ ...

  7. AFN框架

    0.AFN框架基本使用 0.1 AFN内部结构 AFN结构体 - NSURLConnection + AFURLConnectionOperation(已经被废弃) + AFHTTPRequestOp ...

  8. 软件版本GA、Beta、RC含义

    Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用.Beta:也是测试版,这个阶段的版本会一直加入新的功能.在Alpha版之后推出.RC:(Release Candida ...

  9. ssh中“Host key verification failed.“的解决方案

    SSH连接的时候Host key verification failed. ➜ ~ ssh root@192.168.1.88 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  10. Activity的生命周期 (必须掌握)

      onCreate 方法 当Activity第一次启动的时候调用   onDestroy 方法 当Activity销毁的时候调用   onStart() 方法 当Activity变成可见的时候调用  ...