centos7 部署ansible
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时,直接覆盖目标同名文件,默认为NOansible 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的更多相关文章
- CentOS7系统 ansible自动化部署多台服务器部署
CentOS7系统 ansible自动化部署多台服务器部署 Ansible工作机制 从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ...
- 容器centos7安装部署ansible
容器centos7安装部署ansible centos镜像版本及ansible版本 centos:centos7.5.1804 ansible:2.9.11 启动容器并进入容器 docker run ...
- [原]CentOS7部署osm2pgsql
转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...
- centos7 部署ssserver
centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...
- linux下安装部署ansible
linux下安装部署ansible 介绍 Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点,其中sal ...
- centos7 部署 docker compose
=============================================== 2019/4/10_第1次修改 ccb_warlock == ...
- centos7 部署 docker ce
=============================================== 2019/4/9_第1次修改 ccb_warlock === ...
- Centos7安装ansible
CentOS下部署Ansible自动化工具 1.确保机器上安装的是 Python 2.6 或者 Python 2.7 版本: python -V 2.查看yum仓库中是否存在ansible的rpm包 ...
- centos7 部署 open-falcon 0.2.0
=============================================== 2019/4/29_第3次修改 ccb_warlock 更新 ...
随机推荐
- limit概述
5.limit 5.1.limit是将查询结果集的一部分取出来,通常使用在分页查询中 分页作用是为了提高用户体验,可以一页一页翻页看 5.2.limit用法:(非常重要) 完整用法:limit sta ...
- BUGKU-Misc 成果狗成果狗
下载下来可以得到一张图片 成果真好看 放到kali里面用binwalk查看有没有隐藏文件,发现这里面有两张图片 然后可以拖到winhex或者010里面把两张图片分离出来,可以分离出1.jpg和54.j ...
- NumPy 数组学习手册·翻译完成
原文:Learning NumPy Array 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 ...
- canvas绘制“飞机大战”小游戏,真香!
canvas是ArkUI开发框架里的画布组件,常用于自定义绘制图形.因为其轻量.灵活.高效等优点,被广泛应用于UI界面开发中. 本期,我们将为大家介绍canvas组件的使用. 一.canvas介绍 1 ...
- 「JOISC 2014 Day4」两个人的星座
首先突破口肯定在三角形不交,考虑寻找一些性质. 引理一:两个三角形不交当且仅当存在一个三角形的一条边所在直线将两个三角形分为异侧 证明可以参考:三角形相离充要条件,大致思路是取两个三角形重心连线,将其 ...
- 读取数据库Blob类型的文本数据
开发一个查询功能时,遇到了一个ORM的问题:数据库字段是 Blob 类型,里面实际存储的是文本数据,Java 后端代码中用字符串 String 类型去接收这个字段的数据时,报错,提示没有对应的sett ...
- java8 stream详细
转载: https://zhuanlan.zhihu.com/p/299064490
- kebernet--新手填坑
1.安装好kubernet之后,新建rc后,里面的容器一直ImagePullBackOff ,镜像无法拉取: ----需要配置docker镜像为国内镜像,记得在各个Node上都要配置!!! vim / ...
- WJMZBMR(陈立杰)在成都赛区开幕式上的讲话
2013年10月19日 18:05:44 各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我 ...
- 任意文件上传漏洞syr
任意文件上传漏洞 先来几个一句话木马看看 <%execute(request("value"))%> #asp木马 <?php eval($_POST[" ...