[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实战演练的更多相关文章

  1. 我的Ansible学习笔记

    Ansible常见错误 http://afewbug.com/article/26官方文档 http://docs.ansible.com/ansible/安装配置 http://sofar.blog ...

  2. 如何利用ansible callback插件对执行结果进行解析

    最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...

  3. 《Ansible权威指南》笔记(2)——Inventory配置

    四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...

  4. useful Ansible commands

    This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...

  5. OCP考点实战演练01-备份恢复篇

    本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...

  6. OCP考点实战演练02-日常维护篇

    本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...

  7. 《Ansible权威指南》笔记(4)——Playbook

    七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...

  8. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  9. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

随机推荐

  1. github远程仓库初始化配置

    github远程仓库的提交一般是通过shell进行,windows下有Git Bash工具(https://git-for-windows.github.io/) 由于本地Git仓库和GitHub仓库 ...

  2. Redis学习日记-01

    Redis是什么东东? Redis是用C语言开发的Key-Value数据库,说是数据库,其实他是NoSql(非关系型数据库). 这里顺便说一下Sql(关系型数据库,如MySql,Oracle等)和No ...

  3. FJUT2017寒假训练二题解

    A题 题意:让你找出唯一的一个四位数,满足对话时的要求. 思路:因为是4位数,可以直接从1000-9999遍历一遍,判断是否有唯一的数能满足所有条件,如果不是唯一的或者没有满足条件的数就输出Not s ...

  4. 使用Angular CLI生成 Angular 5项目

    如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文. Angular CLI 官网: https://github.com/angular/angular- ...

  5. 基于双向BiLstm神经网络的中文分词详解及源码

    基于双向BiLstm神经网络的中文分词详解及源码 基于双向BiLstm神经网络的中文分词详解及源码 1 标注序列 2 训练网络 3 Viterbi算法求解最优路径 4 keras代码讲解 最后 源代码 ...

  6. es6学习笔记--新数据类型Symbol

    学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...

  7. [POJ 2226] Muddy Fields

    题目 Description 如何放木板保证只覆盖到 '*' 而没有覆盖到 '.' Solution (我太废了竟然想这题想了一个小时)考虑当前需要被覆盖的点 (x,y),假设有一块横着铺的木板 i ...

  8. docker部署PMA(LNMP架构)

    上篇文章中已经部署好php环境,测试也已经OK centos 7 docker 启动了一个web服务 但是启动时 报 WARNING: IPv4 forwarding is disabled. Net ...

  9. docker教程

    Docker 包括三个基本概念 镜像(Image) 容器(Container) 仏库(Repository) 理解了返三个概念,就理解了 Docker 的整个生命周期. Docker 镜像 Docke ...

  10. centos安装postgis

      step 1   yum localinstall https://download.postgresql.org/pub/repos/yum/9.2/redhat/rhel-7-x86_64/p ...