Ansible实战演练
[root@Ansible-server ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@Ansible-server ~]# ansible web -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k #使用ansible推送公钥,免密管理


【Ansible-ping模块】
[root@Ansible-server ~]# ansible web -m ping

【Ansible-command模块】
为ansible默认模块。主要用于执行linux基础命令,可以执行远程服务器命令执行,任务执行等操作 【参数详解】
chdir #执行命令前,切换到目录
creates #当该文件存在时,则不执行该步骤
executable #当切换shell环境执行命令
free_form #需要自行的脚本
removes #当该文件不存在时,则不执行该步骤
warn #如果在ansible.cfg中存在告警,如果设定了false,不会警告此行
[root@Ansible-server ~]# ansible web -m command -a "date "

[root@Ansible-server ~]# ansible web -m command -a "ping -c 2 baidu.com"

[root@Ansible-server ~]# ansible web -m command -a "mkdir xiaoyu.txt" #通过command模块批量创建目录


【Ansible-copy模块】
主要用于文件或者目录拷贝,支持文件,目录,权限,用户组功能,参数详解如下
src #Ansible端源文件或者目录,空文件不拷贝
content #用来替代src,用于将指定的文件内容,拷贝到远程文件内
dest #客户端目录或文件,需要绝对路径
backup #拷贝之前,先备份远程节点上的原始文件;
directory_mode 用于拷贝文件夹,新建的文件会拷贝,而老旧的不会拷贝
follow #支持link文件拷贝
force #覆盖远程主机文件夹的组名
group #设定远程主机文件及文件夹的权限
owner #设定远程主机文件的用户名
root@Ansible-server ~]# ansible web -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
[root@Ansible-server ~]# ansible web -m copy -a 'content="This homeway" dest=/tmp/passwd mode=755 owner=root'
【Ansible-yum模块实战】
Ansible yum模块主要用于软件的安装,升级,卸载,支持红帽.rpm软件的管理,使用详解如下:
conf_file #设定远程yum执行所以来的yum配置文件
disable_gpg_check #安装软件报之前是够坚持gpg,key;
name #需要安装的软件名称
update_cache #安装软件钱更新缓存
enablerepo #指定repo源名称
skip_broken #跳过异常软件节点
state #软件包状态,包括:install,present,latest,removed
1)Ansible yum模块操作,name表示需安装的软件名称,state表示状态,常见state= installed表示安装软件,
[root@Ansible-server ~]# ansible web -m yum -a "name=pcre-devel state=installed"
[root@Ansible-server ~]# rpm -qa pcre-devel
pcre-devel-7.8-7.el6.x86_64
2)name表示安装软件名称,state表示状态,常见state=installed表示安装软件,disable_gpg_check=no表示不检查key;
[root@Ansible-server ~]# ansible web -m yum -a "name=popt-devel state=installed disable_gpg_check=no"
【Ansible file模块实战】
主要用于文件的创建,删除,修改,权限,属性的维护和管理
src Ansible端源文件或者目录;
follow 支持link文件拷贝;
force 覆盖远程主机不一致的内容;
group 设定远程主机文件夹的组名;
mode 指定远程主机文件及文件及的权限;
owner 设定远程主机文件夹的用户名;
path 目标路径,也可以用dest,name代替;
state 状态包括:file、link、directory、hard、touch、absent;
attributes 文件或者目录特殊属性。
[root@Ansible-server tmp]# ansible web -m file -a "path=/tmp/`date +%F` state=directory mode=755" #在/tmp/目录下创建时间目录

[root@Ansible-server tmp]# ansible web -m file -a "path=/tmp/hexun.com state=touch mode=755" #创建“hexun.com”文件,权限为755

【Ansible user模块实战】
主要用于操作系统用户,组,权限,密码等操作;
system 默认创建为普通用户,为yes则创建系统用户;
append 添加一个新的组;
comment 新增描述信息;
createhome 给用户创建家目录;
force 用于删除强制删除用户;
group 创建用户主组;
groups 将用户加入组或者附属组添加;
home 指定用户的家目录;
name 表示状态,是否create、remove、modify;
password 指定用户的密码,此处为加密密码;
remove 删除用户;
shell 设置用户的shell登录环境;
uid 设置用户id;
update_password 修改用户密码;
state 用户状态,默认为present表示新建用户
[root@Ansible-server ~]# ansible web -m user -a "name=xiaoyu home=/tmp"
[root@Ansible-server ~]# tail -1 /etc/passwd
xiaoyu:x:500:500::/tmp:/bin/bash
[root@Ansible-server ~]# ansible web -m user -a "name=user1 home=/tmp shell=/sbin/nologin"
[root@Ansible-server ~]# tail -1 /etc/passwd
user1:x:501:501::/tmp:/sbin/nologin
[root@Ansible-server ~]# ansible web -m user -a "name=xiaoyu state=absent"

【Ansible-cron模块实战】
主要用于添加,删除,更新操作系统crontab任务计划
name 任务计划名称;
cron_file 替换客户端该用户的任务计划的文件;
minute 分( 0-59 ,* ,*/2 );
hour 时( 0-23 ,* ,*/2 );
day 日( 1-31 ,* ,*/2 );
month 月( 1-12 ,* ,*/2 );
weekday 周( 0-6 或 1-7 ,* );
job 任何计划执行的命令,state要等于present;
backup 是否备份之前的任务计划;
user 新建任务计划的用户;
state 指定任务计划present、absent。
[root@Ansible-server ~]# ansible web -m cron -a "minute=* hour=* day=* month=* weekday=* name='This is chrontab' job='/usr/sbin/ntpdate 192.168.2.138'" #设置时间同步计划任务
【Ansible synchronize模块实战】
compress 开启压缩,默认为开启;
archive 是否采用归档模式同步,保证源和目标文件属性一致;
checksum 是否效验;
dirs 以非递归的方式传输目录;
links 同步链接文件;
recursive 是否递归yes/no;
rsync_opts 使用rsync 的参数;
copy_links 同步的时候是否复制连接;
delete 删除源中没有而目标存在的文件;
src 源目录及文件;
dest 目标目录及文件;
dest_port 目标接受的端口;
rsync_path 服务的路径,指定 rsync 命令来在远程服务器上运行;
rsync_timeout 指定rsync操作的IP超时时间;
set_remote_user 设置远程用户名;
--exclude=.log 忽略同步.log结尾的文件;
mode 同步的模式,rsync同步的方式PUSH、PULL,默认都是推送push。
[root@localhost hexun]# ansible web -m synchronize -a 'src=/root/hexun/ dest=/root/hexunback/'
【Ansible-service模块实战】
主要用于远程客户端各种服务端的管理
enabled 是否开启启动服务;
name 服务名称;
runlevel 服务启动级别;
arguments 服务命令行参数传递;
state 服务操作状态,状态包括started, stopped, restarted, reloaded
[root@localhost ~]# ansible web -m service -a "name=httpd state=restarted"

远程开机启动nfs服务,设置3,5级别自动启动

【Ansible-Playbook应用】
使用Ad-hoc方式点对点命令执行,可以管理远程主机,如果服务器数量很多,配置信息比较多,还可以利用Ansible-Playbook便携脚本,从而以非常简单的方式事先任务树立的自动化与流程化,
Playbook由一个或多个“play”组成的列表,play的主要功能ansible中的Task定义好的角色,指定剧本对应的服务器组
从根本上说,Task是一个任务,Task调用ansible各种模块module,将多个paly组织在一个playbook剧本中,然后组成一个非常完整的流程控制集合
基于Ansible Playbook还可以收集命令,易于阅读,方便管理
YAML是一个直观的能够背电脑识别的数据据序列化格式,是一个可读性高并容易被人阅读,容易和奇偶按本语言交互,用来表达资料序列的编程语言,
它参考了其它多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
YAML使用空白字符和分行来分隔资料,适合用 grep、Python、Perl、Ruby 操作。
(1)YAML语言特性如下:
可读性强;
和脚本语言的交互性好;
使用实现语言的数据类型;
一致的信息模型;
易于实现;
可以基于流来处理;
可扩展性强。
(2) Playbooks组件包括如下:
|
Target 定义playbook的远程主机组; Variable 定义playbook使用的变量; Task 定义远程主机上执行的任务列表; Handler 定义task执行完成以后需要调用的任务,例如配置文件被改动,则启动handler任务重启相关联的服务。 |
(1) Target常用参数如下:
|
hosts 定义远程主机组; user 执行该任务的用户; sudo 设置为yes的时候,执行任务的时候使用root权限; sudo_user 指定sudo普通用户; connection 默认基于SSH连接客户端; gather_facks 获取远程主机facts基础信息。 |
(2) Variable常用参数如下:
|
vars 定义格式,变量名:变量值; vars_files 指定变量文件; vars_prompt 用户交互模式自定义变量; setup 模块去远程主机的值; |
(3) Task常用参数如下:
|
name 任务显示名称也即屏幕显示信息; action 定义执行的动作; copy 复制本地文件到远程主机; template 复制本地文件到远程主机,可以引用本地变量; service 定义服务的状态。 |
Ansible playbook案例演示如下:
(1) 远程主机安装Nginx WEB服务,playbook代码如下,执行结果如图21-33所示:
|
- hosts: all remote_user: root tasks: - name: Jfedu Pcre-devel and Zlib LIB Install. yum: name=pcre-devel,pcre,zlib-devel state=installed - name: Jfedu Nginx WEB Server Install Process. shell: cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz;tar xzf nginx-1.12.0.tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install |
(1) 检测远程主机Nginx目录是否存在,不存在则安装Nginx WEB服务,安装完并启动Nginx,playbook代码如下,执行结果如图21-34所示:
|
- hosts: all remote_user: root tasks: - name: Nginx server Install 2017 file: path=/usr/local/nginx/ state=directory notify: - nginx install - nginx start handlers: - name: nginx install shell: cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz;tar xzf nginx-1.12.0 .tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install - name: nginx start shell: /usr/local/nginx/sbin/nginx |
Ansible实战演练的更多相关文章
- 我的Ansible学习笔记
Ansible常见错误 http://afewbug.com/article/26官方文档 http://docs.ansible.com/ansible/安装配置 http://sofar.blog ...
- 如何利用ansible callback插件对执行结果进行解析
最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...
- 《Ansible权威指南》笔记(2)——Inventory配置
四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...
- useful Ansible commands
This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...
- OCP考点实战演练01-备份恢复篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...
- OCP考点实战演练02-日常维护篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...
- 《Ansible权威指南》笔记(4)——Playbook
七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
随机推荐
- Java的大数计算BigNumber
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...
- node.js-v6新版安装过程
1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用 ...
- centos7上关闭防火墙
centos7上默认开启的是+firewalld,关闭了iptables 停止防护墙: systemctl stop firewalld.service 开机不启动: systemctl disabl ...
- ASP.NET Core 2.0 : 七.一张图看透启动背后的秘密
为什么我们可以在Startup这个 “孤零零的” 类中配置依赖注入和管道? 它是什么时候被实例化并且调用的? 参数中的IServiceCollection services是怎么来的? 处理管道是怎么 ...
- C语言第十一次作业--函数嵌套调用
一.实验作业 1.1 PTA题目:递归法对任意10个数据按降序排序 设计思路 定义整型循环变量i,最小值下标min,中间变量t 若n==1,直接返回 否则 min=10-n 最小值下标赋初值 for ...
- Android,资料分享(2015 版)
Java 学习 我要再次强调,一定要有Java 基础(虽然现在使用其他语言也可以开发Android,但毕竟是很小众),也不要认为学习Java 两三周就可以不用管了,这会在以后的深入学习中暴露出问题,所 ...
- python爬虫解决gbk乱码问题
今天尝试了下爬虫,爬取一本小说,忘语的凡人修仙仙界篇,当然这样不好,大家要支持正版. 爬取过程中是老套路,先获取网页源代码 # -*- coding:UTF-8 -*- from bs4 import ...
- 在Python中进行JSON转化
序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程. JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式 ...
- IntelliJ IDEA的入门使用
1 修改背景颜色 点击File,Settings 2 修改字体格式,以及字体大小 我个人习惯Eclipse的默认字体,所有把字体修改成Eclipse默认的Consolas 同上点击File,Setti ...
- RabbitMQ 发布订阅持久化
RabbitMQ是一种重要的消息队列中间件,在生产环境中,稳定是第一考虑.RabbitMQ厂家也深知开发者的声音,稳定.可靠是第一考虑,为了消息传输的可靠性传输,RabbitMQ提供了多种途径的消息持 ...