001-Ansible-参考http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks

1. Patterns

在Ansible中,Patterns 是指我们怎样确定由哪一台主机来管理. 意思就是与哪台主机进行交互.

ansible <pattern_goes_here> -m <module_name> -a <arguments>
ansible webservers -m service -a "name=httpd state=restarted"

同时让我们提前了解一些技能,除了如上,你也可以通过 --limit 标记来添加排除条件,/usr/bin/ansible or /usr/bin/ansible-playbook都支持:
ansible-playbook site.yml --limit datacenter2
如果你想从文件读取hosts,文件名以@为前缀即可.从Ansible 1.2开始支持该功能:
ansible-playbook site.yml --limit @retry_hosts.txt

tasks:- name: make sure apache is runningservice: name=httpd state=running

tasks:- name: disable selinuxcommand: /sbin/setenforce 0
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommand || /bin/true
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommandignore_errors: True
tasks:- name: Copy ansible inventory file to clientcopy: src=/etc/ansible/hosts dest=/etc/ansible/hostsowner=root group=root mode=0644
tasks:- name: create a virtual host file for {{ vhost }}template: src=somefile.j2 dest=/etc/httpd/conf.d/{{ vhost }}
template: src=templates/foo.j2 dest=/etc/foo.conf
- name: template configuration filetemplate: src=template.j2 dest=/etc/foo.confnotify:- restart memcached- restart apache
handlers:- name: restart memcachedservice:  name=memcached state=restarted- name: restart apacheservice: name=apache state=restarted
tasks:- shell: some tasks go here- meta: flush_handlers- shell: some other tasks
ansible-playbook playbook.yml -f 10
ansible-playbook playbook.yml --list-hoststasks: - include: wordpress.yml wp_user=timmy - include: wordpress.yml wp_user=alice - include: wordpress.yml wp_user=bob
- name: this is a play at the top level of a filehosts: allremote_user: roottasks:- name: say hitags: fooshell: echo "hi..."- include: load_balancers.yml
- include: webservers.yml
- include: dbservers.yml

这个 playbook 为一个角色 ‘x’ 指定了如下的行为:

  • 如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 将被添加到 play 中
  • 如果 roles/x/handlers/main.yml 存在, 其中列出的 handlers 将被添加到 play 中
  • 如果 roles/x/vars/main.yml 存在, 其中列出的 variables 将被添加到 play 中
  • 如果 roles/x/meta/main.yml 存在, 其中列出的 “角色依赖” 将被添加到 roles 列表中 (1.3 and later)
  • 所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
  • 所有 script tasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
  • 所有 template tasks 可以引用 roles/x/templates/ 中的文件,不需要指明文件的路径。
  • 所有 include tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路径。
site.yml
webservers.yml
fooservers.yml
roles/common/files/templates/tasks/handlers/vars/defaults/meta/webservers/files/templates/tasks/handlers/vars/defaults/meta/

角色默认变量允许你为 included roles 或者 dependent roles(见下) 设置默认变量。要创建默认变量,只需在 roles 目录下添加 defaults/main.yml 文件。这些变量在所有可用变量中拥有最低优先级,可能被其他地方定义的变量(包括 inventory 中的变量)所覆盖。

wheel 角色的 meta/main.yml 文件包含如下内容:

---
allow_duplicates: yes
dependencies:
- { role: tire }
- { role: brake }

最终的执行顺序是这样的:

tire(n=1) brake(n=1) wheel(n=1) tire(n=2) brake(n=2) wheel(n=2) ... car 

 - hosts: webservers

   vars: 

      http_port: 80

template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg
 
- hosts: app_serversvars:app_path: "{{ base_path }}/22"
- hosts: allremote_user: root# here we make a variable named "proxy_env" that is a dictionaryvars:proxy_env:http_proxy: http://proxy.example.com:8080tasks:- apt: name=cobbler state=installedenvironment: proxy_env

ntp_server: ntp.bos.example.com
backup: bak.bos.example.com
proxy_env:http_proxy: http://proxy.bos.example.com:8080https_proxy: http://proxy.bos.example.com:8080
yum install redis
service redis start
pip install redis
 
ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"
ansible-playbook playbook.yml --start-at="install packages"
ansible-playbook playbook.yml --step
 

在Playbook中,如果写gather_facts来控制是否收集远程系统的信息.如果不收集系统信息,那么上面的变量就不能在该playybook中使用了.

- hosts: whatever
  gather_facts: no
如果收集:

使用复杂facts变量

一般在系统中收集到如下的信息,复杂的、多层级的facts变量如何使用呢?

..."ansible_ens3": {"active": true, "device": "ens3", "ipv4": { "address": "10.66.192.234", "netmask": "255.255.254.0", "network": "10.66.192.0" }, "ipv6": [ { "address": "2620:52:0:42c0:5054:ff:fef2:e2a3", "prefix": "64", "scope": "global" }, { "address": "fe80::5054:ff:fef2:e2a3", "prefix": "64", "scope": "link" } ], "macaddress": "52:54:00:f2:e2:a3", "module": "8139cp", "mtu": 1500, "promisc": false, "type": "ether" }, ... 

那么可以通过下面的两种方式访问复杂的变量中的子属性:

中括号:

{{ ansible_ens3["ipv4"]["address"] }}

点号:

{{ ansible_ens3.ipv4.address }}





转载于:https://www.cnblogs.com/XilingCai/p/6544948.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下通用Makefile写法

linux编译多个源文件的程序比较麻烦&#xff0c;这下就需要通用的Makefile了&#xff0c;编译的时候执行一下make命令就OK&#xff0c;下面介绍通用makfile的写法。 假设现在有以下源文件&#xff1a;file1.h file1.c file2.h file2.c mainproc.c&#xff0c;程序的主函数在mai…

客服弹出框

html代码&#xff1a; <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>QQ在线客服jquery特效</title><link rel"stylesheet" type"text/css" href"common/css/lay…

第三次毕业设计任务书

一. 进度计划 时间 计划进度 3.24-3.30 尝试将kdd数据预处理用代码实现 3.31-4.6 将kdd数据预处理用代码实现以及与aprior算法的结合 二. 课题需求 2.1 数据预处理的功能和主要方法 在现实中,由于数据的来源、组织、存储等的多样性,海量的原始数据中一般都很难避免“脏数据…

电商第一季函数笔记(1)

1、isset (PHP 4, PHP 5, PHP 7) isset — 检测变量是否设置 说明 bool isset ( mixed $var [, mixed $... ] ) 检测变量是否设置&#xff0c;并且不是 NULL。 如果已经使用 unset() 释放了一个变量之后&#xff0c;它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL …

压缩xvid ffmpeg x264 对比

压缩xvid ffmpeg x264 对比 Xvid是基于MPEG4协议的编解码器&#xff0c;x264是基于H.264协议的编码器&#xff0c;ffmpeg集合了各种音频&#xff0c;视频编解码协议&#xff0c;通过设置参数可以完成基于MPEG4,H.264等协议的编解码&#xff0c;现在将其对比结果罗列如下&#…

JMS-activMq与spring进行整合

对JMS做了一个简要介绍之后&#xff0c;接下来就讲一下Spring整合JMS的具体过程。JMS只是一个标准&#xff0c;真正在使用它的时候我们需要有它的具体实现&#xff0c;这里我们就使用Apache的activeMQ来作为它的实现。所使用的依赖利用Maven来进行管理&#xff0c;具体依赖如下…

微信消息

微信消息 转载于:https://www.cnblogs.com/linewman/p/9918298.html

make: 警告:检测到时钟错误。您的创建可能是不完整的。

我在make的时候也出现了同样的问题&#xff0c;不过不是什么大问题&#xff0c;这个不影响编译结果分析原因可能是&#xff1a; 服务器上的文件最后修改时间比当前时钟要晚解决办法&#xff1a; 用touch 命令把源程序的时间戳改一下 find . -type f -exec touch {} \;或者touch…

FileReader/FileWriter复制文件

public class Test{ /*FileReader/FileWriter读写乱码&#xff0c;待处理*/ public static void main(String[] args) throws IOException{ FileReader fileReader null; FileWriter fileWriter null; try{ fileReader new FileReader("c:/123/666.doc"); fileWri…

machine ID问题 ( u-boot设置machine id , set mach_type 0x16a )

machine ID问题 machine ID问题跟CPU具体到型号相关&#xff0c;启动时打印信息如下&#xff1a; Uncompressing Linux...........................................................................done,booting the kernel. Error:unrecoginized/unsupported machine ID(r1…

FFMPEG使用参数详解

FFMPEG使用参数详解 目前又开始测MPEG1和MPEG2的解码&#xff0c;在准备编码好的测试序列过程中&#xff0c;需要通过编码器来进行原始视频序列的编码操作&#xff0c;以生成我们需要的测试数据。由于IPP example提供的Encoder不支持MPEG1&#xff0c;经过查询&#xff0c;决定…

模拟支付宝、淘宝登录1

1、进入支付宝首页 GET https://auth.alipay.com/login/index.htm HTTP/1.1Accept: */*Accept-Language: zh-CNAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; …

CSS层叠样式表

HTML主要控制内容 CSS主要控制格式。 样式表是用来指定样式信息的句法机制。 之所以将CSS称为层叠样式表&#xff0c;是因为它可以在3个层次上进行定义。 内联样式表 内联样式表位于开始标签中&#xff0c;其设置只对该元素起作用 文档样式表 文档样式表位于文档的头部区域&…

对X264/FFMPEG架构探讨---感觉不错

3. FFMPEG架构分析FFMPEG是目前被应用最广泛的编解码软件库&#xff0c;支持多种流行的编解码器&#xff0c;它是C语言实现的&#xff0c;不仅被集成到各种PC软件&#xff0c;也经常被移植到多种嵌入式设备中。使用面向对象的办法来设想这样一个编解码库&#xff0c;首先让人想…

如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)

前言 本次编写所用的库为于仕祺老师免费提供的人脸检测库。真心好用&#xff0c;识别率和识别速度完全不是Opencv自带的程序能够比拟的。将其配合Opencv的EigenFace算法&#xff0c;基本上可以形成一个小型的毕业设计。&#xff08;我是学机械的啊喂&#xff01;&#xff01;&a…

SQL语句增加字段、修改字段、修改类型、修改默认值

--一、修改字段默认值alter table 表名 drop constraint 约束名字 ------说明&#xff1a;删除表的字段的原有约束alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 -------说明&#xff1a;添加一个表的字段的约束并指定默认值--二、修改字段名&#…

node+koa2+mysql搭建博客后台

本文将详细讲解使用nodekoa2mysql搭建博客后台的全过程。 开发环境 node 8.3.0及以上npm 5.3.0及以上mysql 5.7.21具体的环境配置可查看我的上一篇文章 准备工作 npm下载pm2(进程守护)&#xff0c;并设置全局变量创建博客需要的数据库与表 开启mysql并创建数据库test: create d…

ffmpeg使用x264编码的配置+ ffmpeg与 x264编码器参数完整对照表

ffmpeg使用x264编码的配置 ffmpeg与 x264编码器参数完整对照表 分类&#xff1a; 多媒体 2010-07-13 11:31 1072人阅读 评论(0) 收藏 举报 转载自&#xff1a;扶凯[http://www.php-oa.com] 本文链接: http://www.php-oa.com/2009/03/09/ffmpeg_x264.html 转帖:http://rhinghear…

javascript之变量

定义变量方式有var&#xff0c;let&#xff0c;const&#xff0c;变量的类型是根据变量的值来确定&#xff0c;变量的名称跟大多数语言一样&#xff0c;包含数字字母_$,不能以数字开头且区分大小写。 var 最早的定义变量的方式&#xff0c;可重复定义,但请避免这样做。 var a …

Maven理解

2019独角兽企业重金招聘Python工程师标准>>> Maven概念 参考maven入门 冰河winner Maven作为一个构建工具&#xff0c;不仅能帮我们自动化构建&#xff0c;还能够抽象构建过程&#xff0c;提供构建任务实现;它跨平台&#xff0c;对外提供了一致的操作接口&#xff0…