一、ansible的功能和意义

1、功能

 ansible批量功能 ----------------------> 并行

01. 可以实现批量系统操作配置
02. 可以实现批量软件服务部署
03. 可以实现批量文件数据分发
04. 可以实现批量系统信息收集

  

2、意义

01. 提高工作的效率
02. 提高工作准确度
03. 减少维护的成本
04. 减少重复性工作

  

二、ansible的特点

1. 没有配置文件(不需要配置)
2. 不需要启动服务
3. 客户端不需要部署任务

  

三、ansible和相似的软件对比

和ansible相似的软件:saltstack

saltstack也是自动化批量管理软件。

但是saltstack比较复杂,软件服务比较重。

四、ansible安装

yum安装(需要epel源):

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

五、ansible基本使用(默认是以root用户执行,但是基于ssh连接操作要多次输入密码,为方便可以使用基于ssh密钥方式进行认证)

1、ansible主要配置文件

 (1) ansible应用程序的主配置文件:/etc/ansible/ansible.cfg

 (2) Host Inventory定义管控主机:/etc/ansible/hosts

  

2、ansible应用程序命令

ansible-doc 命令:获取模块列表,及模块使用格式;

ansible-doc -l:获取模块列表
ansible-doc -s module_name:获取指定模块的使用信息

ansible的命令格式可以理解为(ansible还有很多参数):

ansible     主机信息(IP 主机组 all ...)    -m    (模块名)command     -a      "操作动作" 

3、ansible执行命令返回信息的颜色的含义

(1)绿色:执行成功

(2)黄色:执行成功并且状态发生了改变

(3)红色:执行失败

提示:可以在ansible.cfg中进行定制颜色的设定

六、ansible主机清单功能模块(指定可以管理哪些主机)

1、主机清单配置方式:

方式1:直接把IP写在配置文件中

方式2:指定分组

[oldboy]
172.16.1.41
172.16.1.31 [oldgirl]
172.16.1.7

  

方式3:支持主机名符号匹配配置

[oldboy]
172.16.1.[1:50]
web[01:03]

  

方式4:支持内置变量信息配置

[oldboy]
172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_ssh_port=22 [oldboy]
172.16.1.7 ansible_user=root ansible_password=123456 ansible_port=22

  

方式5:支持特殊变量信息配置 (剧本)

[oldboy]
172.16.1.7 [oldboy:vars]
ansible_user=root
ansible_password=123456
ansible_port=22

  

方式6:嵌入式配置方法

[backup:children]
backupclient
backupserver [backupclient]
172.16.1.7 ansible_user=root ansible_password=123456
172.16.1.31
[backupserver]
172.16.1.41

 

2、ansible命令指定管理的主机方式

ansible命令后面指定要管理的主机,all表示主机清单里面的全部主机,也可指定主机清单里面的分组名等。

七、ansible的模块使用(以下列举的是一些常用的模块)

1、ping模块

2、command模块 :命令模块=========在目标主机执行命令

参数:

chdir:    在执行命令前,先切换目录信息
creates: 判断一个文件是否存在,如果存在,后面命令被跳过(不执行)
removes: 判断一个文件是否存在,如果存在,后面命令就执行
free_form:在使用command模块时候必须输入一个合法的linux命令

  

基本用法:

[root@m01 ansible]# ansible backup -m command -a "hostname"
172.16.1.31 | CHANGED | rc=0 >>
nfs01 172.16.1.41 | CHANGED | rc=0 >>
backup 172.16.1.7 | CHANGED | rc=0 >>
web01

  

特殊用法:

chdir 参数:
[root@m01 ansible]# ansible backup -m command -a "chdir=/tmp pwd"
172.16.1.31 | CHANGED | rc=0 >>
/tmp 172.16.1.7 | CHANGED | rc=0 >>
/tmp 172.16.1.41 | CHANGED | rc=0 >>
/tmp

 

creates 参数:
[root@m01 tmp]# ansible backup -m command -a "creates=/etc/oldboy.txt touch /opt/oldboy.txt"
172.16.1.41 | CHANGED | rc=0 >> 172.16.1.7 | SUCCESS | rc=0 >>
skipped, since /etc/oldboy.txt exists 172.16.1.31 | CHANGED | rc=0 >>

  

3、shell模块:万能模块==========在目标主机执行命令

chdir:    在执行命令前,先切换目录信息
creates: 判断一个文件是否存在,如果存在,后面命令被跳过(不执行)
removes: 判断一个文件是否存在,如果存在,后面命令就执行
free_form:在使用command模块时候必须输入一个合法的linux命令
可以识别一些特殊字符 < > | ; $

提示:shell模块虽然是万能模块,但最好选择专业的模块完成专业事情

  

例如:

ansible backup -m shell -a "rpm -qa iftop"

  

4、script模块:命令模块==========执行脚本

例如:

ansible backup -m script -a "/server/scripts/yum.sh"

  

5、copy模块:=============批量分发文件

作用:

01. 分发文件数据信息     从管理端 -- 被管理端
02. 修改文件权限属性信息
03. 移动远程主机数据信息 被管理端 -- /tmp/oldboy.txt --- /opt/

  

参数:
src: 指定要推送的数据信息
dest:指定数据保存在远程主机什么目录中
mode:修改文件权限信息
owner:修改文件属主信息
group:修改文件属组信息
backup: 分发文件数据时,会对源文件进行备份
remote_src: 复制远程主机文件到其他路径,或者进行远程主机数据备份
content: 直接编辑文件内容

基本用法:

ansible backup -m copy -a "src=/etc/hosts dest=/etc/"

  

特殊用法:

传输文件时,修改文件权限:

ansible backup -m copy -a "src=/etc/hosts dest=/etc/hosts.bak mode=600 owner=oldboy666 group=oldboy666"

分发文件时,对源文件进行备份:

 ansible backup -m copy -a "src=/etc/hosts dest=/etc/ backup=yes"

远程主机文件进行复制备份(便于批量还原):

ansible backup -m copy -a "src=/etc/hosts dest=/etc/hosts.backup  remote_src=yes"

批量还原:

ansible backup -m copy -a "src=/etc/hosts.backup dest=/etc/hosts  remote_src=yes"

直接编辑文件信息,并且进行批量分发:

ansible backupclient -m copy -a "content='oldboy123' dest=/etc/rsync.password mode=600"

6、fetch模块:===================批量拉取文件

ansible 172.16.1.7 -m fetch -a "src=/etc/oldgirl.txt dest=/tmp"

  

7、file模块:

作用:

01. 修改文件权限信息

02. 创建数据信息/删除数据信息

基本用法:修改文件权限

ansible 172.16.1.7 -m file -a "path=/etc/oldgirl.txt mode=666 owner=oldboy666 group=oldboy666"

  

特殊用法:创建数据信息

参数:state
absent -- 删除数据信息
directory -- 创建目录
file ←
hard -- 创建硬链接
link -- 创建软链接
touch -- 创建文件

创建文件:

ansible 172.16.1.7 -m file -a "path=/oldboy/oldboy.txt state=touch"

  

创建目录:

ansible 172.16.1.7 -m file -a "path=/oldboy/oldboy_dir state=directory"

  

删除文件数据:

ansible 172.16.1.7 -m file -a "path=/oldboy/oldboy_dir/oldboy_soft_link  state=absent"

  

8、cron模块:定时任务模块=========批量添加设置定时任务信息

参数:
minute hour day month weekday --- 时间参数
job -- 指定定时任务信息
name -- 添加注释信息
state -- absent 删除定时任务 present 添加定时任务
disabled -- 注释定时任务 yes 取消定时任务注释 no

  

每隔5分钟,时间同步:

ansible backup -m cron -a "name='date ntpdate crond02'  minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null'"

  

批量删除定时任务信息:

ansible backup -m cron -a "name='date ntpdate crond' state=absent"

  

批量注释定时任务信息:

ansible backup -m cron -a "name='date ntpdate crond'  minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null' disabled=yes"

  

9、yum模块:批量下载安装软件

参数:
name: 指定软件名称
state: 指定动作信息 installed

  

ansible backup -m yum -a "name=nmap state=installed"

  

10、service模块:管理服务状态模块

作用:批量启动/停止服务程序  设置服务是否开机自动启动

参数:
name: 定义服务名称
state: 是否启动 started 停止 stopped 重启 restarted 平滑重启 reloaded
enabled:设置服务是否开机自动启动

  

ansible backup -m service -a "name=firewalld state=started enabled=yes"

ansible backup -m service -a "name=firewalld state=stopped enabled=no"

  

11、user模块:用户管理

参数
name 创建的用户名称
uid 指定用户的uid信息
group 指定属于主要组
groups 指定属于哪个附属组
password 设置用户密码信息???
shell 指定登录方式 /bin/bash /sbin/nologin
create_home:

  

创建虚拟用户:

ansible backup -m user -a "name=Alex uid=250 group=root groups=oldboy shell=/sbin/nologin create_home=no"

  

12、mount模块:挂载

参数:
src:需要挂载存储设备信息
path: 挂载点路径信息
fstype:挂载类型信息
state:挂载操作(mounted present)/卸载操作(unmounted absent)
mounted:可以实现立即挂载 永久开机自动挂载
present:永久开机自动挂载
unmounted:可以实现立即卸载
absent:可以实现立即卸载 永久卸载

  

批量挂载:

ansible 172.16.1.7 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted"

  

八、ansible剧本

1、具体的编写规范

(1)python yaml 语法规范

(2)规范位置

mkdir /etc/ansible/ansible_playbook

vim /etc/ansible/ansible_playbook/test.yaml

(3)语法规范

规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键   

规则二:冒号

CMD="echo"

    yaml:

    mykey:

每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

规则三:短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分

核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的

2、剧本的执行方式

(1)检查剧本的语法

ansible-playbook --syntax-check test.yaml 

(2)剧本模拟执行

ansible-playbook -C test.yaml

(3)正式执行剧本

ansible-playbook  test.yaml

3、ansible剧本的编写

Linux下ansible使用的更多相关文章

  1. Linux下ansible的group模块

    一.概述 group 模块可以帮助我们管理远程主机上的组. 二.常用参数 name参数:必须参数,用于指定要操作的组名称. state参数:用于指定组的状态,两个值可选,present,absent, ...

  2. linux下安装部署ansible

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

  3. Ansible学习记录一:Linux下部署

    0.Ansible介绍 Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用.配置.编排 task(持续交付.无宕机更新等),采用 paramiko 协议库(fabric 也使用这个 ...

  4. Linux下实现免密登录

    过程如下: 1.Linux下生成密钥 通过命令”ssh-keygen -t rsa“ 2.1 通过ssh-copy-id的方式 命令: ssh-copy-id -i ~/.ssh/id_rsa.put ...

  5. 1.Linux下生成密钥

    1.Linux下生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令: 通过命令”ssh-keygen -t rsa“ 生成之后会在用户的根目录生成一个 “.ssh”的文 ...

  6. linux 下使用github

    Linux下Git和GitHub环境的搭建 1.创建Github帐号  (name@server.com) 2.安装git [root@cloud ~]# yum install git -y 3.生 ...

  7. Linux下如何使用Rsync备份服务器重要数据

    Rsync介绍: Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似 ...

  8. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  9. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

随机推荐

  1. DC-8靶机

    仅供个人娱乐 靶机信息 下载地址:http://www.five86.com/downloads/DC-8.zip 一.主机扫描 二.信息收集 http://192.168.17.135/robots ...

  2. Netty 源码分析系列(二)Netty 架构设计

    前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...

  3. SQL语句(六)分页查询和联合查询

    目录 一.分页查询 语法格式 应用 二.联合查询 语法和作用 特点 应用 UNION和UNION ALL的区别 一.分页查询 语法格式 SELECT 查询列表 FROM 表 WHERE ... GRO ...

  4. 双非本科Android开发,如何逆袭拿到大厂 Offer?

    从2020年3月18日投出第一份暑期实习简历至今,已经过去400多天.我也尘埃落定,即将去CVTE做Android开发. 休息了很长时间,如今已经能够很平静地回首这段历程,写下这篇文,致敬曾经走过的漫 ...

  5. git 切换分支 本地代码失踪找回办法

    解决方案: https://blog.csdn.net/hupoling/article/details/79017382 主要步骤: git reflog 然后找到之前commit的分支 git c ...

  6. Elasticsearch IK分词器

    Elasticsearch-IK分词器 一.简介 因为Elasticsearch中默认的标准分词器(analyze)对中文分词不是很友好,会将中文词语拆分成一个一个中文的汉字,所以引入中文分词器-IK ...

  7. 常见web中间件漏洞(三)Nginx漏洞

    nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,有  开源,内存占用少,并发能力强,自由模块化,支持epoll模型,可限制连接数,支持热部署,简单 ...

  8. 单片机学习(八)点阵LED的使用

    目录 一.点阵LED的理论知识 1. 点阵屏的打开方式 2. LED点阵简介 3. 点阵LED的结构和操作方式 4. 74HC595模块 PPT上的简介 串行转并行的工作原理 二.编码实现 1. C5 ...

  9. flutter升级2.0

    前言 flutter2.0版本带来了很多变化,特别是加入了空安全,升级后的大片报错,让大家望而却步. 现在距2.0发布已经快半年了,大部分插件也支持了空安全,而我们的项目却因为版本低,用不上新东西,所 ...

  10. noip 模拟9 题解

    rp++==文化课报废 考试经过 先看T1,有被1e12吓到,但根据经验这很可能是水题,经过一番观察后直接打表,似乎看出了规律,觉得应该有了正解,写完之后顺利过掉大样例,但似乎时间稍慢一点,写上快读交 ...