一.setup模块(收集信息 )

1.ansible中的setup模块可以收集到的信息

ansible web -m setup
ansible_all_ipv4_addresses # ipv4的所有地址
ansible_all_ipv6_addresses # ipv6的所有地址
ansible_date_time # 获取到控制节点时间
ansible_default_ipv4 # 默认的ipv4地址
ansible_distribution # 系统
ansible_distribution_major_version # 系统的大版本
ansible_distribution_version # 系统的版本号
ansible_domain #系统所在的域
ansible_env #系统的环境变量
ansible_hostname #系统的主机名
ansible_fqdn #系统的全名
ansible_machine #系统的架构
ansible_memory_mb #系统的内存信息
ansible_os_family # 系统的家族
ansible_pkg_mgr # 系统的包管理工具
ansible_processor_cores #系统的cpu的核数(每颗)
ansible_processor_count #系统cp
u的颗数
ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python # 系统上的pythoni
ansible cache -m setup -a 'filter=*processor*' # 用来搜索

2.虚拟机的设置

处理器的数量代表CPU的颗数
每个处理器的核心数量代表当前虚拟机可以使用的内核数量

3.使用setup模块时可以使用正则过滤

anxible cache -m setup -a 'filter=*processor*' #找关于processor的
注:a.b和a.b的区别
a.*b和a*.b的区别

# . 表示匹配除换行之外的所有字符
# * 表示匹配量词之前的字符出现0次或多次

# a.*b 可以匹配只要以a开头,以b结尾的字符串就可以
# a*.b 可以匹配a.b和.b

二.ansible-playbook模块

1.用when 来表示的条件判断

伪代码

- hosts :wed
tasks:
- name: zzgbgn
  by: zzdong
  when: zz
- name: pzgbgn
  by: pzdong  
  when: pz

如果a=="3",就将“大弦嘈嘈如急雨”,写入到web组下被管控机的/opt/.p2.yml中,如果a=="4",就将“小弦切切如私语”,写入到web组下被管控机的/opt/.p2.yml中

- hosts: web
remote_user: root#代表用root用户执行,默认是root,可以省略
tasks:
- name: createfile
  copy: content="大弦嘈嘈如急雨" dest=/opt/p2.yml
  when: a=='3'
- name: createfile
  copy: content="小弦切切如私语" dest=/opt/p2.yml
  when: a=='4'

语法校验

ansible-playbook  --syntax-check p2.yml

执行

ansible-playbook -e 'a="3"' p2.yml #大弦嘈嘈如急雨

应用环境:不同的系统,不同的版本,不同的环境,不同的下载方式,使用的下载语句的不同

2.标签(只执行配置文件中的一个任务)

伪代码

- hosts: web
tasks:
- name: wadong
  tieqiao: wadong
- name: toukan
  dong: toukan
  tags: bianqian

只执行配置文件中的一个任务

- hosts: web
tasks:
- name: installnginx
  yum: name=nginx
- name: copyfile
  copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
  tags: copyfile
- name: start
  service: name=nginx static=restarted

语法校验

ansible-playbook  --syntax-check p3.yml

执行

ansible-playbook -t copyfile p3.yml 

3.循环with_items

目的:一次性做多个相似的事情

- hosts :wed
tasks:
- name: qichuang
  dong: {{ item }}
  with_items:
  - qichuang
  - chifan
  - shoushi

创建三个用户

- hosts: web
tasks:
- name: createruser
  user: name={{ item }}
  with_items:
  - shy1
  - shy2
  - shy3
- name: creategroup
  group: name={{ item }}
  with_items:
  - group1
  - group2
  - group3  

语法校验

ansible-playbook  --syntax-check p4.yml

执行

ansible-playbook p4.yml 

4.循环嵌套

用户shy1的属组是group1,用户shy2的属组是group2,用户shy3的属组是group3

- hosts: web
tasks:
- name: creategroup
  group: name={{item}}
  with_items:
  - group3
  - group4
  - group5
- name: createuser
  user: name={{item.user}} group={{item.group}}
  with_items:
  - {'user': shy3,'group': group3}
  - {'user': shy4,'group': group4}
  - {'user': shy5,'group': group5}

语法校验

ansible-playbook  --syntax-check p5.yml

执行

ansible-playbook p5.yml 

5.template模块(与copy模块相似)

(1)让web组的被管控机下载并启动redis

管控机上下载redis包

yum install -y redis

编写redis.conf配置文件

vi /etc/redis.conf
port 16379
bind {{ansible_default_ipv4.address}}

让web组的被管控机下载并启动redis

- hosts: web
tasks:
- name: installredis
  yum: name=redis
- name: copyfile
  template: src=/etc/redis.conf dest=/etc/redis.conf
- name: start
  service: name=redis state=started

语法校验

ansible-playbook  --syntax-check p.yml

执行

ansible-playbook p6.yml 

注:copy与template的区别

copy模块不替代参数,template模块替代参数
template的参数几乎与copy的参数完全相同
(2)相对路径
- hosts: web
tasks:
- name: installredis
  yum: name=redis
- name: copyfile
  template: src=redis.conf dest=/etc/redis.conf
- name: start
  service: name=redis state=started

注:在当前目录(执行playbook的目录)下建立一个templates文件夹,将配置文件放在templates中,就可以使用相对路径了

6.handlers(触发事件)

notify:触发
handlers:触发的动作

使用上场景:修改配置文件时

注:正常情况时handlers是不会执行的

- hosts: web
tasks:
- name: installredis
  yum: name=redis
- name: copyfile
  template: src=redis.conf dest=/etc/redis.conf
  tags: copyfile
  notify: restart
- name: start
  service: name=redis state=started
handlers:
- name: restart
  service: name=redis

执行

ansible-playbook -t copyfile p7.yml

结果:复制文件并重启

三.roles

1.作用

通过规划角色来实现备份

2.优点

目录结构特别清晰
可以重复调用别的用户创建的任务

3.使用

注:一般情况下将roles写在/etc/ansible/roles中,也可以写在其他任意位置(写在其他位置要自己手动建立一个roles文件夹)

使用实例
mkdir roles #创建一个roles文件夹
cd roles #进入该目录
mkdir web #分别创建三个与ansible组名相同的文件夹
mkdir db
mkdir cache
mkdir -pv web/{templates,files,tasks,vars} #templates:专门放置配置文件的文件夹,files:专门放置不需要传参的文件夹,tasks:用来保存任务,vars:用来保存变量
cd web/tasks #进入到tasks文件夹,编写任务(将多个任务拆开编写)

vi install.yml(具体任务的文件)

- name: install
yum: name=redis

vi copyfile.yml(具体任务的文件)

- name: copyfile
copy: src=redis.conf.j2 dest=/etc/redis.conf
tags: copyfile
notify: restart

注:jinjia2的后缀名是.j2

vi start.yml(具体任务的文件)

- name: start
service: name=redis state=started

vi main.yml(执行以上三个文件的文件)

- import_tasks: install.yml
- import_tasks: copyfile.yml
- import_tasks: start.yml

准备copyfile.yml的配置文件(放到templates文件夹中)

cp /root/yaml/templates/redis.conf templates/redis.conf.j2
cd templates/redis.conf.j2

有触发事件的情况

cd web
mkdir handlers
vi handlers/main.yml

main.yml

- name: restart
service: name=redis state=started

调用(web.yml在哪写都可以)

vi web.yml
- hosts:
remote_user: root
roles:
- web

语法校验

ansible-playbook  --syntax-check web.yml

执行

ansible-playbook web.yml

4.目录结构

- roles
- web
- templates
- redis.conf.j2
- files
- tasks
- main.yml(执行文件)
- install.yml
- copyfile.yml
- start.yml
- vars
- handlers
- main.yml(copyfile.yml的触发事件)
- cache
- db
- tasks
-createuser.yml
- web.yml

5.通过roles调用别人的任务(实现相互之间的调用)

准备任务

cd db
mkdir tasks
vi tasks/createuser.yml

createuser.yml

- name: createuser
user: name=shy20

在web中执行db中的任务

cd web
vi tasks/main.yml

main.yml

- import_tasks: install.yml
- import_tasks: copyfile.yml
- import_tasks: start.yml
- import_tasks: roles/db/createuser.yml #加上这句话

语法校验

ansible-playbook  --syntax-check web.yml

执行

ansible-playbook web.yml

####

四.同步时间

同步时间的模块

yum install -y ntp
ntpdate time.windows.com #同步时间
cp /user/share/zoneinfo/Asia/shanghai /etc/localtime #同步为上海时间
注:yum安装多个包
ansible web -m yum -a 'name=wget,lrzsz' #用逗号隔开

ansible(三)的更多相关文章

  1. ansible 三配置和命令集

    一.Ansible配置 Ansible安装好之后的配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/ansible.cfg 2.源码包安装,配置文件路径需要从软件包 ...

  2. Ansible(三) - playbook简介

    Ⅰ. Playbook介绍 Playbook其实就是ansible的一个任务列表,各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个.在顺序运行某playb ...

  3. Ansible安装配置及使用

    一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...

  4. ansible 学习与实践

    title: ansible 学习与实践 date: 2016-05-06 16:17:28 tags: --- ansible 学习与实践 一 介绍 ansible是新出现的运维工具是基于Pytho ...

  5. 【ansible】使用ansible安装nginx

    一.主机准备 ServerIP:10.10.10.102 ClientIP:  10.10.10.103,10.10.10.104 二.安装ansible yum -y install ansible ...

  6. 运维之利器--Ansible

    一.简介 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署. ...

  7. ansible自动化运维管理工具

    1.Ansible介绍 1)Ansible:Ansible的核心程序 2)Host Inventory:(默认路径:/etc/ansible/hosts)记录了每一个由Ansible管理的主机信息,信 ...

  8. 使用ansible控制Hadoop服务的启动和停止

    一.环境: 服务器一台,已安装centos7.5系统,做ansible服务器: 客户机三台:hadoop-master(192.168.1.18).hadoop-slave1(192.168.1.19 ...

  9. kolla-ansible部署单节点OpenStack-Pike

    一.准备工作 最小化安装CentOS 7.5,装完后,进行初始化 selinux,防火墙端口无法访问,主机名问题,都是安装的常见错误,一定要细心确认. kolla的安装,要求目标机器是两块网卡: en ...

随机推荐

  1. 反编译Jar包

    Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...

  2. Ubuntu不输入密码执行sudo命令方法介绍

    作为ubuntu等桌面系统,默认登录的帐号是没有root权限的,为了提升权限来执行任务,我们一般用到sudo+命令来执行,但是不难发现我们一般都要输入密码.那么有没有什么方法可以让我们执行sudo的时 ...

  3. Android 异步更新UI----handler+thread

    android应用是单线程模式的. 单线程模式需要记住两条: 一.防止UI线程阻塞 二.确保只在UI线程中访问Android UI工具包 在开发Android应用时必须遵守单线程模型的原则:Andro ...

  4. 我眼中的robot framework

    由于近期公司需要,需要一个测试框架对于公司的服务做自动化测试. 由于服务的复杂性,人工测试的方式越来越复杂,体现在以下方面: 1.人工测试步骤复杂,容易出错.服务的复杂性会使人工测试的准备工作,测试条 ...

  5. 图像处理结果的度量 —— SNR、PSNR、SSIM

    衡量两幅图像的相似度: SNR/PSNR SSIM 1. SNR vs PSNR about SNR 和 PSNR MSE:mean squared error ∑x=1Nx∑y=1Ny(f(x,y) ...

  6. OpenCV 图像清晰度评价(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...

  7. C#进程创建监控

    关于c#进程创建监控的文章大多都是“遍历一次进程用if去判断存在或否”这样的方法,我觉得体验不是很好.这几天写的一个软件正好需要实时监控进程创建的模块,在网上找到了很不错的方法,整理一下分享出来给大家 ...

  8. build-qt.sh(Cross compile in Linux for Windows)

    #!/bin/bash set -e MINGW=${MINGW:-${ARCH:-x86_64}-w64-mingw32} PREFIX=${PREFIX:-usr} WORKSPACE=${WOR ...

  9. WPF中StringFormat的用法--显示特定位数的数字

    原文:WPF中StringFormat的用法--显示特定位数的数字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/art ...

  10. Highcharts纯js图表库,以后可以跟客户说,你跟阿里云ECS用的图表库是同款

    Highcharts是一款纯javascript编写的图表库,能够很简便的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图.柱状图.饼图.散点图等多达18 ...