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 更新 ...
随机推荐
- 不难懂-----redux
一.flux的缺陷 因为dispatcher和Store可以有多个互相管理起来特别麻烦 二.什么是redux 其实redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 ...
- vscode开发PHP攻略
前言 此文主要介绍如何使用vscode开发PHP,开发体验可以说和php死桃木不相上下(虽然我没用过php死桃木) PHP扩展组合 一.卡巴斯基组合 PHP IntelliSense PHP Debu ...
- Android Studio如何查看自己设计的数据库
首先点击左上角进入Device File Explorer 进入后 点击data-data 找到你的项目名称 进入后点击你建立的数据库 一步步按照提示进行操作,即可显示你的表
- Rock Pi开发笔记(一):Rock Pi系列arm产品方案快速落地方案介绍
前言 开发RK3399等相关的项目和产品做评估,最近发现Rock Pi4是一个很好的评估版,价格合适,能满足评估的开发,像树莓派一样留出来引脚接口,是很好的快速落地arm系列产品和项目的较好方案选 ...
- 洛谷P4859 已经没有什么好害怕的了
因为不存在任意两个数相同,那么设糖果比药片大的组有 \(x\) 个,药片比糖果大的组有 \(y\) 个,那么我们有: \[x + y = n, x - y = k \] 即: \[x = \frac{ ...
- 关于diffing算法中key的使用
在vue和react中(只学了这两个),经常需要渲染元素到DOM上,而且如果不写key,有的浏览器会进行报错或者进行提示. 在我的理解里:key其实就是一个身份的标识,证明这个位置坐的就是这个人.后期 ...
- DESUtil
package com.tebon.ams.util;import sun.misc.BASE64Decoder;import javax.crypto.Cipher;import javax.cry ...
- 获取缓存文件大小并清理 By HL
通常用于删除缓存的时,计算缓存大小 //单个文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manage ...
- Xcode全系列下载地址
Xcode全系列下载地址,不断更新dmg 格式 下载链接:http://pan.baidu.com/s/1mgyxLP2
- Collections与Arrays
集合框架中的工具类:特点:该工具类中的方法都是静态的. Collections:常见方法: 1, 对list进行二分查找: 前提该集合一定要有序. int binarySearch(list,key) ...